前置き
- MeCabにユーザー辞書を登録し、形態素解析を行おうと思いましたがなかなか動かず。
ネットで検索してもWindows関連の情報は古いものしか見つからずでしたので備忘録としてなるべく簡潔に投稿します。 - 参考サイトの内容を実行するだけの部分は割愛させていただきます。
- ライブラリのインストールも割愛しているため、使用するライブラリをインストールしていない場合はインストールをしておいてください。
参考サイト
MeCab本体のインストール
こちらは「参考サイト1」を全て(手順1~15まで)行ってください。
コマンドプロントで実行できる状態まで持っていければ大丈夫です。
単語帳となるCSVを作成
単語帳としてpythonでcsvファイルを作成します。
今回は「あもいはすはす」という単語を作成してみます(めちゃめちゃ適当です。)。
保存先はC:/MeCab_dicts/csv/
を指定しています。
import pandas as pd
user_dict = pd.DataFrame({
'項目名': ['あもいはすはす'],
'左文脈ID': [1285],
'右文脈ID': [1285],
'コスト': [1000],
'品詞': ['カスタム'],
'品詞細分類1': ['カスタム'],
'品詞細分類2': ['*'],
'品詞細分類3': ['*'],
'活用形': ['*'],
'活用型': ['*'],
'原形': ['あもいはすはす'],
'読み': ['アモイハスハス'],
'発音': ['amoihasuhasu']
})
user_dict.to_csv("C:/MeCab_dicts/csv/user_dict.csv", index=False, header=False)
CSVの内容をコンパイル(foo.dicの作成)
foo.dic
ファイルの保存先としてC:/MeCab_dicts/dic/
を作成します。
その後、コマンドプロントで次のコマンドを実行します。
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "C:\MeCab_dicts\dic\foo.dic" -f utf-8 -t utf-8 "C:\MeCab_dicts\csv\user_dict.csv"
説明を加えると次のようになります。お使いの環境に合わせて変更をしてください。
"{mecab-dict-index.exeのパス}" -d "{MeCab\dic\ipadicのパス}" -u "{foo.dicのパス}" -f utf-8 -t utf-8 "{user_dict.csvのパス}"
dicrcへの追加
MeCab\dic\ipadic
の配下にあるdicrc
にfoo.dicのエントリ情報を追加します。
userdic = C:\MeCab_dicts\dic\foo.dic
pythonで動作確認
pythonで次のコードを実行します。パスに注意してください。
import MeCab
mecab = MeCab.Tagger(r"-u C:/MeCab_dicts/dic/foo.dic -d 'C:/Program Files (x86)/MeCab/dic/ipadic'")
print(mecab.parse("あもいはすはすが食べたい"))
「あもいはすはす」なんて言葉は現実に存在しないはずなのでユーザー辞書をしっかり認識できていることが分かります。
Note
やり始めの時にパスの書き方、特にProgram Files
の様に空白があるパスなどの書き方のところで躓いてしまいエラーを沢山出してしまったので皆さんはお気を付けください。