Saturday,September 10

よみがな自動(じどう)処理(しょり)への(みち)【8】1(にち)にして()らず (3 photos)

いくつものヤマを()え、(ぜん)自動(じどう)よみがな処理(しょり)まであともう(すこ)し。
いよいよ最後(さいご)のヤマです。


最後(さいご)のヤマ「1(にち)にして()らず」

漢字(かんじ)によみがなをうつ【後編(こうへん)」 でも()りあげましたが、横書(よこが)特有(とくゆう)()(かた)をするユニークな文字(もじ)(れつ)がいくつかあります。「1日(ついたち)」=「ついたち」「2日(ふつか)」=「ふつか」・・・といった日付(ひづけ)()(かた)は、MeCabの形態素(けいたいそ)解析(かいせき)対応(たいおう)していないのです。

デフォルトの状態(じょうたい)でMeCabの辞書(じしょ)には「1日(ついたち)」の2文字(もじ)で「ついたち」とする()(かた)登録(とうろく)されていません。「1日(ついたち)」を形態素(けいたいそ)解析(かいせき)すると、「1」と「(にち)」に分詞(ぶんし)()けてしまいます。これはプログラム処理(しょり)において大変(たいへん)具合(ぐあい)(わる)いんです。

したがって、MeCabの辞書(じしょ)に「1日(ついたち)」といった日付(ひづけ)名詞(めいし)追加(ついか)することにします。

Windows7環境(かんきょう)でMeCabの辞書(じしょ)単語(たんご)登録(とうろく)をする方法(ほうほう)

Windows7環境(かんきょう)において、MeCabの辞書(じしょ)はデフォルトインストールでは「C:\Program Files (x86)\MeCab\dic\ipadic」以下(いか)にあるcsvファイル(ぐん)相当(そうとう)します。

新規(しんき)単語(たんご)登録(とうろく)する場合(ばあい)は、このディレクトリに適当(てきとう)名前(なまえ)をつけたcsvファイルをつくって、登録(とうろく)したい単語(たんご)記述(きじゅつ)したうえで辞書(じしょ)のリコンパイルを(とお)せば単語(たんご)登録(とうろく)できます。

()をつけておきたいことは、Windows(よう)のMeCabのcsv辞書(じしょ)文字(もじ)コードはShift-JISで()かれていることです。
作成(さくせい)したcsvファイルを保存(ほぞん)するときは文字(もじ)コードShift-JISで保存(ほぞん)することをお(わす)れなく。

スタジオムーンリーフでは「MeCab_Dictionary.csv」というファイルを作成(さくせい)して、そのファイルに以下(いか)のような内容(ないよう)記述(きじゅつ)しました。

よみがな自動処理への道【8】1日にして成らず_sb_01.png


このファイルを文字(もじ)コードShift-JISで保存(ほぞん)します。

これで()わりかと(おも)いきや、ひとつの(わな)が。
MeCabにおいて単語(たんご)登録(とうろく)しただけでは形態素(けいたいそ)解析(かいせき)結果(けっか)反映(はんえい)されるとは(かぎ)らないのです。

MeCabは単語(たんご)登場(とうじょう)頻度(ひんど)数値(すうち)()していて、それを文脈(ぶんみゃく)からスコア()することで分詞(ぶんし)判定(はんてい)していきます。「1日(ついたち)」といった特殊(とくしゅ)文字(もじ)(れつ)場合(ばあい)、このままでは「1(がつ)1日(ついたち)」あるいは「1(がつ)1日(ついたち)になりました」といった、前後(ぜんご)分詞(ぶんし)のちがいで判定(はんてい)結果(けっか)()わってしまうんです。

判定(はんてい)結果(けっか)()わってしまう原因(げんいん)は、デフォルトで辞書(じしょ)登録(とうろく)されている数詞(すうし)「1」~「0」の登場(とうじょう)頻度(ひんど)数値(すうち)設定(せってい)()があり、それが解析(かいせき)結果(けっか)影響(えいきょう)しているためです。

数詞(すうし)については、「C:\Program Files (x86)\MeCab\dic\ipadic\Noun.number.csv」に記述(きじゅつ)されています。登場(とうじょう)頻度(ひんど)数値(すうち)設定(せってい)は4カラム()数値(すうち)(ひく)いほど登場(とうじょう)頻度(ひんど)(たか)く、数値(すうち)(たか)いほど登場(とうじょう)頻度(ひんど)(ひく)いことになります。

数詞(すうし)「1」~「0」の登場(とうじょう)頻度(ひんど)は3000(だい)~4000(だい)(せん)(ちか)くの()があり、これがちょうど「1日(ついたち)」とのボーダー(じょう)にあるようで、解析(かいせき)結果(けっか)にバラつきがでてしまうようです。スタジオムーンリーフでは、手作業(てさぎょう)数詞(すうし)「1」~「0」の登場(とうじょう)頻度(ひんど)を5000(だい)にまであげました。(せん)(くらい)を5にしただけです。

よみがな自動処理への道【8】1日にして成らず_sb_03.png

Noun.number.csvの中身(なかみ)数詞(すうし)「1」~「0」の登場(とうじょう)頻度(ひんど)()調整(ちょうせい)しました


Noun.number.csvも文字(もじ)コードShift-JISで保存(ほぞん)することをお(わす)れなく。

さて。
最後(さいご)辞書(じしょ)のリコンパイルをしてバイナリ辞書(じしょ)にまとめあげれば終了(しゅうりょう)となります。

配布(はいふ)サイトによるとコマンドによるリコンパイルを(とお)方法(ほうほう)もあるようですが、「よみがな自動(じどう)処理(しょり)への(みち)【3】Shift-JIS→UTF8へ」で()いたように、()きな文字(もじ)コードへ辞書(じしょ)のリコンパイルを(とお)したほうが(らく)でした。

よみがな自動処理への道【8】1日にして成らず_sb_02.png

()きな文字(もじ)コードへ辞書(じしょ)をリコンパイル


コマンドプロンプトで解析(かいせき)結果(けっか)確認(かくにん)したいときはShift-JIS。
Perlプログラムで確認(かくにん)したいときはUTF8で辞書(じしょ)をリコンパイルします。

以上(いじょう)最後(さいご)のヤマをのぼりきりました。
これでプログラム処理(しょり)(かんが)えるのが格段(かくだん)にラクになります。


≫ NEXT_LOG よみがな自動(じどう)処理(しょり)への(みち)最終(さいしゅう)(かい)】まとめ

≪ PREV_LOG よみがな自動(じどう)処理(しょり)への(みち)【7】ヤマにも()ケズ

PAGE UP

Google+

スタジオムーンリーフ(2005年1月開設/Since 2005)
代表者:野口 卓洋(Takuhiro Noguchi)
Add:356-0006 埼玉県ふじみ野市霞ヶ丘3-1-22-504

Twitter:@StudioMoonLeaf
Facebook:facebook.com/noguchi.takuhiro


©2017 STUDIO MOON LEAF ALL RIGHTS RESERVED.