[PYTHON] Deshalb analysiere ich die Homepages jeder Partei

Zweck

Es ist ein Jahr her, seit das Verbot von Online-Wahlen aufgehoben wurde, und es gibt einige Verwendungszwecke, die gegen das Wahlgesetz für öffentliche Beschäftigung rebellieren. Wie geht es Ihnen heute? Dieses Mal werde ich die Homepages jeder Partei analysieren, herausfinden, welche Wörter verwendet werden, und die Parteien mit ähnlichen Merkmalen extrahieren.

Verfahren

  1. Laden Sie die Homepage jeder Partei herunter.
  2. Analysieren Sie die heruntergeladene Seite morphologisch mit Mecab.
  3. Finden Sie die Punktzahl für jedes Wort mit tf-idf
  4. Messen Sie den Abstand zwischen Sätzen anhand der Kosinusähnlichkeit und ermitteln Sie den Abstand zwischen politischen Parteien.
  5. Zeigen Sie die Zuordnung in GraphViz an.

Ergebnis

** Homepage-Analyse jeder Partei im Jahr 2014 ** http://needtec.sakura.ne.jp/analyze_election/page/analyzehp/2014

Quellcode https://github.com/mima3/analyze_election/tree/master/script_comp_manifesto

Laden Sie den Quellcode herunter und führen Sie das folgende Skript aus.

#Laden Sie die Homepage herunter und speichern Sie sie in der DB
python create_parties_db.py parties_hp_2014.sqlite party_hp_json_2014.json

#Morphologische Analyse und Summe der Anzahl der Wörter
python create_parties_tokens.py parties_hp_2014.sqlite

# tf-Berechnen Sie die Ähnlichkeit von IDF und Cosinus und zeichnen Sie das Ergebnis in JSON und PNG auf.
python create_tf_idf_report.py parties_hp_2014.sqlite party_hp_result_2014.json  party_hp_result_2014.png "ms ui gothic"

Um es auszuführen, müssen Sie die folgenden Bibliotheken installieren. ・ Nltk ・ Lxml ・ MeCab ・ Urllib2 ・ Pydot

Kommentar

Analyse von Sätzen durch tf-idf

Der Wert von tf-idf des Wortes x im Satz y ist wie folgt.

tf-idf = tf × idf

idf = 1,0 + log (Gesamtzahl der Sätze / Anzahl der Sätze, in denen Wort x vorkommt) Wörter, die in vielen Dokumenten vorkommen, sind weniger wichtig und haben niedrigere Punktzahlen, und Wörter, die nur in bestimmten Dokumenten vorkommen, sind wichtiger und haben eine höhere Punktzahl Messen Sie den Abstand von Sätzen durch Kosinusähnlichkeit. Satz 1 hat ein Wort (A, B, C) und der Wert von TF-IDF dieses Wortes ist (0,1, 0,2, 0,3). Satz 2 hat ein Wort (C, D, E) und der TF-IDF-Wert dieses Wortes ist (0,4,0,5,0,6). Angenommen, die TF-IDF von Wörtern, die im Satz nicht vorhanden sind, ist 0, erstellen Sie eine TF-IDF für alle Wörter.

(A, B, C, D, E) in Satz 1 wird (0,1,0,2,0,3,0,0). (A, B, C, D, E) in Satz 2 wird (0,0,0,4,0,5,0,6)

Der Kosinus des Vektorwinkels zwischen Satz 1 und Satz 2 repräsentiert den Ähnlichkeitsgrad zwischen den beiden. Bei genau demselben Satz beträgt der Winkel zwischen Satz 1 und Satz 2 0 Grad.

Im Fall von Python wird es von nltk.cluster.util.cosine_distance berechnet.

Recommended Posts

Deshalb analysiere ich die Homepages jeder Partei
Deshalb werde ich die Kommentare aus der Parteiführerdebatte von Nico Nama im Repräsentantenhaus analysieren.
Deshalb berechne ich die Anzahl der Sitze für den proportionalen Vertreter bei den Wahlen zum Repräsentantenhaus
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Ich habe versucht, die Abstimmungsergebnisse der Metropolregion Osaka für jede Gemeinde zu analysieren
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Deshalb werde ich Tweets von den Wahlen zum Repräsentantenhaus nachschlagen
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich möchte die Gefühle von Menschen analysieren, die sich treffen und zittern wollen
Ich habe versucht, die Negativität von Nono Morikubo zu analysieren. [Vergleiche mit Posipa]
Ich habe den Inhalt des Docker-Volumes überprüft
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe die Optionen von copyMakeBorder von OpenCV überprüft
Die Ordnerstruktur von Flask ist zusammengefasst
Ich kannte die Grundlagen von Python nicht
Die Python-Projektvorlage, an die ich denke.