WordCloudというテキストの傾向を可視化できるツールがあります。
入力されるテキストの中から、単語の出現頻度等を調べ、頻度に応じて文字の大きさや色などを変更して、一枚の画像にして表示することができます。
前回、自分で用意したテキストファイルからWordCloudを使ってテキストを分析してみる方法について紹介を行いました。
しかしながら、WordCloudで分析を行う際に、あまり表示されてほしくないワードが表示されてしまうことがあります。
例えば、学会の傾向を掴むために、学会で発表される論文リストをWordCloudに突っ込んだ際に、例えば「Based」や「Using」のような、出現頻度は多いけれども、傾向を掴む上で不要なワードが表示されてしまうことがあります。
プレゼンテーションなどで使う場合にも、このようなワードが入っているのは非常に見栄えが悪いです。
そこで、このようなワードを除外できるプログラムを本日紹介します。
WordCloudで特定のワードを除外して結果を出力するプログラム(Python)
テストデータとして、前回同様、今回はコンピュータビジョンのトップカンファレンスであるCVPR2021のAccepted paperのリストを入力してみました。以下にテキストデータにしたものを用意したので、テストしたい方は試してみてください。
早速、以下にソースコードを掲載します。ポイントは5行目のstop_wordsで、stop_wordsの文字配列の中に入れたワードは表示されなくなります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from wordcloud import WordCloud
import matplotlib.pyplot as plt
stop_words = ["based", "using", "via", "for", "with", "on", "in", "of", "a", "and", "the", "to", "from", "by", "method", "non", "an", "toward","towards"]
text = open("test.txt",encoding='utf-8').read()
wordcloud = WordCloud(width=1920, height=1080, max_words=50,background_color="black", stopwords=stop_words, max_font_size=250).generate(text)
wordcloud.to_file("word_cloud_result.png")
plt.imshow(wordcloud)
実行すると以下のような結果が得られます。指定したワードが含まれていないことが確認できると思います。

まとめ
本日はWordCloudを用いて、特定のワードを除外しながら出力を行う方法を確認してみました。
簡単にテキストの傾向を分析したり、プレゼンテーションに華を添える際に、是非試してみてください。