LoginSignup
5
3

More than 5 years have passed since last update.

pythonのWordCloudに、形態素解析を使わずに、手動で空白区切りの日本語テキストを入力する話

Last updated at Posted at 2018-01-19

データに紐づいてる日本語メタデータを形態素解析せずにそのまま使用して、
データ集合の特徴を可視化しようとした話。
また、その時に、単語がうまく認識されなかったと言う話の備忘録。

WordCloudクラスに入力したテキストデータは、
以下のように日本語のメタデータのリストを空白でくっつけたもの。

データ例
data = " ".join(["りんご", "みかん", "ぶどう"])

wordcloudはこちらのライブラリを使用して、
以下のように作成した。

通常のwordcloud作成例
from matplotlib.pyplot import plt
from wordcloud import WordCloud

wc = WordCloud().generate(data)
plt.imshow(wc)
plt.axis("off")

このように日本語テキストを食わせると、
条件は分からないけど、一部の単語間の空白で区切られず、「りんご みかん」のようなまとまりで認識されて、wordcloudが作成されてしまうことがある。
詳細は調査していないので分からないが、ライブラリの該当部分を軽く見る限りでは文字コード周りの問題で、特定の文字の後に空白が入った場合に意図しない挙動をしているのだと思われる。

解決策としては、
collectionsモジュールのCounterとかを使って自分で単語の頻度情報を作成し、
WordCloudクラスのgenerate_from_frequenciesを使用すればよい。

wordcloud作成例(修正版)
from collections import Counter
from matplotlib.pyplot import plt
from wordcloud import WordCloud

words = Counter(data)
wc = WordCloud().generate_from_frequencies(words)
plt.imshow(wc)
plt.axis("off")
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3