[PYTHON] Visualisieren Sie Schlüsselwörter in Dokumenten mit TF-IDF und Word Cloud

Wortwolken-Memo

Bereiten Sie das Wortwörterbuch (Vokabular) und TF-IDF vor

#Alle Worte(Unten ist ein Beispiel)
$ vocab
array(['a', 'able', 'at', ..., 'zebra', 'zone', 'zoo'], dtype='<U79')

#TF für jedes Dokument-IDF-Vektor
$ TF_IDF
array([[ 0.        ,  0.        ,  0.        , ...,  0.        ,
         0.        ,  0.        ],
       [61.9792226 ,  0.        ,  3.38385083, ...,  0.        ,
         0.        ,  0.        ],
       [ 0.        ,  0.        ,  6.76770166, ...,  0.        ,
         0.        ,  0.        ],
       ...,
       [ 0.        ,  0.        ,  0.        , ...,  0.        ,
         0.        ,  0.        ],
       [ 2.75463212,  0.        ,  0.        , ...,  0.        ,
         0.        ,  0.        ],
       [ 1.37731606,  2.84060202,  0.        , ...,  0.        ,
         0.        ,  0.        ]])

Erstellen Sie dic [word] = vec

words = vocab.tolist()
vecs = TF_IDF.tolist()
temp_dic = {}
vecs_dic = []
for vec in vecs:
    for i in range(len(vec)):
        temp_dic[words[i]] = vec[i] 
    vecs_dic.append(temp_dic)
    temp_dic = {} 
$ len(vecs_dic)
(Anzahl der Dokumente)

$ len(vecs_dic[0])
(Anzahl der Dimensionen des Vektors)

Visualisierung

#Visualisieren Sie das 89. Dokument aus der Dokumentliste
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import sys

wordcloud = WordCloud(background_color='white', width=1024, height=674)
wordcloud.generate_from_frequencies(vecs_dic[88])
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.show()

image.png

Wenn in Word Cloud ein Nullteilungsfehler auftritt

Gelöst durch Hinzufügen kleiner Werte unter Bezugnahme auf Referenz [2]

words = vocab.tolist()
vecs = TF_IDF.tolist()
temp_dic = {}
vecs_dic = []
for vec in vecs:
    for i in range(len(vec)):
        temp_dic[words[i]] = vec[i] + 1e-5 #Verhindern Sie, dass das Element 0 wird
    vecs_dic.append(temp_dic)
    temp_dic = {} 

Erstellen und speichern Sie für jedes Dokument ein Bild

Fügen Sie zum Speichern wordcloud.to_file hinzu und ändern Sie es wie folgt.

i=0
for v in vecs_dic:
  i+=1
  wordcloud = WordCloud(background_color='white', width=1024, height=674)
  wordcloud.generate_from_frequencies(v)
  wordcloud.to_file([PATH] + str(i) + ".png ")

Verweise

[1] https://qiita.com/pma1013/items/d183b4b2504173ba037e [2] https://github.com/amueller/word_cloud/issues/456

Recommended Posts

Visualisieren Sie Schlüsselwörter in Dokumenten mit TF-IDF und Word Cloud
Visualisieren Sie Schlüsselwörter in Dokumenten mit TF-IDF und Word Cloud
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud. [Python]
Visualisieren Sie Schlüsselwörter in Dokumenten mit TF-IDF und Word Cloud
Generieren Sie Word Cloud aus Testfalldaten mit Python3
Jupyter in Cloud9 IDE
Textanalyse, die in 5 Minuten durchgeführt werden kann [Word Cloud]
[Flask & Bootstrap] Visualisiere den Inhalt von Texten mit Word Cloud ~ Lyrics Word Cloud ~
[Flask & Bootstrap] Visualisiere den Inhalt von Texten mit Word Cloud ~ Lyrics Word Cloud ~
Visualisieren Sie Diagramme mit japanisch beschrifteten Kanten in NetworkX und PyGraphviz / Gephi
Umgang mit "Jahren und Monaten" in Python
Text Mining mit Python ② Visualisierung mit Word Cloud
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
[Python] Visualisiere und identifiziere langsame Teile mit pytest
Visualisieren Sie Korona-Infektionsdaten in Tokio mit matplotlib
Erstellen Sie automatisch Wort- und Excel-Berichte mit Python
Visualisieren Sie Daten interaktiv mit TreasureData, Pandas und Jupyter.