Skip to content

Instantly share code, notes, and snippets.

@asmaier
Last active August 29, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asmaier/932d08c5c96a2cd76f71 to your computer and use it in GitHub Desktop.
Save asmaier/932d08c5c96a2cd76f71 to your computer and use it in GitHub Desktop.
Unsmoothed Maximum Likelihood Character Level Language Model to create headlines for the german Bild-Zeitung
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Wir sind Bild!\n",
"\n",
"## Mit diesem Programm kann jeder Bildschlagzeilen generieren\n",
"\n",
"###[Andreas Maier](http://http://maierandi.com/)\n",
"\n",
"Maschinenlernen, künstliche Intelligenz, Superintelligenz und auch Robojournalismus sind in aller Munde. Doch wie gut funktioniert das wirklich? \n",
"\n",
"Um einen ersten Eindruck zu gewinnen werden wir versuchen mit einer einfachen statistischen Methode Bildschlagzeilen zu generieren. [Bildschlagzeilen](http://www.bild.de/news/topics/60-jahre-bild/fg-schlagzeilen-60-jahre-24656632.bild.html) sind bekannt für ihre [Emotionalität](http://pub.uni-bielefeld.de/publication/2432333) und stellen damit eine gewisse Herausforderung für maschinelle Algorithmen dar. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Unsmoothed Maximum Likelihood Character Level Language Model \n",
"\n",
"Da wir das Rad nicht neu erfinden wollen stützen wir uns auf den hervorragenden Beispielcode von [Yoav Goldberg](http://nbviewer.ipython.org/gist/yoavg/d76121dfde2618422139). Wir werden daher hier nicht näher auf die Details des \"ungeglätteten Sprachmodells maximaler Zeichenwahrscheinlichkeiten\" (Unsmoothed Maximum Likelihood Character Level Language Model) eingehen. Aber soviel sei gesagt: Im Prinzip analysiert man einfach die Wahrscheinlichkeit mit der ein Buchstabe nach einer Zeichenfolge von N Zeichen auftritt. Hat man diese Wahrscheinlichkeiten ermittelt kann man umgedreht daraus die höchstwahrscheinlichen Zeichenfolgen generieren. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Code für den Download von Bildschlagzeilen\n",
"Das folgende Programm nutzt die [Content-Engine](http://content/) um eine Menge von knapp 800 Schlagzeilen der Bild Titelseite (aus den Jahren 2010-2012) herunterzuladen. **Daher funktioniert es nur solange man Zugriff auf das Axel-Springer InsideNet hat!** "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import requests\n",
"from bs4 import BeautifulSoup\n",
"\n",
"url = \"http://content/_modules/RenderController.php?action=search&grp=true&query=*%3A*&limit=50&offset={0}&typename=Text&ressort=Titelseite%2FBundesausgabe&objectgrp=BILD-Gruppe%20%2F%20B.Z.&object=&dateFrom=&dateTo=&view=headline&sort=Datum&count=6&verbose=undefined&isadm=&prohib_link=undefined\"\n",
"\n",
"offset = 0\n",
"titles = []\n",
"\n",
"while offset < 800:\n",
" query = url.format(offset)\n",
"\n",
" r = requests.get(query)\n",
"\n",
" soup = BeautifulSoup(r.content, 'html.parser')\n",
" links = soup.find_all(\"a\", class_=\"title\")\n",
"\n",
" if len(links) == 0: \n",
" break\n",
"\n",
" texts = [link.get_text().strip() for link in links] \n",
" titles.extend(texts)\n",
" offset += 50\n",
" print offset, len(titles)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Schauen wir uns ein paar Beispielschlagzeilen an:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[u'Faszination Weltuntergang',\n",
" u'Peter Struck (69) tot',\n",
" u'Bausparen: Ministerin warnt vor Abzock-Vertr\\xe4gen!',\n",
" u'Dieser Lehrer ist ein Skandal',\n",
" u'Das Gesch\\xe4ft der Rocker mit dem Sex',\n",
" u'Rotlicht Report',\n",
" u'Gemobbt, weil sie \\xfcber 60 ist',\n",
" u'Last-Minute-Geschenke aus dem Netz',\n",
" u'Goldenes Herz f\\xfcr Mette Marit',\n",
" u'J\\xfcnger und sch\\xf6ner mit Eigenblut']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titles[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Training Code\n",
"Jetzt kommt der Code von Goldberg um die Zeichenwahrscheinlichkeiten zu bestimmen:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from collections import *\n",
"\n",
"def train_char_lm(fileObject, order=4):\n",
" data = fileObject.read()\n",
" lm = defaultdict(Counter)\n",
" pad = \"~\" * order\n",
" data = pad + data\n",
" for i in xrange(len(data)-order):\n",
" history, char = data[i:i+order], data[i+order]\n",
" lm[history][char]+=1\n",
" def normalize(counter):\n",
" s = float(sum(counter.values()))\n",
" return [(c,cnt/s) for c,cnt in counter.iteritems()]\n",
" outlm = {hist:normalize(chars) for hist, chars in lm.iteritems()}\n",
" return outlm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Die Funktion erwartet als Input ein Dateiobjekt, daher wandeln wir mit folgenden Codesnippet unsere Liste von Bildschlagzeilen in eine In-Memory Datei."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from StringIO import StringIO\n",
"\n",
"# create an in-memory file for use with Goldbergs code\n",
"titlesFile = StringIO()\n",
"for title in titles:\n",
" titlesFile.write(\"%s\\n\" % title)\n",
"\n",
"# rewind the file so we can use it further on\n",
"titlesFile.seek(0) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Jetzt können wir das Modell mit unseren Daten trainieren. Wir analysieren dazu die Wahrscheinlichkeit für das Auftreten eines Zeichens nach einer Zeichenfolge mit N=4 Zeichen."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lm = train_char_lm(titlesFile, order=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Um zu sehen, was es \"gelernt\" hat, machen wir ein paar Beispielabfragen"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(u'!', 0.15789473684210525),\n",
" (u' ', 0.42105263157894735),\n",
" (u'\\n', 0.15789473684210525),\n",
" (u'-', 0.15789473684210525),\n",
" (u'p', 0.05263157894736842),\n",
" (u'?', 0.05263157894736842)]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm[\"Euro\"]"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(u'i', 0.3333333333333333),\n",
" (u'o', 0.3333333333333333),\n",
" (u'&', 0.3333333333333333)]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm[\"Sex \"]"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(u'y', 1.0)]"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm[\"Part\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Man sieht, dass unser Modell versteht, dass auf die Zeichenfolge `Part` in unseren Bildschlagzeilen zu 100% `y` folgt, auf `Sex ` folgt je 33% `i`, `o` oder `&` und auf `Euro` folgt mit höchster Wahrscheinlichkeit ein Leerzeichen, ein Ausrufezeichen oder ein Zeilenende. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Code zum Generieren von Zeichenfolgen aus dem Modell\n",
"\n",
"Im folgenden kommt wieder Code von Goldberg zur Erzeugung von wahrscheinlichen Zeichenketten aus dem Modell. Es werden jeweils 1000 Zeichen aus dem Modell erzeugt."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from random import random\n",
"\n",
"def generate_letter(lm, history, order):\n",
" history = history[-order:]\n",
" dist = lm[history]\n",
" x = random()\n",
" for c,v in dist:\n",
" x = x - v\n",
" if x <= 0: return c"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def generate_text(lm, order, nletters=1000):\n",
" history = \"~\" * order\n",
" out = []\n",
" for i in xrange(nletters):\n",
" c = generate_letter(lm, history, order)\n",
" history = history[-order:] + c\n",
" out.append(c)\n",
" return \"\".join(out)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Automatisches Erzeugen von Schlagzeilen\n",
"\n",
"Wir versuchen jetzt mit dem Modell Schlagzeilen zu erzeugen. Wir versuchen zunächst ein Modell der Stufe 2, d.h. wir benutzen nur Zeichenwahrscheinlichkeiten die auf Zeichenfolgen mit 2 Buchstaben hervorgehen. \n",
"\n",
"### Stufe 2:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Famph jetze-Wulten Hurotorden is\n",
"Ich blichon Bet de dellen!\n",
"NA-Len!\n",
"Er ginen-Virk Luxus Meher balt jetzten So wild\n",
"Mängeggen derkernänn\n",
"KAT\n",
"Sield-Treinikamme ester Deutsch ger Tutoff Sie die Frauer 108!\n",
"Gorfor vonälte ten?\n",
"14 Trauerichtine geweihmt hafte Pulverro\n",
"So Lokopp!\n",
"Intetschteit Fren Sieberauerstothüngo\n",
"Gen-Keins Gau\n",
"Paps gegt, Gemorrei ertertriebt spriebei \"Auch imlen 20 Poliche abacht ICHIFF zu sider um IV-Empfück\n",
"Sophinbesterkelen TAS Deue Lang\n",
"Ward nat getter Gus Geristen\n",
"Die Lieden gibt dereslannagt gew\n",
"Kamir meillerviammer nik!\n",
"EUROB-Wem Ban gegensen unden Welten die PO\n",
"Ichtig im hiff Tals BES-Nazin zur Michönen Bachtsch Ihrhafergebt\n",
"Lierder Horgeppestinz ISER mutter\n",
"EURO-Nier zuröteinent?\n",
"14 Jundaster, das anner heite 2012\n",
"Dier 10) in 70!\n",
"Moters 2 Jauchrer Prorreurorrautigund\n",
"Wohn Wet all\n",
"Schergan\n",
"Sahr Ein\n",
"EHEISRAELD-Beld-Dranne erg ihreinebent\n",
"Ich?\n",
"Her geritsprit ver?\n",
"Mor um Ple\n",
"50 Eurotorbete abeichtlönnee-Mäsie Öl-\"Tage Silletter terann dis Hiedesundas der e\n"
]
}
],
"source": [
"titlesFile.seek(0)\n",
"lm = train_char_lm(titlesFile, order=2)\n",
"print generate_text(lm, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Das ist noch nicht soo besonders... Man könnte es für Niederländisch halten ;-)\n",
"\n",
"### Stufe 4"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Faszination!\n",
"Warum verarschte\n",
"Die Mutter\n",
"Mutter\n",
"Aschergewalt Kolle\n",
"Unserer sie besser?\n",
"Mein Leben mit BILD\n",
"Merkel in alle aus in TRAUM-HAUS!\n",
"TV-Rolle Rasernet zt\n",
"Was versinkt Traum-Horror-Unfalle tot\n",
"Bausparen krieg\n",
"Betrüge vor\n",
"Schlecker ist Apother ab\n",
"SEX im Gesproche Soli\n",
"Gauck\n",
"Warum letzt spricht's!\n",
"Die besten Talk-Show für Merkel-Plan von Gier-Medikamente\n",
"Politiker mit der müsseldorf\n",
"Das Gesich für mit 81!\n",
"Sind wirken!\n",
"Wie vorbeit\n",
"20 spazieren?\n",
"Kachen RTL Bauer alle Hunziker\n",
"Udo inkognito untreuen Herr Lautere Wahnsinn!\n",
"Rad-Star gefährlichungel mit BLUT-PROBE\n",
"Maschmeißt Katja rauf?\n",
"Drei auf OB Roth in Skandal um TV!\n",
"Mode-Tresor knacken!\n",
"Boris 15-Mio-Villa\n",
"Kält\n",
"Ist das neues BILD denken weg!\n",
"92 Weltungs- Akte Tochter die 50 besten\n",
"Traumschied?\n",
"Micher Haut-Tabelle verliert\n",
"Noch mit Sonder \"Auf einer untreuen\n",
"Honis der Geliebte (33) packt Millionärs-Tabelle beim Einheit über Seidel Anna Loos zum Porscht Lotharina (+ 11) noch mich jetzt ausgegraben\n",
"BILD Mein BILD den in Behind\n"
]
}
],
"source": [
"titlesFile.seek(0)\n",
"lm = train_char_lm(titlesFile, order=4)\n",
"print generate_text(lm, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Das klingt schon fast nach Bild. Man beachte erste sinnvolle Titel, wie z.B. \"Mein Leben mit BILD\". Auch die Verwendung von Ausrufezeichen oder Altersangaben in Klammern () nach Personennamen hat das Modell aus den Bildschlagzeilen gelernt.\n",
"\n",
"### Stufe 7"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Faszination Weltuntergang\n",
"Peter Struck (69) tot\n",
"Bausparen: Ministerin vor Gericht brauchen wird zum Polizei streckt Millionär nieder!\n",
"Wetten, dass Kerkeling der neue Gottschalk heute alle Kumpel im Liebes Interview mit KATIE HOLMES\n",
"Riesen-Empörung über Seiten-Sprünge\n",
"Katze kriegt wie viel RENTE oder PENSION?\n",
"Sorge um ihre Tochter von Neuss\n",
"Benzin-Wut! Uns reicht's!\n",
"Die ersten Kinder im Ferienlager vergewaltigung\n",
"Eis-Chaos legt Deutschland noch Gold?\n",
"Junge (4) zwei Stunden am Gesicht operiert!\n",
"Schwere Vorwürfe gegen Schmerzens-Geld vom Staat\n",
"Atom-Horror!\n",
"HORROR-BEBEN\n",
"IAA bleibt bis 2025 voraus!\n",
"Ich schafft Seite-1-Girl ab\n",
"... und WULFF in Italien\n",
"Ivy (19) gewinnen!\n",
"Horror-Unfall\n",
"Ihr Neuer sieht Lothar die Sex-Nacht\n",
"Psycho-Krieg im Gericht erschossen!\n",
"Drama um den neuen Handys\n",
"STOP!\n",
"Micaela trägt den kleinsten TANGA der Welt\n",
"Gottschalk lästert über Schmidt den Tod seiner Loki?\n",
"First Lady!\n",
"Rosenstolz vor der Vergewaltigung\n",
"Eis-Chaos betroffen!\n",
"Ich, der Papst\n",
"Bringt er William und \n"
]
}
],
"source": [
"titlesFile.seek(0)\n",
"lm = train_char_lm(titlesFile, order=7)\n",
"print generate_text(lm, 7)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Bei Stufe 7 sieht man leider, dass unsere Statistik aus nur 800 Schlagzeilen dazu nicht ausreichend ist. Das Modell wiederholt oft nur noch die bereits bekannten Schlagzeilen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Stufe 5\n",
"\n",
"Da für Stufe 7 unsere Statistik bereits nicht mehr ausreicht, gehen wir zurück und nach etwas experimentieren sehen wir, dass die Ergebnisse bei Stufe 5 am besten sind."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Faszination?\n",
"Was verpfuschten Lebensmittelt gegen Gauck-Wahl\n",
"DIE TOTEN KINDER DEUTSCHLACHT UM ALEPPO\n",
"Ich haben\n",
"Bundesbank feuert um seiner und genießen\n",
"Sex-Skandal um Soli\n",
"Gauck-Wahl\n",
"DIE SCHLAND\n",
"Assauer!\n",
"Nazis!\n",
"Horror-Unfall\n",
"Wie Sieges Nacht\n",
"Brust-Krebs-Kampf\n",
"Sawatzki spricht seinen Abgrund?\n",
"Mindestlohn kommt bei Autofahrer zu haben mit Eigenblut\n",
"Deutsche spazieren?\n",
"Staatsanwalt Kolle für Versuche gequält\n",
"RTL-Star Thurau zockt eigene TV-Serie\n",
"Erste Fotos vom Hitze-Chaos um Killer-Nazis!\n",
"Horror-Unfall aus!\n",
"Freddy Quinn Meine Niere für Kids\n",
"Wo ist Wohnen immer höher\n",
"Sex-Attacke geehrt\n",
"Alle 51 Models im TV!\n",
"Fünf Schöffen entscheiden\n",
"Griechen wir!\n",
"Mehr Rente!\n",
"Erster liebte wirklich zieh mich ausgeraubt\n",
"Sarrazin sprengen\n",
"Liebe\n",
"RENTE oder Puff-Reise\n",
"Udo Jürger an\n",
"Sorge um ihrem Aus?\n",
"Nacktverbot für Kfz-Meister\n",
"Asche-Wolke erreicht's!\n",
"Die Wahrheit über Ehe-Vertrag\n",
"Geheimnis unsere Organspendet\n",
"BILD-Sommer-Mörden bei \"Ein Herzsprung\n",
"Polizistentum gehört zurück!\n",
"Bombe in Deutscher!\n"
]
}
],
"source": [
"titlesFile.seek(0)\n",
"lm = train_char_lm(titlesFile, order=5)\n",
"print generate_text(lm, 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Wow, es funktioniert\n",
"\n",
"Stufe 5 unseres simplen Modell generiert Schlagzeilen, die der [Bildzeitung](http://www.bild.de/news/inland/schlagzeile/die-sie-2015-leider-nie-lesen-werden-39155720.bild.html) Konkurrenz machen können:\n",
"\n",
"* Sex-Skandal um Soli\n",
"* Mehr Rente!\n",
"* Nacktverbot für Kfz-Meister\n",
"* Griechen wir!\n",
"* Erste Fotos vom Hitze-Chaos um Killer-Nazis!\n",
"* Sarrazin sprengen\n",
"* RENTE oder Puff-Reise\n",
"\n",
"Weil es so schön ist hier noch mehr, die wir in weiteren Durchläufen generieren konnten\n",
"\n",
"* Deutsche Botschafts-Boss greift Merkels mutmaßlichen Witwers!\n",
"* Warum heirate ich Gottschalk macht Ehen\n",
"* BILD zeigt die City\n",
"* Verfassungsgericht in Behinder-Huren\n",
"* Familie Schloss Bellevue\n",
"* Bierhoffs Frau Guttenberg verschossen!\n",
"* Iran platt!\n",
"* Geheimer Ehe, Alter\n",
"* Merkel-Plan von Matthäus kriegt eigenen Vater erst mit des toten Witwe vergewaltigt\n",
"* Griechen Rekord-Jackpot!\n",
"* Schüler hat Vermögen\n",
"* Schon 100 Euro sparen: Ministerin warnt vor Gericht ihr Kinder-CD\n",
"* Deutsch!\n",
"* Kosten!\n",
"* Besoffene Politiker wieder vor Abzocke\n",
"* Mehr Urlaub für alle auf Mallorca!\n",
"* Rente Quatschland\n",
"* TV-HUND WIEDER Arzt-Gattin\n",
"* Witwe verkraftet Helmut Schwere Vorwürfe gegen Gauck schalk machen Rekord-Jackpot jetzt sich!\n",
"* 6 Bier, 4 Würstchen, 1 Flagge für Hartz IV\n",
"* Bohlen verkaufen!\n",
"* Hört jetzt reden wir!\n",
"* AXEL SPRINGER mit KATIE HOLMES\n",
"* Voll-Idioten-Chaos Erster Auftritt!\n",
"* Unternet zu sehen!\n",
"* Trend-Fahrräder für FRAUEN!\n",
"* Jeder 4 deutschland\n",
"* Erster fährt Pleite!\n",
"* Jetzt auch zu viel Geld?\n",
"* Münte über meine Falten\n",
"* Riesterwelle\n",
"* Rauchen wird Papa mit kranker Mord-Lust!\n",
"* So werden Euro geprellt\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"scrolled": true
},
"source": [
"Besonders lustig sind Wortneuschöpfungen wie *\"Quatschland\"*, *\"Unternet\"*, *\"Riesterwelle\"*. Darin liegt - wie wir meinen - noch viel unerschlossenes Potential für Schlagzeilen der Bildzeitung! Manche Schlagzeile wünschen wir sehnlichst herbei: *\"Bohlen verkaufen\"*, *\"Jetzt auch zu viel Geld?\"*, *\"Mehr Urlaub für alle auf Mallorca!\"* Andere sind so nahe an der Realität, dass sie kaum auffallen: *\"Besoffene Politiker wieder vor Abzocke\"*, *\"AXEL SPRINGER mit KATIE HOLMES\"*, *\"Münte über meine Falten\"*. Aufgefallen ist uns, dass die Bildzeitung eine komische Affektion zu Witwern und Witwen hat. Unser Modell erzeugt erstaunlich viele Überschriften zu diesem Thema, wie *\"Deutsche Botschafts-Boss greift Merkels mutmaßlichen Witwers!\"*, *\"Merkel-Plan von Matthäus kriegt eigenen Vater erst mit des toten Witwe vergewaltigt\"*, ...\n",
"\n",
"Insgesamt muss man aber sagen, dass wir bei vielen der generierten Schlagzeilen erstmal überprüfen mussten, ob es nicht tatsächlich echte Schlagzeilen waren. Das ist erstaunlich wenn man bedenkt, wie einfach das Modell und der Code von Goldberg sind. Stellt man daher die Frage \"Wo hört die Statistik auf und wo fängt die künstliche Intelligenz an?\" müssen wir zumindest für Bildschlagzeilen sagen, dass die Grenze wohl recht nahe liegt. Es wäre interessant in einer Doppelblindstudie zu testen, wieviele der Schlagzeilen von Menschen noch als künstlich erkannt werden, und wieviele schon als \"echt\". Mit mehr Daten und vielleicht einen noch mächtigerem Modell - wie den bei Goldberg erwähnten Rückgekoppelten Neuronalen Netzwerken (RNNs) - könnte man bestimmt schon eine Mehrheit von Bildlesern in die Irre führen. "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment