[PYTHON] C'est pourquoi j'analyserai la page d'accueil de chaque partie

Objectif

Cela fait un an que l'interdiction des élections en ligne a été levée, et certaines utilisations se rebellent contre la loi électorale sur les emplois publics. Maintenant, cette fois, je vais analyser les pages d'accueil de chaque partie, découvrir quels mots sont utilisés et extraire les parties ayant des caractéristiques similaires.

procédure

  1. Téléchargez la page d'accueil de chaque partie.
  2. analyser morphologiquement la page téléchargée avec Mecab.
  3. Trouvez le score de chaque mot avec tf-idf
  4. Mesurez la distance entre les phrases par similarité cosinus et trouvez la distance entre les partis politiques.
  5. Affichez l'association dans GraphViz.

résultat

** Analyse de la page d'accueil de chaque partie en 2014 ** http://needtec.sakura.ne.jp/analyze_election/page/analyzehp/2014

Code source https://github.com/mima3/analyze_election/tree/master/script_comp_manifesto

Téléchargez le code source et exécutez le script suivant.

#Téléchargez la page d'accueil et stockez-la dans la base de données
python create_parties_db.py parties_hp_2014.sqlite party_hp_json_2014.json

#Analyse morphologique et totalisation du nombre de mots
python create_parties_tokens.py parties_hp_2014.sqlite

# tf-Calculez la similitude idf et cosinus et enregistrez le résultat en JSON et PNG.
python create_tf_idf_report.py parties_hp_2014.sqlite party_hp_result_2014.json  party_hp_result_2014.png "ms ui gothic"

Pour l'exécuter, vous devez installer les bibliothèques suivantes. ・ Nltk ・ Lxml ・ MeCab ・ Urllib2 ・ Pydot

Commentaire

Analyse des phrases par tf-idf

La valeur de tf-idf du mot x dans la phrase y est la suivante.

tf = nombre de mots x apparaissant dans la phrase y / nombre de mots dans la phrase idf = 1.0 + log (nombre total de phrases / nombre de phrases dans lesquelles le mot x apparaît) tf-idf = tf × idf

Les mots qui apparaissent dans de nombreux documents sont moins importants et ont des scores inférieurs, et les mots qui n'apparaissent que dans des documents spécifiques sont plus importants et ont des scores plus élevés.

Mesure de la distance entre les phrases par similarité cosinus

La phrase 1 a un mot (A, B, C) et la valeur TF-IDF de ce mot est (0,1, 0,2, 0,3). La phrase 2 a un mot (C, D, E) et la valeur TF-IDF de ce mot est (0,4,0,5,0,6).

En supposant que le TF-IDF des mots qui n'existent pas dans la phrase est 0, créez TF-IDF pour tous les mots.

(A, B, C, D, E) dans la phrase 1 devient (0.1,0.2,0.3,0,0). (A, B, C, D, E) dans la phrase 2 devient (0,0,0.4,0.5,0.6)

Le cosinus de l'angle vectoriel entre la phrase 1 et la phrase 2 représente le degré de similitude entre les deux. Dans le cas d'exactement la même phrase, l'angle entre la phrase 1 et la phrase 2 est de 0 degré.

Dans le cas de Python, il est calculé par nltk.cluster.util.cosine_distance.

Recommended Posts

C'est pourquoi j'analyserai la page d'accueil de chaque partie
C'est pourquoi j'analyserai les commentaires du débat du chef de parti de Nico Nama à la Chambre des représentants.
C'est pourquoi je calcule le nombre de sièges pour le représentant proportionnel à l'élection de la Chambre des représentants
Je veux connaître la population de chaque pays du monde.
J'ai étudié le mécanisme de connexion flask!
J'ai essayé d'analyser les résultats du vote de la région métropolitaine d'Osaka pour chaque quartier
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
C'est pourquoi je vais chercher les tweets de l'élection de la Chambre des représentants
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai vérifié le contenu du volume du docker
J'ai essayé le serveur asynchrone de Django 3.0
J'ai vérifié les options de copyMakeBorder d'OpenCV
La structure des dossiers de Flask est résumée
Je ne connaissais pas les bases de Python
Le modèle de projet Python auquel je pense.