2022年3月21日月曜日

Pythonで新語に対応したmecab-unidic-NEologdを使う

PythonとMeCabでUniDicを使うでは、MeCabとUniDicで形態素解析して、IPA辞書との結果を比較してみた。UniDicにしてもIPA辞書にしても、よく使われる固有名詞には対応しているものの、世の中のさまざまな固有名詞には対応しきれない。ネット資源をもとにIPA辞書をカスタマイズしたmecab-ipadic-NEologdなら、最近登場した新語にも対応できる(mecab-ipadic-NEologdで形態素解析を新語に対応させる)。UniDicにも同様のmecab-unidic-NEologdがあるので、今回はmecab-unidic-NEologdをPythonで使ってみる。


環境

WSL2(Ubuntu20.04)。

$ lsb_release -dr
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
$ python3 -V
Python 3.8.10
$ git version
git version 2.25.1


MeCabのインストール

IPA辞書やUniDicを使うだけならMeCabのPythonラッパーであるmecab-python3をpipでインストールすればよかったが、NEologdを使うためにはMeCabをインストールする。MeCabのインストールはRaspberry PiのPython3でMecabを使うを参照。


mecab-unidic-NEologdのインストール

gitでリポジトリをクローンして、インストールスクリプトを実行する。

$ git clone --depth 1 https://github.com/neologd/mecab-unidic-neologd.git
$ cd mecab-unidic-neologd
$ ./bin/install-mecab-unidic-neologd -n

インストールできたら、mecab-unidic-NEologdのインストール先ディレクトリを確認しておく。

$ echo `mecab-config --dicdir`"/mecab-unidic-neologd"
/usr/local/lib/mecab/dic/mecab-unidic-neologd


mecab-unidic-NEologdで形態素解析

準備ができたのでmecab-unidic-NEologdで形態素解析してみる。dオプションでmecab-unidic-NEologdのインストールディレクトリを指定する。

import MeCab

tagger = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-unidic-neologd')
text = '青いカザミドリがクルクル回る'
res = tagger.parse(text)
print(res)

上記コードを実行すると次のような結果になる。書字形出現形、発音形出現形、語彙素読み、語彙素、品詞(ハイフン区切り)、活用型、活用形が出力される。この出力項目のフォーマットは、/usr/local/lib/mecab/dic/mecab-unidic-neologd/dicrcで指定されている。

青い    アオイ  アオイ  青い    形容詞-一般     形容詞  連体形-一般

カザミ  カザミ  カザミ  Kazami  名詞-固有名詞-一般

ドリ    ドリ    トリ    鳥      名詞-普通名詞-一般

が      ガ      ガ      が      助詞-格助詞

クルクル        クルクル        クルクル        クルクル        名詞-固有名詞-一般

回る    マワル  マワル  回る    動詞-非自立可能 五段-ラ行       終止形-一般

EOS

以下はUniDicで同じ文字列を形態素解析した結果で、mecab-unidic-NEologdの結果とけっこう違う。またmecab-unidic-NEologdのデフォルトでは、UniDicに比べて取得できる項目が少なくなっている。

青い    形容詞,一般,,,形容詞,連体形-一般,アオイ,青い,青い,アオイ,青い,アオイ,和,"","","","","","",相,アオイ,アオイ,アオイ,アオイ,"2","C1","",73950814151361,269

カザミドリ      名詞,普通名詞,一般,,,

が      助詞,格助詞,,,,,ガ,が,が,ガ,が,ガ,和,"","","","","","",格助,ガ,ガ,ガ,ガ,"","動詞%F2@0,名詞%F1","",2168520431510016,7889

クルクル        副詞,,,,,,クルクル,くるくる,クルクル,クルクル,クルクル,クルクル,和,"","","","","","",相,クルクル,クルクル,クルクル,クルクル,"1","","",2892273994048000,10522

回る    動詞,非自立可能,,,五段-ラ行,連体形-一般,マワル,回る,回る,マワル,回る,マワル,和,"","","","","","",用,マワル,マワル,マワル,マワル,"0","C2","",9928873533907649,36121

EOS

次に、mecab-unidic-NEologdの効果がわかるように「カールおじさんインスタ映え」を形態素解析してみる。以下はmecab-unidic-NEologdを使用した結果。

カールおじさん  カールオジサン  カールオジサン  カールおじさん  名詞-固有名詞-一般

インスタ映え    インスタハエ    インスタハエ    インスタ映え    名詞-固有名詞-一般

EOS

固有名詞と「インスタ映え」とがちゃんと形態素解析できている。対して以下がUniDicの結果。固有名詞などが形態素として認識されていない。

カール  名詞,固有名詞,人名,一般,,,カール,カール-Karl,カール,カール,カール,カール,固,"","","","","","",人名,カール,カール,カール,カール,"1","","",2166596286161408,7882

おじ    名詞,普通名詞,一般,,,,オジ,伯父,おじ,オジ,おじ,オジ,和,"","","","","","",体,オジ,オジ,オジ,オジ,"0","C4","",1362303530443264,4956

さん    接尾辞,名詞的,一般,,,,サン,さん,さん,サン,さん,サン,和,"","","","","","",接尾体,サン,サン,サン,サン,"","C4","",3984363884782080,14495

インスタ        名詞,固有名詞,一般,,,,インスタ,インスタ,インスタ,インスタ,インスタ,インスタ,固,"","","","","","",固有名,インスタ,インスタ,インスタ,インスタ,"","","",92251508095197696,335609

映え    名詞,普通名詞,一般,,,,ハエ,映え,映え,バエ,映え,バエ,和,"ハ濁","濁音形","","","","",体,バエ,バエ,バエ,ハエ,"2","C3","",17388235261100544,63258

EOS


0 件のコメント:

コメントを投稿