形態素解析と自分ルールの校正システムについて考えてみる
Yahoo!校正APIは統一表記のチェックとかが今ひとつという話を前回しました。しかし、無料で利用できるサービスに「自分の思い通りに動かない」なんてことを言っても仕方ありません。
ならば自分で作るしかありません。そこで、今回は一歩踏み込んで、自分ルールでの校正を行う方法について考えてみます。
Yahoo!校正APIでフォローしきれない校正機能にはどういったものがあるでしょうか。いくつかリストアップしてみます。
- 自分ルールの統一表記が設定できない
- 表記のゆれのチェックができない
- 助詞・送り仮名の単純な入力ミスへの対応が今ひとつ
といったところでしょうか。
3つめの問題については、正直よい案が思いつかないのでスキップ。ひとまずは1,2の問題を解消する方法について考えてみます。
統一表記の確認について
ひとつ目の表記チェックについては、自分のルールをハッシュとして読み込んで、品詞単位でつきあわせていくことで何とかなりそうです。
品詞単位で文章を分解するのであれば、Yahoo!形態素解析APIが簡単に利用できます。
Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語形態素解析
Yahoo!形態素解析APIでは、品詞・読み仮名に加え、動詞・形容詞・形容動詞といった活用を伴う品詞なら活用の終止形も一緒に返してくれます。
すなわち、品詞で検索対象を探し、活用の終止形とNG文字列を比較して対象文字列がNGか否かを判定。NGの場合は、そのルールに設定されている修正案を提案するという流れで、統一表記のチェックは行えそうです。
表記のゆれについて
表記の統一方法は、外部のルール辞書などを用意する必要がない分、仕組みさえ作ってしまえばすぐに使えそうです。
表記チェックの基本的な流れについては、読み仮名をチェックして同じ品詞の同じ読み仮名の単語が1文中に2つ以上ある場合、それらの単語がすべて同じ表記になっているかを確認すればいいわけです。
ただし、動詞や形容詞のような活用可能な品詞の場合は、読み仮名の比較が正確に行えません。たとえばシク活用の「美しい」という形容詞の場合、
表記 | 読み | 活用形 |
---|---|---|
美しい | うつくしい | 終止形 |
うつくしく | うつくしく | 未然形 |
というようなかたちとなり、読みだけでは表記の統一チェックがうまくできません。これをうまくチェックするには、活用を伴う品詞は語幹単位で比較する必要がありそうです。
Yahoo!デベロッパーネットワークでは、日本語係り受け解析APIを提供しており、こちらでは読み仮名は語幹単位で提供されます。
Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語係り受け解析
形態素解析APIと仕様が異なるのが若干謎ですが、こいつを使えば活用を伴う品詞の表記ゆれもチェックできそうです。統一表記のチェックも、語幹レベルでチェック用の辞書を作成しておけば、日本語係り受け解析APIだけで何とかなりそうですね。
こんな条件で、校正用のスクリプトを書いてみようかと思います。