注目キーワード
  1. Python
  2. コンペ

WordCloudでIPAフォントを使う方法: エラー解決から意外な結末まで

WordCloudについて学習していた際に、サンプルコードを実行したところエラーが発生しました。その解決方法を共有します。

1.目的のコード

以下がそのサンプルコードです。

なお、読み込み対象としているテキストは安倍元首相のツイートの内容を加工したものですが、ここではその過程は主題ではないので省略します。ご自身のデータに置き換えて試してください。
https://www.kaggle.com/team-ai/shinzo-abe-japanese-prime-minister-twitter-nlp

【サンプルコード】

import MeCab
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# テキストファイルを読み込みます
try:
    with open('abe.txt') as f:
        # ファイルの内容を全て読み込みます
        text = f.read()  
except FileNotFoundError:
    # ファイルが見つからない場合はエラーメッセージを表示してプログラムを終了します
    print("ファイルが見つかりません")
    exit()

# MeCabで形態素解析を行うための設定をします
tagger = MeCab.Tagger("-Ochasen")

# テキストを形態素解析して結果をnodeに保存します
node = tagger.parseToNode(text)

# 形態素解析の結果を元に、名詞、形容詞、形容動詞だけを抽出してwordに保存します
word = ''
while node:    
    hinshi = node.feature.split(",")[0]
    if hinshi in ['名詞','形容詞','形容動詞']:
        origin = node.surface
        word = word + " " + origin
    node = node.next

<span class="marker-thickYellow"># WordCloudのインスタンスを作成します
wordcloud = WordCloud(background_color="white",
                      font_path="ipag.ttc",
                      width=600,
                      height=400,
                      min_font_size=10)
# 抽出した単語からワードクラウドを生成します
wordcloud.generate(word)

# ワードクラウドを表示します
plt.imshow(wordcloud)
plt.show()
</span>

形態素解析を元に名詞、形容詞、形容動詞だけを抽出した後、WordCloud(黄色マーカー部分)を試したかったというのが元々の始まりでした。

なお、wordcloudライブラリは初期では入っていないので初めて使う場合はpip install する必要があります。

2.oserrorの発生

まず以下のエラーが発生しました。

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Cell In[15], line 36
     30 wordcloud = WordCloud(background_color="white",
     31                       font_path="ipag.ttc",
     32                       width=600,
     33                       height=400,
     34                       min_font_size=10)
     35 # ワードクラウドの作成
---> 36 wordcloud.generate(word)
     38 # ワードクラウドの表示
     39 plt.imshow(wordcloud)

~中略~

OSError: cannot open resource

エラー内容からはどうやら指定のフォントが存在しないとのことのようです。

インスタンス作成時にしている「font_path="ipag.ttc"」のipag.ttcが存在しないことが原因のようですね。

調べてみるとどうやらIPAフォントは別途ダウンロードが必要な気配。

文字情報技術促進協議会のページからダウンロードできるようです。

3.IPAexゴシックのダウンロードとインストール

IPAex明朝とIPAexゴシック、あるいはその両方のパックがインストールできるようですが、ゴシックしか使わない気がしたのでIPAexゴシックをダウンロードしました。

なお、OSはWindows10です。

ダウンロード→解凍後、「ipaexg.ttf」のファイルを右クリックすると以下のメニューが出ます。

ダウンロード→解凍後、「ipaexg.ttf」のファイルを右クリックすると以下のメニューが出ます。

こちらをプレビューしたところ以下の文字イメージが確認できます。

個人的にはWordCloudのイメージとして合っていたので、上の「インストール」ボタンからこのままインストールしました。

4.フォルダの確認と指定

1のコードのフォント指定を「font_path=”ipaexg.ttf”」とファイル名を変えて実行しましたが、再度同じエラーが出ました。

ただ、ファイル指定の際にフォルダを指定する必要があるのは想像がつきます。

そこでインストールしたフォントはどこにあるのか?と探したら、「C:\Windows\Fonts」の下に格納されているたくさんのフォントに交じって存在していました。

よってC:\Windows\Fonts\ipaexg.ttfと指定すれば完了かと思いきや、実はインストールしたフォントは別フォルダにあるものをリンクしているだけでした。

よって以下のようにパスを変えました。

# インスタンス作成
wordcloud = WordCloud(background_color="white",
                      <span class="marker-thickYellow">font_path=r"C:\USERS\~~~\APPDATA\LOCAL\MICROSOFT\WINDOWS\FONTS\IPAEXG.TTF",</span>
                      width=600,
                      height=400,
                      min_font_size=10)
~~~にはご自身のパスを入れてください。またパスの先頭にrを付けないとバックスラッシュの関係で失敗することが多いと思います。

5.成功と意外な結末

できました!これはなかなか感慨深いですね。

と、ここまで試行錯誤して実現しましたが、ふと「元々Windowsにインストールされているフォントでいいのでは?」と思いました。

# インスタンス作成
wordcloud = WordCloud(background_color="white",
                      <span class="marker-thickYellow">font_path=r"C:\Windows\Fonts\MSGOTHIC.TTC",</span>
                      width=600,
                      height=400,
                      min_font_size=10)

もともとインストールされているフォントについては、フォルダはデフォルトのWindowsフォントフォルダ(C:\Windows\Fonts)でOKです。ファイルは「MS Pゴシック標準」を指定しました。

まったく問題なく表示されました。

よってIPAの文字がどうしても使いたい人以外はインストール済のフォントを使う方が手間が少ないと思います。

以上がWordCloudでIPAフォントを使用する方法についてのガイドでした。この情報が皆さんの問題解決に役立つことを願っています。

最新情報をチェックしよう!