0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordCloudで日本語文字が豆腐になる問題を解決する

Last updated at Posted at 2024-04-09

TL;DR

WordCloudで日本語が豆腐になる場合には WordCloud(font_path="/path/to/my-font.ttf") というように font_path を指定する。

問題

WordCloudを使用して日本語の単語をプロットしようとすると、豆腐(文字化け状態)になることがある。作り込んだ環境では特に意識せずとも正しく表示されるかもしれないが、Google Colab利用する場合など新たに立ち上げた環境においてはよく発生するトラブルである。

たとえばColab上でこのコードを実行すると、日本語の文字は豆腐になる。

from wordcloud import WordCloud

wordcloud = WordCloud().generate(" ".join(["hoge", "fuga", "piyo", "ほげ", "ふが", "ぴよ"])

wc_bad.png

こういう場合のよくあるプラクティスは japanize_matplotlib を使うことや plt.rcParams['font.family'] を設定することだが、これではタイトルや軸ラベルは日本語になってもWordCloudでプロットされる単語は豆腐になってしまう。

ならどうするか?

WordCloud オブジェクトを作成する際 font_path 引数に使用するフォントファイルのパスを与えてやればいい。

具体的にはこうする。

from wordcloud import WordCloud

wordcloud = WordCloud(
    font_path="NotoSansJP-Regular.ttf"
).generate(" ".join(["hoge", "fuga", "piyo", "ほげ", "ふが", "ぴよ"])

wc_good.png

この例だとカレントディレクトリに直接フォントファイルを置いてしまっているが、環境によって適切なフォントファイルの置き場があるので、適宜パスは書き換えると良い。

ちなみにサンプルで利用したNoto Sans JPはここからダウンロードできる。

ふりかえってみると単純な話だけど、原因がどこにあるのかを特定するまでが結構大変な問題だった。フォント周りの設定なのか、パッケージの問題なのか、色々と試して時間を使ってしまった。またいつか突発的にWordCloudを使って困ることがあると思うので備忘録代わりに残しておく。


本記事は https://tech-blog.yayoi-kk.co.jp/entry/2024/04/09/110000 と同じ内容です。
アクセス解析を目的としてマルチポストしています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?