Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss14:list_comprehension_sortieren_pyplot_sitzung_vom_8._mai

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss14:list_comprehension_sortieren_pyplot_sitzung_vom_8._mai [2014/05/12 18:15]
stefanborn [List comprehensions]
ss14:list_comprehension_sortieren_pyplot_sitzung_vom_8._mai [2016/05/10 14:46] (aktuell)
Zeile 1: Zeile 1:
-===== Sitzung vom 8. Mai =====+===== List Comprehensions,​ Sortieren, pyplot, Zipf's law =====
  
 Aus dem Programm, das ein "​Wörterbuch"​ der Worthäufigkeiten in einem Text  Aus dem Programm, das ein "​Wörterbuch"​ der Worthäufigkeiten in einem Text 
Zeile 17: Zeile 17:
 Die so erzeugte Liste besteht aus zweielementigen Listen [12,'​Katze'​],​[13,'​Hunde]... Die so erzeugte Liste besteht aus zweielementigen Listen [12,'​Katze'​],​[13,'​Hunde]...
  
-Allgemein lässt sich mit einer //list comprehension//​ aus einer Liste  ​<​code>​liste1</​code>​ +Allgemein lässt sich mit einer //list comprehension//​ aus einer Liste  ​''​liste''​ 
-eine neue Liste <​code>​liste2</​code> ​erzeugen:+eine neue Liste ''​neueliste'' ​erzeugen:
  
 +<code python> ​ neueliste=[ f(x) for x in liste] </​code>​
  
 +wobei ''​f(x)''​ für irgendeinen Ausdruck steht, in dem
 +''​x''​ vorkommt.
 +
 +
 +==== Sortieren ====
 +
 +Hat man nun eine Liste ''​liste'',​ so lässt sich diese wieder auf verschiedene
 +Weisen sortieren:
 +
 +<code python> liste.sort() </​code>​
 +
 +sortiert die Liste lexikographisch. Anstelle mit der Methode ''​sort''​ lässt, die 
 +die gegeben Liste modifiziert,​ lässt sich das auch mit der Funktion ''​sorted''​ machen,
 +die eine neue sortierte Liste zurückgibt:​
 +
 +<code python> liste=sorted(liste) </​code>​
 +
 +Sind die Einträge wie bei ''​wbliste''​ selbst
 +Listen, so wird erst nach dem ersten Eintrag, dann nach dem zweiten sortiert, usw.
 +Für ''​wbliste''​ heißt das, dass nach Häufigkeit sortiert wird und unter den 
 +Wörtern gleicher Häufigkeit alphabetisch.
 +
 +Durch 
 +
 +<code python> liste.sort(reverse=True) </​code>​
 +
 +wird absteigend lexikographisch geordnet. ​ Will man nicht lexikographisch
 +ordnen, sondern nach einer selbst definierten Ordnungsrelation,​ so lässt
 +sich das mit Hilfe eines weiteren Paramters ''​key=...''​ realisieren,​
 +siehe z.B. [[https://​wiki.python.org/​moin/​HowTo/​Sorting|hier.]]
 +
 +==== Zipf's law und erste Plots ====
 +
 +Ein bemerkenswertes Gesetz gilt für alle natürlichen Sprachen: Ordnet man
 +die Wörter nach absteigender Häufigkeit,​ so besteht zwischen dem Rang ''​r''​
 +und der Häufigkeit ''​f''​ eine Beziehung der Form \( f=c r^{-s}\).
 +Dies bedeutet dass zwischen ''​log f''​ und ''​log r''​ eine lineare Beziehung
 +mit negativer Steigung besteht. ​ Um das (qualitativ) zu überprüfen ist
 +ein Plot nützlich. Ist ''​x''​ eine Liste von x-Werten und ''​y''​ eine Liste
 +von gleich vielen y-Werten so lässt sich mit dem Modul matplotlib leicht
 +ein Plot erstellen:
 +
 +<code python>
 +from matplotlib import pyplot as plt
 +
 +plt.plot(x,​y)
 +plt.show()
 +</​code>​
 +Es wird an anderer Stelle noch mehr zum Plotten geben...
 +
 +
 +Als Beispiele Winnetou1, Die Buddenbrooks und Shakespeare'​s complete works
 +(hier wurde der natürliche Logarithmus verwendet):
 +
 +{{:​ss14:​zipf-winnetou.png?​200|Winnetou 1}}
 +{{:​ss14:​zipf-buddenbrooks.png?​200|Die Buddenbrooks}}
 +{{:​ss14:​zipf-Shakespeare.png?​200|Shakespeare'​s complete works}}
 +
 +Man sieht, dass bei diesen Graphen die lineare Abhängigkeit für die
 +allerhäufigsten Wörter verletzt ist. Ca. ab dem 20.-häufigsten Wort lässt
 +sich der Graph allerdings gut durch eine Gerade beschreiben.
 +(Ich nehme an, dass Henrikas Vermutung zutrifft,
 +dass Eigennamen eine Sonderrolle spielen. ​ Wenn man aber ein
 +ganzes Textkorpus verschiedener Autoren einer Sprache nimmt, wird
 +die Beziehung sehr gut erfüllt.)
 +
 +p.s. 
 +
 +   - Fürs Polnische hat Ilona den folgenden [[http://​www.ipipan.waw.pl/​~ldebowsk/​docs/​seminaria/​zipf1.pdf|Link]] (S. 15) gefunden.
 +   - Es liegt nahe, die Untersuchung quantitativ zu machen, d.h. die optimalen Konstanten ​ \( c\) und \( s\) im Zipf'​schen Gesetz zu finden und nach Sprachen und Textsorten zu unterscheiden. ​
 +   - Ich habe mehrere ganz verschiedene Erklärungsversuche für das Phänomen gefunden. Ein relativ neuer und interessanter findet sich [[http://​www.pnas.org/​content/​100/​3/​788.full|hier]].
ss14/list_comprehension_sortieren_pyplot_sitzung_vom_8._mai.1399911331.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)