Friday,September 9

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

PerlからMeCabにコマンドを送信(そうしん)して、「()み」の解析(かいせき)結果(けっか)である全角(ぜんかく)カタカナを全角(ぜんかく)ひらがなに変換(へんかん)できるようになりました。

(ぜん)自動(じどう)よみがな処理(しょり)実現(じつげん)までもう(すこ)しと(おも)いきや、()りこえなくてはいけないヤマがいくつかあります。今回(こんかい)のログは、それらのヤマとその解決(かいけつ)方法(ほうほう)をご紹介(しょうかい)します。


ヤマ1「改行(かいぎょう)文字(もじ)()(あつか)い」

よみがな自動(じどう)処理(しょり)への(みち)【5】PerlとMeCabはパイプでつながる に()きましたが、PerlからMeCabにコマンドを送信(そうしん)するために形態素(けいたいそ)解析(かいせき)をさせたい文字(もじ)(れつ)(まえ)もってファイルに保存(ほぞん)する仕組(しく)みを採用(さいよう)しました。このとき、複数(ふくすう)(ぎょう)によって()かれたファイルをMeCabの形態素(けいたいそ)解析(かいせき)(とお)すと、改行(かいぎょう)文字(もじ)空白(くうはく)文字(もじ)(ヌル文字(もじ))になります。

解析(かいせき)結果(けっか)から改行(かいぎょう)文字(もじ)復帰(ふっき)させようとしても、文章(ぶんしょう)末尾(まつび)改行(かいぎょう)改行(かいぎょう)だけの(ぎょう)との()わけがつきません。

スタジオムーンリーフでは、MeCabを(とお)(まえ)改行(かいぎょう)文字(もじ)(まえ)に「<br />」を挿入(そうにゅう)しておき、MeCabを(とお)したあとに「<br />」を目印(めじるし)にして改行(かいぎょう)文字(もじ)付与(ふよ)する処理(しょり)追加(ついか)しました。


Mecabを(とお)(まえ)

\n → <br /> + \n

変換(へんかん)
Mecabの形態素(けいたいそ)解析(かいせき)(とお)すと\n(改行(かいぎょう)文字(もじ))は消滅(しょうめつ)する(ヌル文字(もじ)になる)

Mecabを(とお)したあとに

<br /> → <br /> + \n

変換(へんかん)すると、改行(かいぎょう)文字(もじ)正確(せいかく)位置(いち)復帰(ふっき)できる。


ヤマ2「よみがなに(しぼ)りこむ」

MeCabの形態素(けいたいそ)解析(かいせき)は、文章(ぶんしょう)分詞(ぶんし)分解(ぶんかい)します。
漢字(かんじ)によみがなをうつためには、ここからさらにひと工夫(くふう)せねばなりません。

たとえば、「保存(ほぞん)」を形態素(けいたいそ)解析(かいせき)すると、解析(かいせき)保存(ほぞん)()み「ほぞん」となり、この場合(ばあい)はそのままよみがなにできます。

でも、「お(ねが)い」を形態素(けいたいそ)解析(かいせき)すると、解析(かいせき)「お(ねが)い」()み「おねがい」となるため、ここからさらに「(ねが)」+「ねが」に(しぼ)りこむ必要(ひつよう)があります。

さらに、「()(かえ)る」を形態素(けいたいそ)解析(かいせき)すると、解析(かいせき)()(かえ)る」()み「もちかえる」となります。ひとつの分詞(ぶんし)で「()」+「も」、「(かえ)」+「かえ」と(しぼ)りこみが2か(しょ)になるケースもあります。

ヤマのなかでは、この処理(しょり)(もっと)(けわ)しいヤマです。
方法(ほうほう)はいくつもあると(おも)いますが、サブルーチンを駆使(くし)しても複雑(ふくざつ)(なが)処理(しょり)になると(おも)います。ここは(ねば)(づよ)()()むしかありません。


保存(ほぞん)形態素(けいたいそ)解析(かいせき)解析(かいせき)保存(ほぞん)()み「ほぞん」

(ねが)い→形態素(けいたいそ)解析(かいせき)解析(かいせき)「お(ねが)い」()み「おねがい」

  (しぼ)りこみ「(ねが)」+「ねが」

()(かえ)る→形態素(けいたいそ)解析(かいせき)解析(かいせき)()(かえ)る」()み「もちかえる」

  (しぼ)りこみ「()」+「も」&「(かえ)」+「かえ」


ヤマ3「MeCabも万能(ばんのう)ではない」

MeCabの形態素(けいたいそ)解析(かいせき)はたいへん優秀(ゆうしゅう)ですが、デフォルトの辞書(じしょ)万能(ばんのう)じゃありません。
自動(じどう)処理(しょり)としては妥協(だきょう)できる範囲(はんい)ではありますが、ときどき()間違(まちが)いが(しょう)じます。

その都度(つど)MeCabの辞書(じしょ)をカスタマイズすればいいのかもしれませんが、辞書(じしょ)登録(とうろく)のない漢字(かんじ)や、独特(どくとく)()(かた)をする人名(じんめい)地名(ちめい)など、すべての日本語(にほんご)完全(かんぜん)対応(たいおう)するのは困難(こんなん)です。

ここでスタジオムーンリーフの過去(かこ)財産(ざいさん)(かがや)きます。

漢字(かんじ)によみがなをうつ【前編(ぜんぺん) に()いてありますが、漢字(かんじ)(うし)ろに半角(はんかく)括弧(かっこ)(かこ)まれたよみがなをあつかう文字(もじ)(れつ)処理(しょり)は、すでに開発(かいはつ)()みです。

これを()かし、漢字(かんじ)のあとに半角(はんかく)括弧(かっこ)(かこ)まれたよみがながある場合(ばあい)は、MeCabの形態素(けいたいそ)解析(かいせき)よりもそちらを優先(ゆうせん)する処理(しょり)としました。

これにより、MeCabの辞書(じしょ)をカスタマイズせずとも()間違(まちが)いを修正(しゅうせい)したり、地名(ちめい)人名(じんめい)だけに半角(はんかく)括弧(かっこ)をつけてよみがなを指定(してい)することができるようになりました。

よみがなを簡単(かんたん)()調整(ちょうせい)できるこの機能(きのう)は、ブログはともかく()みの正確(せいかく)(せい)()われるようなニュース記事(きじ)()くときにとても使(つか)勝手(がって)がよいです。

サンプルコードを()くと、解説(かいせつ)長編(ちょうへん)小説(しょうせつ)のようになるので割愛(かつあい)しました。
でも、コードを()くうえでの基本(きほん)(てき)(かんが)えは(しる)したつもりです。


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

≪ PREV_LOG よみがな自動(じどう)処理(しょり)への(みち)【6】全角(ぜんかく)カタカナ→全角(ぜんかく)ひらがな

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.