Die oben dargestellte Möglichkeit, Wörter abzuzählen, läßt sich durch die Bedingung if len(word) auf bestimmte Wortlängen einschränken.
for word, count in sorted(histogram.iteritems()):
if len(word) == 3:
print count, word,
print
Es folgt die Auflistung aller Wörter, die drei Zeichen lang sind:
153 &an 110 'am 519 'an 264 'aw 1 'ii 1 'il 344 'in 2 'ti 113 bal 2 bni 6 d&u 1184 fii 2 haa 4 hab 66 hal 180 hum 12 kam 4 kay 8 kun 813 laa 163 lam 59 lan 77 law 1011 maa 368 man 1672 min 120 qad 263 qul 1 qum 1 quu 1 sal 1 tlu 349 yaa 1 zid
Oder wir wollen wissen, wie oft Moses genannt wird:
if word.endswith("usaa"):
1 bi-muusaa 1 li-muusaa 129 muusaa 5 wa-muusaa
Oder Muhammad:
if word.startswith("muHammad"):
2 muHammad-in 3 muHammad-un
Der Koran als Topic Map
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Nach einigen Umwegen der Bearbeitung folgt hier die geordnete Menge ("sorted set") der in der Ausgangsdatei "qurout.txt" als Eigennamen "ProperName" gekennzeichneten Wörter.
Es ist zu beachten, daß diese Liste einige Fehler enthält: Der Brokat, "istabraq", etwa kann im Koran kein Eigenname sein.
['&aad', '&adn', '&arafaat', '&arim', '&iisaa', '&imraan', '&uzayr', '&uzzaa', "'aHmad", "'aadam", "'aan", "'aazar", "'ayy", "'ayy-i", "'ayyat", "'ayyuub", "'ibliis", "'ibraahiim", "'idriis", "'ilyaas", "'injiil", "'injiil", "'iram", "'isHaaq", "'ismaa&iil", "'israa'iil", "'istabraq", "'uff", '(sh)u&ayb', '(th)amuud', 'Hunayn', 'Safaa', 'Taaguut', 'Taaluut', 'baabil', 'badr', 'bakkat', 'daawuud', 'fir&awn', 'firdaws', 'haamaan', 'haaruun', 'haaruut', 'huud', 'jaaluut', 'jahannam', 'jibriil', 'juudiyy', "l-'aykat",, 'l-laat', 'l-yasa&', 'laZaa', 'llaah', 'luqmaan', 'luuT', "ma'juuj", 'maaruut', 'madyan', 'makkat', 'manaat', 'marwat', 'maryam', 'miSr', 'miikaal', 'muHammad', 'muusaa', 'nuuH', 'qaaruun', 'quray(sh)', 'ramaDan', 'ruum', "saba'", 'saqar', "saynaa'", 'siiniin', 'sulaymaan', 'tawraat', 'tubba&', 'ya&quub', 'ya&uuq', "ya'juuj", 'ya(th)rib', 'yaHyaa', 'yaasiin', 'yaguu(th)', 'yuunus', 'yuusuf', 'zakariyyaa', 'zayd']
Es ist zu beachten, daß diese Liste einige Fehler enthält: Der Brokat, "istabraq", etwa kann im Koran kein Eigenname sein.
['&aad', '&adn', '&arafaat', '&arim', '&iisaa', '&imraan', '&uzayr', '&uzzaa', "'aHmad", "'aadam", "'aan", "'aazar", "'ayy", "'ayy-i", "'ayyat", "'ayyuub", "'ibliis", "'ibraahiim", "'idriis", "'ilyaas", "'injiil", "'injiil", "'iram", "'isHaaq", "'ismaa&iil", "'israa'iil", "'istabraq", "'uff", '(sh)u&ayb', '(th)amuud', 'Hunayn', 'Safaa', 'Taaguut', 'Taaluut', 'baabil', 'badr', 'bakkat', 'daawuud', 'fir&awn', 'firdaws', 'haamaan', 'haaruun', 'haaruut', 'huud', 'jaaluut', 'jahannam', 'jibriil', 'juudiyy', "l-'aykat",, 'l-laat', 'l-yasa&', 'laZaa', 'llaah', 'luqmaan', 'luuT', "ma'juuj", 'maaruut', 'madyan', 'makkat', 'manaat', 'marwat', 'maryam', 'miSr', 'miikaal', 'muHammad', 'muusaa', 'nuuH', 'qaaruun', 'quray(sh)', 'ramaDan', 'ruum', "saba'", 'saqar', "saynaa'", 'siiniin', 'sulaymaan', 'tawraat', 'tubba&', 'ya&quub', 'ya&uuq', "ya'juuj", 'ya(th)rib', 'yaHyaa', 'yaasiin', 'yaguu(th)', 'yuunus', 'yuusuf', 'zakariyyaa', 'zayd']
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Ein Beispiel für die Darstellung des Partikels "kallaa" durch eine KWIC "Key Word in Context" Analyse.
text = open("C:\Koran Umschrift.txt","r").read().split()
kwicdict = {}
ngrams = [text[i:i+6] for i in range(len(text)-5)]
for n in ngrams:
if n[2] not in kwicdict:
kwicdict[n[2]] = [n]
else:
kwicdict[n[2]].append(n)
for n in kwicdict['kallaa']:
outstring = ' '.join(n[:2]).rjust(20)
outstring += str(n[2]).center(len(n[2])+6)
outstring += ' '.join(n[3:])
print outstring
text = open("C:\Koran Umschrift.txt","r").read().split()
kwicdict = {}
ngrams = [text[i:i+6] for i in range(len(text)-5)]
for n in ngrams:
if n[2] not in kwicdict:
kwicdict[n[2]] = [n]
else:
kwicdict[n[2]].append(n)
for n in kwicdict['kallaa']:
outstring = ' '.join(n[:2]).rjust(20)
outstring += str(n[2]).center(len(n[2])+6)
outstring += ' '.join(n[3:])
print outstring
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Python-Code bitte , dann wird er lesbarer.
Code: Alles auswählen
in Tags setzen
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Mal ein Beispiel für eine KWIC-Analyse:
Der Kontext der ersten fünf Surennamen
&alay-him wa-laa l-Daall-iina suurat-u l-baqarat-i
&alaa l-qawm-i l-kaafir-iina suurat-u 'aal-i
llaah-a la&alla-kum tufliH-uuna suurat-u l-nisaa'-i
bi-kull-i (sh)ay'-in &aliim-un suurat-u l-maa'idat-i
kull-i (sh)ay'-in qadiir-un suurat-u l-'an&aam-i
wa-'inna-hu la-gafuur-un raHiim-un suurat-u l-'a&raaf-i
wa-yusabbiH-uuna-hu wa-la-hu yasjud-uuna suurat-u l-'anfaal-i
Der Kontext der ersten fünf Surennamen
&alay-him wa-laa l-Daall-iina suurat-u l-baqarat-i
&alaa l-qawm-i l-kaafir-iina suurat-u 'aal-i
llaah-a la&alla-kum tufliH-uuna suurat-u l-nisaa'-i
bi-kull-i (sh)ay'-in &aliim-un suurat-u l-maa'idat-i
kull-i (sh)ay'-in qadiir-un suurat-u l-'an&aam-i
wa-'inna-hu la-gafuur-un raHiim-un suurat-u l-'a&raaf-i
wa-yusabbiH-uuna-hu wa-la-hu yasjud-uuna suurat-u l-'anfaal-i
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
Nur mal der Interesse halber: Der selbe Kai Borrmann dieses FAZ Artikels?
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Ja, dieser Artikel der TAZ (nicht FAZ) erwähnt auch mich. Es ging seinerzeit aber nicht um Python.EyDu hat geschrieben:Nur mal der Interesse halber: Der selbe Kai Borrmann dieses FAZ Artikels?
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Mit dem folgenden Beispiel kann man eine Grafik erzeugen,
die erkennbar macht, daß die Suren des Koran nicht, wie oft
zu lesen, nach absteigender Länge sortiert sind.
Dies stimmt generell, aber nicht durchweg; manchmal folgen
längere auf kürzere.
die erkennbar macht, daß die Suren des Koran nicht, wie oft
zu lesen, nach absteigender Länge sortiert sind.
Dies stimmt generell, aber nicht durchweg; manchmal folgen
längere auf kürzere.
Code: Alles auswählen
from Tkinter import *
root = Tk()
sequenz = open("C:\Koran Umschrift.txt","r").read()
text = sequenz.split()
text
words = ["suurat-u"]
from Tkinter import Canvas
w = Canvas(width=800,height=100*len(words))
text = list(text)
scale = float(800)/len(text)
position = 0
for word in text:
for i in range(len(words)):
x = position * scale
if word == words[i]:
y = i * 100
w.create_line(x,y,x, y+100-1)
position += 1
w.pack()
mainloop()
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Hier ist ein erster Versuch der Visualisierung zu finden:
http://user.baden-online.de/~pjanssen/t ... index.html
http://user.baden-online.de/~pjanssen/t ... index.html
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Über den ISO-Standard zur Topic Map haben wir uns noch keine verschärften Gedanken gemacht.
"Topic map" ist zunächst mal ein Bezugsrahmen, über den auf dem folgenden, für dieses Projekt gegründeten, Blog auch diskutiert werden kann:
http://www.raunaq.info-a.googlepages.com/
Über Besucher freuen wir uns!
"Topic map" ist zunächst mal ein Bezugsrahmen, über den auf dem folgenden, für dieses Projekt gegründeten, Blog auch diskutiert werden kann:
http://www.raunaq.info-a.googlepages.com/
Über Besucher freuen wir uns!
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Der Korantext liegt nun in einer Datei vor, in welcher jedem Satz die Nummer der Sure und der Ayat, also von Kapitel und Vers, vorangestellt ist. Ein Ausschnitt:
Gibt es irgendwo eine Möglichkeit, diese nach ihrer Ähnlichkeit zu sortieren? Hat jemand vielleicht eine Idee?
- [71:1] #.)inn%-a #.)arsaln%-a n%-u%..han #.)il%-a qawmih%-i #.)an #.)an%--dir qawmaka min qabli #.)an ya#.)tiyahum #.(a%--d%-abun #.)al%-im
[71:2] q%-ala y%-a-qawmi #.)inn%-i lakum na%--d%-irun mub%-in
[71:3] #.)ani #.(bud%-u ll%-aha wa-ttaq%-uhu wa-#.)a%..t%-i#.(%-un
[71:4] ya%.gfir lakum min %--dun%-ubikum wa-yu#.)a%))h%))hirkum #.)il%-a #.)a%>galin musamman #.)inna #.)a%>gala ll%-ahi #.)i%--d%-a %>g%-a#.)a l%-a yu#.)a%))h%))haru law kuntum ta#.(lam%-un
[71:5] q%-ala rabbi #.)inn%-i da#.(awtu qawm%-i laylan wa-nah%-ara
[71:6] fa-lam yazidhum du#.(%-a#.)%-i #.)ill%-a fir%-ara
[71:7] wa-#.)inn%-i kullam%-a da#.(awtuhum li-ta%.gfira lahum %>ga#.(al%-u #.)a%..s%-abi#.(ahum f%-i #.)%-a%--d%-anihim wa-sta%.g\'9aaw %--tiy%-abahum wa-#.)a%..sarr%-u wa-stakbar%-u stikb%-ara
[71:8] %--tumma #.)inn%-i da#.(awtuhum %>gih%-ara
[71:9] %--tumma #.)inn%-i #.)a#.(lantu lahum wa-#.)asrartu lahum #.)isr%-ara
Gibt es irgendwo eine Möglichkeit, diese nach ihrer Ähnlichkeit zu sortieren? Hat jemand vielleicht eine Idee?
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Auf der folgenden Seite habe ich mal die Ausgangsüberlegungen und einige der bisherigen Ergebnisse zusammengebracht:
http://www.raunaq.info-a.googlepages.co ... ernet.html
Mein Dank an alle, die dabei geholfen haben!
http://www.raunaq.info-a.googlepages.co ... ernet.html
Mein Dank an alle, die dabei geholfen haben!
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Die Sache ist jetzt weiter gediehen.
Mit "Surfin' the Qur'an" lassen sich eine englische Übersetzung
und eine Transkription miteinander vergleichen. Viel Spaß!
http://qibla.appspot.com/
Mit "Surfin' the Qur'an" lassen sich eine englische Übersetzung
und eine Transkription miteinander vergleichen. Viel Spaß!
http://qibla.appspot.com/
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Die Firma TextWise bietet sogenannte "Semantic Signatures" an.
Auf ihrer Webseite kann man Text eingeben,
der dann durch quantitative Methoden analysiert wird,
so daß dessen Ähnlichkeit mit bereits bestehenden Texten ermittelt werden kann:
http://www.semantichacker.com/
Für englische Passagen aus dem Qur'an bekam ich gute Ergebnisse.
Nun handelt es sich um kommerzielle Software;
aber vielleicht gibt es im Umfeld von Python bereits Entwicklungen,
mit denen Texte in Vektorräumen abgebildet werden?
Auf ihrer Webseite kann man Text eingeben,
der dann durch quantitative Methoden analysiert wird,
so daß dessen Ähnlichkeit mit bereits bestehenden Texten ermittelt werden kann:
http://www.semantichacker.com/
Für englische Passagen aus dem Qur'an bekam ich gute Ergebnisse.
Nun handelt es sich um kommerzielle Software;
aber vielleicht gibt es im Umfeld von Python bereits Entwicklungen,
mit denen Texte in Vektorräumen abgebildet werden?
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
- Kai Borrmann
- User
- Beiträge: 29
- Registriert: Sonntag 7. Januar 2007, 09:11
- Wohnort: Berlin
Unserer Seite
http://qibla.appspot.com haben wir jetzt auch das arabische Original
und eine deutsche Übersetzung hinzugefügt.
Gruß, K.B.
http://qibla.appspot.com haben wir jetzt auch das arabische Original
und eine deutsche Übersetzung hinzugefügt.
Gruß, K.B.
Dr. Kai Borrmann
Sperlingsgasse 1
10178 Berlin
Sperlingsgasse 1
10178 Berlin
Unabhaengig vom Eingabetext, geht es hier allgemeinen um die Transformation eines morphologisch getaggten Textes (hier konkret der Koran, laut einem Projekt der Uni Haifa: http://cl.haifa.ac.il/projects/quran/) in ein semantisches Netzwerk.BlackJack hat geschrieben:Vorstellbar ist vieles.
Ich weiss nicht so recht ob dieses Forum die richtige Anlaufstelle ist. Die Aufgabe erfordert wesentlich mehr Fachwissen, sowohl was die Religionswissenschaft, als auch spezielle Datenstrukturen und Algorithmen für die "sematische" Aufbereitung und Speicherung von Texten betrifft, als spezielles Python-Wissen.
An sich, ist es als Teilgebiet des NLP (natural language processing) aeusserst interessant, unabaengig vom Eingabetext. Es eroeffnet den Weg zur automatischen Uebersetzung aber auch Verstaendnis von Texten, auch wenn es noch bis dahin ein sehr weiter Weg ist.
@Kai: Was die Auswahl des Eingabetextes angeht (hier der Koran), da bezweifle ich aber, dass dies irgendwelche sinnvollen Ergebnisse produzieren wird. Religioese Skripturen sind in sich leider nicht abgeschlossen, d.h. sie enthalten nicht alle Informationen, die man benoetigt, um ein kohaerentes semantisches Netz zu erzeugen. Es fehlen dafuer entscheidende Teile des historischen und psychosozialen Kontexts ihrer Entstehungszeit und -umgebung. Ohne diese zusaetzlichen Informationen wird man vermutlich nicht viel daraus gewinnen koennen (trotzdem waere es interessant zu sehen, was dabei rauskommt, egal wie bruchstueckhaft es ist).
Anders ware es z.B. bei formal kodifizierten Gesetzestexten. Ich koennte mir vorstellen, dass der gesamte Korpus der deutschen Gesetze zu einem durchaus kohaerenten semantischen Netz transformiert werden koennte, was interessante Anwendungen im Bereich der Experten-Systeme eroeffnen wuerde (so eine Art "Rechtsanwalt-o-mat"). Vielleicht kommt man auch da nicht ohne bestimmte externe Zusatzinformationen aus, aber mein Bauchgefuehl(tm) verraet mir, dass es wesentlich weniger Kontextinformationen sein wuerden als bei Bibel, Koran & Co. noetig waeren.
Sorry fuer die nicht direkt auf Python bezogene Antwort.
@farid: Bei Gesetzen bin ich mir da auch nicht sicher. Mal davon abgesehen, dass es bestimmt Widersprüche geben wird, muss man ja auch Urteile mit einbeziehen, und da gibt's auf jeden Fall Widersprüche. Verschiedene Gerichte interpretieren verschiedene Paragraphen anders, was dann wieder in die Bedeutung der Paragrapgen einfliesst, weil sich andere Gerichte teilweise auf voran gegangene Urteile beziehen, andererseits aber nicht an vorangegangene Urtiele gebunden sind. Und dann beziehen sich die Gesetze immer auf Objekte von ausserhalb. Die Gesetze bestehen ja nicht zum Selbstzweck. Und die Abbildung von "realen Objekten" auf "formale Parameter" von Gesetzen ist wieder Interpretationssache.
Auch wieder wahr! Wenn's so einfach waere, haetten wir laengst entsprechende Experten-Systeme.BlackJack hat geschrieben:@farid: Bei Gesetzen bin ich mir da auch nicht sicher.
Aber bei Gesetzen werden die Begriffe schon ziemlich genau definiert, oft in eigens dafuer geschriebenen Paragraphen. Ausserdem werden diese Begriffe (meistens) auch genau in dem Sinne verwendet, in dem sie definiert wurden. Das ist jetzt nicht so streng wie Mathematik, aber im Vergleich zu normalen (und erst recht religioesen) Texten, sind solche juristischen Texte von einer kaum zu uebertreffenden begrifflichen Strenge.
Es stimmt aber auch, dass auch hier externer Kontext noetig ist; sei es die Rechtsprechung oder gar allgemeine philosophische Grundlagen, die bis in die griechische Antike zurueckreichen.