今回はMeCabをインストールして日本語のwordcloudを作成します。
MeCabはオープンソースの形態素解析エンジンで
英語のようにスペース区切りの文章ではない日本語でも的確に単語を抽出してくれます。
本検証は以前投稿しているUbuntu20.04で実施しています。
Ubuntu20.04
python 3.9.1
pip 21.0.1
また、MeCabは以下も必要となりますのでインストールされていない場合は
sudo apt install ●●●でインストールしておきましょう。
g++ 9.3.0
iconv 2.31
MeCabのダウンロード
赤枠のダウンロードリンクからMecabと辞書をダウンロードします。
ダウンロードしたMeCab本体と辞書を任意の作業場所に格納します。
MeCabのインストール
MeCab本体を解凍します。
cd ./tmp
tar -xzvf mecab-0.996.tar.gz
解凍すると[mecab-0.996]フォルダが作成されるので移動してMakeFileを作成します。
cd ./mecab-0.996/
./configure
makeします。
make
MeCabをインストールします。
sudo make install
MeCabの辞書のインストール
MeCabの辞書も同様にインストールしていきますが注意点がありますので
解決方法も説明していきます。
MeCabの辞書ファイルを解凍します。
cd ../
tar -xzvf mecab-ipadic-2.7.0-20070801.tar.gz
解凍すると[mecab-ipadic-2.7.0-20070801]フォルダが作成されるので移動して
MakeFileを作成します。(ここではデフォルトで指定される文字コードをutf-8にします)
cd ./mecab-ipadic-2.7.0-20070801/
./configure –with-charset=utf8
makeをそのままやるとエラーになります。。。
/usr/local/libexec/mecab/mecab-dict-index: error while loading shared libraries: libmecab.so.2: cannot open shared object file: No such file or directory
make: *** [Makefile:253: matrix.bin] Error 127
どうも共有ライブラリを認識させてあげる必要があるので以下コマンドを実行します。
sudo ldconfig
makeコマンドを実行してエラーが発生しないことを確認します。
MeCabの辞書をインストールします。
sudo make install
MeCabの動作検証
インストールしたMeCabを試してみます。
mecab
これはテストです。
mecabと入力し、[Enter]を押下すると
文字を入力することができるので任意の文字列を入力し、[Enter]を押下します。
すると上記画面の通り、日本語文章を分解してくれます。
日本語フォントのインストール
まず日本語フォントが環境にインストールされているか確認しましょう。
fc-list
※デフォルトではインストールされていないはずなので
「sudo apt install fontconfig」を実行してください。
今回はIPAフォントをインストールします。
sudo apt install fonts-ipaexfont
もう一度、fc-listを実行してIPAフォントがインストールされたことを確認します。
fc-list | grep “IPA”
PythonでMeCabをインストール
pipでMeCabをインストールします。
pip3 install –user mecab-python3
簡単にテストを実行してみます。
import MeCab
m = MeCab.Tagger()
print(m.parse(“これはテストです。”))
事前に以下もインストールしておきましょう。
pip3 install wordcloud matplotlib
Pythonで日本語のwordcloudを作成する
PythonでもMeCabを利用できるようになったので
いよいよ日本語のwordcloudを作成していきます。
今回はUbuntuなのでデスクトップ環境が必要です。
Xming等で結果を出力させましょう。
Xmingの使い方は以下を参考にしてください。
サンプルコードは以下です。
import os
from os import path
from wordcloud import WordCloud
from MeCab import Tagger
import matplotlib.pyplot as plt
import re
d=path.dirname(file) if “file” in locals() else os.getcwd()
text = open(path.join(d, “test.txt”), encoding=”utf-8″).read()
m = Tagger()
m_text = m.parse(text)
re_m_text = re.sub(“\t.*”,””, m_text)
wordcloud = WordCloud(font_path=”/usr/share/fonts/truetype/fonts-japanese-gothic.ttf”,max_font_size=60).generate(re_m_text)
plt.figure()
plt.imshow(wordcloud, interpolation=”bilinear”)
plt.axis(“off”)
plt.show()
test.txt内の文章は青空文庫にある文章を一部引用したものとなります。
日本語のwordcloudが作成されるか実行してみましょう。
日本語で表示されることを確認しました。
作成されたwordcloudを見て、不要な単語があれば
stopwordsを入れて調整していきましょう。
コメント