🔖

Jagger 形態素解析向けに mecab-unidic-nelogdn で辞書をつくるメモ

2024/03/12に公開

背景

高速日本語形態素解析 jagger を動かすメモ 
https://zenn.dev/syoyo/articles/8381ddef921a5a

で, KWDLC 以外の辞書つくりたい(学習したい)

(日本語)形態素解析用辞書いくつかあるけどなにがええんじゃ...

2022年最新版 Python + mecab の周辺事情
https://techtekt.persol-career.co.jp/entry/tech/220614_01

2024/03 時点では, ここから進化はないようです.
なので unidic がメンテ続いていていい気がしますが, コンパイルされた(?)バイナリの辞書しか配布されていません

語彙集 csv がほしいのに...
(mecab ソースコード読んで語彙 dump するほうほう見つけるのでもいいかもですが, めんどい...)
full のほうに lex.csv で語彙集がありました! しかしとりあえずはタイトル通り mecab-unidic-neologdn を使うことにします.

アップデートは止まっていますが, mecab-unidic-neologdn を試します!

https://github.com/neologd/mecab-unidic-neologd

mecab-unidic-neologdn


(株)姫野工務店,4786,4786,4065,名詞,固有名詞,一般,*,*,*,カブシキガイシャヒメノコウムテン,姫野工務店,(株)姫野工務店,カブシキガイシャヒメノコームテン,(株)姫野工務店,カブシキガイシャヒメノコームテン,固,*,*,*,*
(株)姫野精工所,4786,4786,4065,名詞,固有名詞,一般,*,*,*,カブシキガイシャヒメノキヨシコウショ,姫野精工所,(株)姫野精工所,カブシキガイシャヒメノキヨシコウショ,(株)姫野精工所,カブシキガイシャヒメノキヨシコウショ,固,*,*,*,*
(株)孝松工務店,4786,4786,4065,名詞,固有名詞,一般,*,*,*,カブシキガイシャコウマツコウムテン,孝松工務店,(株)孝松工務店,カブシキガイシャコーマツコームテン,(株)孝松工務店,カブシキガイシャコーマツコームテン,固,*,*,*,*

な感じで, 会社名とかあるのもいいですね.

語彙数は 338 万ありました.

3384963   4470301 832984199 mecab-unidic-user-dict-seed.20200910.csv

ファイルサイズは 800MB くらいです.

train する

特に気を付けることはないでしょう.
以下のようにしてぺろっと train できます.
(train.JAG は品詞付与されたデータ(e.g. KWDLC. オリジナルの jagger での train 参照))

./src/train_jagger -d model/mecab-unidic-neologdn/mecab-unidic-user-dict-seed.20200910.csv model/mecab-unidic-neologdn/train.JAG > model/mecab-unidic-neologdn/patterns
./src/jagger -m model/mecab-unidic-neologdn/patterns

メモリ消費は 8 GB くらいでした.

生成された辞書は 700 MB くらいでした.

形態素解析する

吾輩は猫である。名前はまだない。
吾輩は猫である  名詞,固有名詞,人名,一般,*,*,シャムマディラジュ,シャム・マディラジュ,シャムマディラジュ,シャムマディラジュ,シャムマディラジュ,シャムマディラジュ,固,*,*,*,*
。      特殊,句点,*,*,。,。,*
名前    名詞,普通名詞,*,*,名前,なまえ,*
は      助詞,副助詞,*,*,は,は,*
まだ    副詞,*,*,*,まだ,まだ,*
ない    形容詞,*,イ形容詞アウオ段,基本形,ない,ない,*
。      特殊,句点,*,*,。,。,*
EOS

「吾輩は猫である」が固有名詞として解釈されました. 最長一致ベースなのでこうなりますね.

mecab-jumandic では英単語はないのでうまく形態素解析できませんでしたが, unidic ではいくらか登録されているようで, hello, I am legend. がある程度分解できました.

hello   名詞,固有名詞,一般,*,*,*,ハロー,Hello,hello,ハロー,hello,ハロー,固,*,*,*,*
, I     特殊,読点,*,*,*,*,*
am      名詞,固有名詞,一般,*,*,*,アム,AM,am,アム,am,アム,固,*,*,*,*
        名詞,普通名詞,*,*,*,*,*
legend  名詞,固有名詞,一般,*,*,*,レジェンド,LEGEND,legend,レジェンド,legend,レジェンド,固,*,*,*,*
.       名詞,普通名詞,*,*,*,*,*
EOS

, I で分解されててちょっとへんですが...

