MeCabによる形態素解析で、固有名詞や新語などを単語として処理させたい場合があって、そういうときにはMeCabで使う辞書にその語を登録する。今回は、MeCabのデフォルト辞書にない固有名詞を登録する手順をまとめておく。MeCabの辞書にはシステム辞書とユーザー辞書があるが、ここではユーザー辞書を作成して単語を追加する。
Windows10のWSL(Ubuntu 18.04)。
MeCabでの単語の追加方法はMeCab:単語の追加方法に説明がある。追加する単語についての情報を記述したcsvから辞書を作成するが、追加する単語の他に必要になるのが左文脈ID、右文脈ID、コスト。それぞれ上記サイトで次のように説明されている。
追加する単語は、以下のようなフォーマットでcsvに追加する。
品詞、原型などはMeCabで形態素解析した結果として表示される。
ちなみに、左文脈ID、右文脈ID、コストもコマンドで確認できる。
単語登録用のcsvを作成する。登録する語は「ふんわり名人」と「うまい棒」。それぞれMeCabで形態素解析すると以下のように分割されてしまう。
単語登録用csvとして次のようなsnack.csvを作成した。左文脈ID、右文脈ID、コストは自動付与させるのでブランクのまま。登録する単語は名詞なので活用型と活用形は「*」にしておく。
用意したcsvから辞書を作成する。まずはコストの自動推定に必要なモデルファイルをダウンロードする。MeCab:単語の追加方法の「コストの自動推定機能」にリンクがあるので、mecab-ipadic-2.7.0-20070801.model.bz2をダウンロードする。
ダウンロードしたモデルファイルの文字コードはEUC-JPなので、解凍したら辞書の文字コードに合わせるためにUTF-8に変換してmecab-ipadic-2.7.0-20070801.model.utf8というファイル名で保存しておく。
さらに、モデルファイルの内容を以下のように変更。
csvをコンパイルして辞書を作成するためにmecab-dict-indexを使う。ファイルがあるディレクトリは以下のコマンドで確認できる。
続いてシステム辞書のパスも確認しておく。
以下のコマンドで、snack.csvからsnack.dicというファイル名の辞書(文字コードはUTF-8)を作成する。
作成した辞書をMeCabのユーザー辞書として設定し、登録した単語が形態素解析で認識されているか確認する。
作成した辞書を辞書ディレクトリにコピーする。
MeCab設定ファイル(mecabrc)のあるディレクトリを確認する。
/etc/mecabrcのuserdicに作成した辞書へのパスを設定する。以下のように追記する。
ユーザー辞書は複数使用可能なので、既存のユーザー辞書に追加する場合は以下のようにカンマ区切りで追加する。
追加した単語を形態素解析してみると、「ふんわり名人」「うまい棒」ともに単語として認識されている。
左文脈ID、右文脈ID、コストも確認してみる。ちゃんと自動付与されている。
環境
Windows10のWSL(Ubuntu 18.04)。
単語の追加方法
MeCabでの単語の追加方法はMeCab:単語の追加方法に説明がある。追加する単語についての情報を記述したcsvから辞書を作成するが、追加する単語の他に必要になるのが左文脈ID、右文脈ID、コスト。それぞれ上記サイトで次のように説明されている。
左文脈IDは, その単語を左から見たときの内部状態IDです. 通常システム 辞書と同一場所にある left-id.def から該当する ID を選択します. 空にしておくと mecab-dict-index が自動的に ID を付与します.
右文脈IDは, その単語を右から見たときの内部状態IDです. 通常システム 辞書と同一場所にある right-id.def から該当する ID を選択します. 空にしておくと, mecab-dict-index が自動的に ID を付与します.
コストは,その単語がどれだけ出現しやすいかを示しています. 小さいほど, 出現しやすいという意味になります. 似たような単語と 同じスコアを割り振り, その単位で切り出せない場合は, 徐々に小さくしていけばいいと思います.このうち左文脈IDと右文脈IDは空でも自動的に付与されるらしいので省略できる。残りのコストについては自動推定する方法があるので、今回はその方法を使う。
追加する単語を記述するcsvフォーマット
追加する単語は、以下のようなフォーマットでcsvに追加する。
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
品詞、原型などはMeCabで形態素解析した結果として表示される。
ちなみに、左文脈ID、右文脈ID、コストもコマンドで確認できる。
単語登録用のcsv作成
単語登録用のcsvを作成する。登録する語は「ふんわり名人」と「うまい棒」。それぞれMeCabで形態素解析すると以下のように分割されてしまう。
単語登録用csvとして次のようなsnack.csvを作成した。左文脈ID、右文脈ID、コストは自動付与させるのでブランクのまま。登録する単語は名詞なので活用型と活用形は「*」にしておく。
辞書の作成
用意したcsvから辞書を作成する。まずはコストの自動推定に必要なモデルファイルをダウンロードする。MeCab:単語の追加方法の「コストの自動推定機能」にリンクがあるので、mecab-ipadic-2.7.0-20070801.model.bz2をダウンロードする。
ダウンロードしたモデルファイルの文字コードはEUC-JPなので、解凍したら辞書の文字コードに合わせるためにUTF-8に変換してmecab-ipadic-2.7.0-20070801.model.utf8というファイル名で保存しておく。
さらに、モデルファイルの内容を以下のように変更。
csvをコンパイルして辞書を作成するためにmecab-dict-indexを使う。ファイルがあるディレクトリは以下のコマンドで確認できる。
続いてシステム辞書のパスも確認しておく。
以下のコマンドで、snack.csvからsnack.dicというファイル名の辞書(文字コードはUTF-8)を作成する。
作成した辞書でMeCabを使う
作成した辞書をMeCabのユーザー辞書として設定し、登録した単語が形態素解析で認識されているか確認する。
作成した辞書を辞書ディレクトリにコピーする。
MeCab設定ファイル(mecabrc)のあるディレクトリを確認する。
/etc/mecabrcのuserdicに作成した辞書へのパスを設定する。以下のように追記する。
ユーザー辞書は複数使用可能なので、既存のユーザー辞書に追加する場合は以下のようにカンマ区切りで追加する。
追加した単語を形態素解析してみると、「ふんわり名人」「うまい棒」ともに単語として認識されている。
左文脈ID、右文脈ID、コストも確認してみる。ちゃんと自動付与されている。
0 件のコメント:
コメントを投稿