windowsでMeCabの辞書に単語を追加する方法です。正規のやり方ではないと思いますが、ネット上の方法では上手く出来なかったので自分なりに見つけた方法を記しました。
MeCabのインストール
1.pythonのライブラリインストール
pip install mecab-python3
なお、conda install
には対応しておらず。
2.Windows版をインストール。ここから。
文字コードはUTF-8
を選択する。
ユーザー辞書の作成
- Windows版MeCabのデフォルトの辞書を探す。
例:C:\Program Files (x86)\MeCab\dic\ipadic
- 単語情報が入っているcsvファイルを探す。
- csvファイルを適当な所にコピーして末尾に単語を追加する。
(そのままだと読み取り専用で編集できないため) - 元のファイルと置き換える。管理者権限が必要。
- スタートメニュー>
MeCab
フォルダからRecompile UTF-8 Dictionary
を実行する。 - 更新されたどこかのフォルダに保存されているので探す。
例:C:\Users\***\AppData\Local\VirtualStore\Program Files (x86)\MeCab\dic\ipadic
- 見つけたら以下の4つのファイル(中身はたぶん辞書のデータ)を任意のフォルダにコピペする。
char.bin
matrix.bin
sys.bin
unk.bin
-
dicrc
をデフォルト辞書のディレクトリからコピペする。
完了
※上記 7.8.において5つのファイルをコピペしたフォルダが、後にpythonから辞書の場所として指定するフォルダである。
pythonから実行する
import MeCab
tagger = MeCab.Tagger('-r nul -d C:/Users/***/Documents/python/[作成した辞書の場所]')
-r nul
は無くても大丈夫で、-d
は必要。
ネット上の情報では、ユーザー辞書の指定に-u
を用いているが、上手くいかず。
代わりに、デフォルトの辞書に指定単語を追加する形で対応している。このため上記でリコンパイルを行っている。
コード全体
テキストから名詞、動詞(原形)、形容詞(原形)を取り出すコードの例。
def mecab_text(text):
tagger = MeCab.Tagger('-r nul -d C:/Users/***/Documents/python/[作成した辞書の場所]')
node = tagger.parseToNode(text)
#形態素解析した結果を格納するリスト
wordlist = []
while node:
#名詞のみリストに格納する
if node.feature.split(',')[0] == '名詞':
wordlist.append(node.surface)
#他の品詞を取得したければ、elifで追加する
elif node.feature.split(',')[0] == '動詞':
wordlist.append(node.feature.split(',')[6])
elif node.feature.split(',')[0] == '形容詞':
wordlist.append(node.feature.split(',')[6])
node = node.next
wordlist = [w for w in wordlist if w not in stopwords]
return wordlist
stopwords =["こと","お","これ","a","b","c","%","以上","もの",
"する","もの","とも","ある","よる","的","[","]",
"さん"]