見出し画像

Python.03 WordCloudしてみた

連番にする意味…
すぐ脱線してすみません。
Twitterでインフラエンジニアさんが2度と行きたくない現場についてお話しされてたのでスレッドごとワードクラウドしてみました。

WordCloud

出力結果

文中では海沿いが危険とのことでした。東京湾岸のことみたいです。

出典

勝手に借りてすみません。
ここのスレッドをコピペでテキスト保存して、result.txtを作りました。

Code

日本語が使いたいのですが、日本語は英語みたく単語で分かれていないので、単語単位に分解するために、Janome をインストール

!pip install janome

result.txtと同じ階層にPythonファイルを作ってください。画像ファイルも同じフォルダに吐き出すようにします。

from janome.tokenizer import Tokenizer
from wordcloud import WordCloud         # wordcloudを宣言
import matplotlib.pyplot as plt
 
text_file = open("result.txt")          # result.txtを読み込み
full_text = text_file.read()
full_text= full_text.replace("\n","")   # 分析のため改行を削除して一文に
 
print(full_text)                        # 作業結果を出力します
t = Tokenizer()
tokens = t.tokenize(full_text)
 
# 単語単位に分割、名詞のみ抜き出し、words_Betuに保存
word_list=[]
for token in tokens:
    word = token.surface
    PartOfSpeech  = token.part_of_speech.split(',')[0]
    PartOfSpeech2 = token.part_of_speech.split(',')[1]
     
    if PartOfSpeech == "名詞":
        if (PartOfSpeech2 != "非自立") and (PartOfSpeech2 != "代名詞") and (PartOfSpeech2 != "数"):
            word_list.append(word)

words_Betu=" ".join(word_list)
print(words_Betu)  

# 表示から抜きたい語句を指定
stop_words = ['さん','@','FrxYqXRRF','jQ','時間','返信','先','あと','会話']  

# ロカール上のフォントパスを指定(Mac)
fpath = '/Library/Fonts/MS Gothic.ttf'          

wordcloud = WordCloud(
    font_path=fpath,
    width=900, height=600,
    background_color="white",
    stopwords=set(stop_words),
    max_words=200,
    min_font_size=4,
    collocations = False
    ).generate(words_Betu)
 
plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("WordCloud.png")
plt.show()

これはもうめちゃくちゃセンスある人が公開してくれてたコードを丸ごと借りてます。
今回触ったのは、抜く単語の指定のところと見せ方の数値をちょこっといじったくらいです。

# 表示から抜きたい語句を指定
stop_words = ['さん','@','FrxYqXRRF','jQ','時間','返信','先','あと','会話']

↑Twitterなので@、スレ主さんへの返信、時間は繰り返し表示されるのでそこを表示から抜いています。

コピペで色々作れるので楽しいですね。
気になったら試してみてください。
今日も読んでいただきありがとうございました。


よろしければサポートお願いいたします。いただいたサポートは勉強のための書籍購入費に使う予定です。