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.
** 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
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.
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