. が句点とはなりませんでしたが, しょうがないですかね.

問題点

名詞の feature(読みとか) がおかしいです.

吾輩は猫である  名詞,固有名詞,人名,一般,*,*,シャムマディラジュ,シャム・マディラジュ,シャムマディラジュ,シャムマディラジュ,シャムマディラジュ,シャムマディラジュ,固,*,*,*,*
10日放送の「中居正広のミになる図書館」(テレビ朝日系)で、SMAPの中居正広が、篠原信一の過去の勘違いを明かす一幕があった。
10日    名詞,固有名詞,一般,*,*,*,トオカ,10日,10日,トオカ,10日,トオカ,固,*,*,*,*
放送    名詞,サ変名詞,*,*,放送,ほうそう,*
の      助詞,格助詞,*,*,の,の,*
「      特殊,括弧始,*,*,「,「,*
中居正広のミになる図書館        名詞,固有名詞,人名,一般,*,*,ウォルターラングトリオエルフ,ウォルター・ラング・トリオ‘エルフ',ウォルター・ラング・トリオ‘エルフ’,ウォルターラングトリオエルフ,ウォルター・ラング・トリオ‘エルフ’,ウォルターラングトリオエルフ,固,*,*,*,*
」      特殊,括弧終,*,*,」,」,*
(      特殊,括弧始,*,*,(,(,*
テレビ朝日      名詞,固有名詞,一般,*,*,*,テレビアサヒ,テレビ朝日,テレビ朝日,テレビアサヒ,テレビ朝日,テレビアサヒ,固,*,*,*,*
系      名詞,普通名詞,*,*,系,けい,*
)      特殊,括弧終,*,*,),),*
で      助詞,格助詞,*,*,で,で,*
、      特殊,読点,*,*,、,、,*
SMAP    名詞,固有名詞,一般,*,*,*,スマップ,SMAP,SMAP,スマップ,SMAP,スマップ,固,*,*,*,*
の      助詞,接続助詞,*,*,の,の,*
中居正広        名詞,固有名詞,人名,一般,*,*,ウォルターラサリー,ウォルター・ラサリー,ウォルター・ラサリー,ウォルターラサリー,ウォルター・ラサリー,ウォ ルターラサリー,固,*,*,*,*
が      助詞,接続助詞,*,*,が,が,*
、      特殊,読点,*,*,、,、,*
篠原信一        名詞,固有名詞,一般,*,*,*,カーンプル,カーンプル,カーンプル,カーンプル,カーンプル,カーンプル,固,*,*,*,*
の      助詞,接続助詞,*,*,の,の,*
過去    名詞,普通名詞,*,*,過去,かこ,*
の      助詞,接続助詞,*,*,の,の,*
勘違い  名詞,サ変名詞,*,*,勘違い,かんちがい,*
を      助詞,格助詞,*,*,を,を,*
明      名詞,固有名詞,人名,一般,*,*,シバタアンドアスナ,SHIBATA&ASUNA,SHIBATA&ASUNA,シバタアンドアスナ,SHIBATA&ASUNA,シバタアンドアスナ,固,*,*,*,*
かす    名詞,固有名詞,一般,*,*,*,カス,かす,かす,カス,かす,カス,固,*,*,*,*
一      名詞,数詞,*,*,一,いち,*
幕      名詞,固有名詞,一般,*,*,*,サンビャクニジュウキロ,320キロ,320キロ,サンビャクニジュウキロ,320キロ,サンビャクニジュウキロ,固,*,*,*,*
が      助詞,格助詞,*,*,が,が,*
あった  動詞,*,子音動詞ラ行,タ形,ある,あった,*
。      特殊,句点,*,*,。,。,*
EOS

あとは, 「明かす」が「明」「かす」で両方名詞でちょっとへん.

jagger では, surface でまずマッチングを取り, その後 feature 文字列の一致探索みたいなことをしているのですが, いくつか語彙とかにサイズ制限がある感じなので, そのあたりでおかしくなるバグに引っかかったと思われます...

大まかな品詞がわかればよい用途では問題ないと思われます...

あとは, POS-tagged 教師データが KWDLC だと弱い気がします.
人手で品詞付与作業はめんどいので, Wikipedia の品質高い記事を抜き出し, Sudachi などで品詞付与して教師データを作るといいかもしれません.

TODO

  • unidic から語彙集を抜き出す方法を調べる. full のパッケージに lex.csv でありました.
  • 名詞の feature がバグる原因を調べる
  • 品詞付与教師データを拡充する

Discussion