Ngram kana-kanji conversion with grammatical annotations

27
用言活用を考慮した N-gramかな漢字変換 真鍋 宏史 121228日金曜日

Transcript of Ngram kana-kanji conversion with grammatical annotations

用言活用を考慮したN-gramかな漢字変換

真鍋 宏史

12年12月28日金曜日

N-gram かな漢字変換

• 必要なノードを残して枝刈り

• 高次の N-gram

• 短単位の語幹と語尾を切り離したかな-表記ペア、形態素情報なし例: [ほん/本] [を/を] [か/買] [い/い] [た/た] [い/い]

• 去年の発表(Python 実装)、その後 C++ にN-gram データ構造の見直し、ブルームフィルタの導入省サイズ化・高速化

12年12月28日金曜日

問題点

• 文節区切りがない

• 異表記に一貫性を持たせられない

• コーパスにない用言を登録できない

12年12月28日金曜日

文節区切り

• 文節区切りがないねこをかいたい→○猫を 飼いたい×猫 を 飼 い た い

• 「飼いたい」を修正したい場合:- 目的の場所への移動が直感的でない(右ボタン一回で移動したい)- 「飼」の別候補として「蚊」のようなものはいらない-「かいたい」全体に対する「解体」のような候補もほしい

12年12月28日金曜日

異表記の一貫性

• [メガネ]→めがね/メガネ/眼鏡、[オモイコム]→思い込む/思いこむ-コーパス内では不統一-そのまま N-gram に→前後の文脈に影響される 例: メガネヲカケル: 眼鏡をかける メガネヲカウ: メガネを買う

• ユーザの好みによって統一したい-「眼鏡をかける」と変換→「眼鏡を買う」-「思い込んだ」と変換→「思い込まない」-「思いこむ」と変換→「思いこまない」

12年12月28日金曜日

追加用言

• IME には単語登録が必須-体言: 単純に追加-用言: 活用形を考慮する必要

• 「ポチる」を登録→「ポチラナイ」「ポチリマス」「ポチッタ」などが変換できなければいけない

12年12月28日金曜日

対策

• 文節区切り→形態素情報

• 異表記の一貫性→「語彙素」

• 用言の追加→用言を原形と活用形に分解

12年12月28日金曜日

形態素情報

• BCCWJ の形態素情報を利用

• [ホン/本/名詞][ヲ/を/助詞][カウ/買う/動詞]→本を 買う

• 自立語と、それに続く非自立語で文節を構成

12年12月28日金曜日

語彙素

• BCCWJ で採用

• 眼鏡・メガネ・めがね→[メガネ/眼鏡](語彙素)(読みと漢字表記のペア)

• 語彙素の N-gram を構築

• まず語彙素列に変換、それから語彙素に対する優先表記に変換(学習可能)メガネヲカケル→[メガネ/眼鏡][ヲ/を][カケル/掛ける][メガネ/眼鏡]→眼鏡・メガネ・めがね[ヲ/を]→を[カケル/掛ける]→掛ける・かける

12年12月28日金曜日

用言の扱い

• 原形と活用形に分解する買えば: [買う][仮定][ば]買いたい: [買う][連用][たい][終止]

• N-gram を有効活用できる-「本を買った」と「本を買いたい」: [本][を][買う][テ形][た][終止] [本][を][買う][連用][たい][終止]-「本を読みたい」と「本を買いたい」: [本][を][読む][連用][たい][終止] [本][を][買う][連用][たい][終止]

12年12月28日金曜日

N-gram モデルへの組み込み

• 用言活用をどうやって N-gram に組み込むか- 元コーパスの用言を分解、N-gram モデルの構築- デコード(かな漢字変換)時に用言辞書を参照

12年12月28日金曜日

元コーパスの用言を分解

• 元コーパスは形態素解析済み「本を買いたい」[本 名詞][を 助詞][買い 動詞 原形:買う 連用][たい 助動詞 原形:たい 終止]→[本][を][買う][連用][たい][終止]

• 用言を原形と活用形に単純に分解する

12年12月28日金曜日

デコード(かな漢字変換)

• 用言の活用形を展開して trie を構築[カク 書く 五段-カ行]→ カカ:[書く][未然] カキ:[書く][連用] カク:[書く][終止] ...

• デコード時に共通接頭辞検索 イキル→ イ: [いる][連用] イキ: [行く][連用] イキ: [生きる][未然] イキル: [生きる][終止] ...

12年12月28日金曜日

ラティスの構築• 生の用言が活用形以外に接続してはいけないイクヒト:×[行く][人]○[行く][連体][人]

• 活用タイプの同じものに接続する活用形はひとつのノードにまとめたい活用タイプの違うものは接続できない例: カイ

連用

テ形

買う(五段-ワア行)飼う(五段-ワア行)

書く(五段-カ行)掻く(五段-カ行)

×

12年12月28日金曜日

アイデア

• 用言は特殊な位置で終わるとし、活用形はその位置から始まるとする-「カイ」に対するノード [買う]: 「位置 0」から始まり「位置 2 活用形 五段-ワア行」で終わる [連用]: 「位置 2 活用形 五段-ワア行」から始まり「位置 2」で終わる [書く]: 「位置 0」から始まり「位置 2 活用形 五段-カ行」で終わる [テ形]: 「位置 2 活用形 五段-カ行」から始まり「位置 2」で終わる

• 可能動詞・テ形の問題

12年12月28日金曜日

可能動詞: 問題

• すべての五段動詞は可能動詞にできる(追加用言も変換できなければいけない: ポチる→ポチれる)

• かな単位では分解できない(ikeru: ik-er-u)

• 別用言とすると N-gram が有効活用できない例: [すらすら][書く] [すらすら][書ける]

12年12月28日金曜日

可能動詞: 対策

• 書ける→[書く][可能] と解析すらすら書く: [すらすら][書く][終止]すらすら書ける: [すらすら][書く][可能][終止]書けそうにない: [書く][可能][そう][に][ない]読めそうにない: [読む][可能][そう][に][ない]

• 動詞辞書に登録イケ: [行く][仮定] [行く][命令] [行く][可能][未然] [行く][可能][連用] ...

12年12月28日金曜日

テ形: 問題

• 「て(で)」に接続する形(「書い」「読ん」「持っ」)

• 「て」「た」「たり」「ちゃう」等の限られたものにしか接続しない

• 五段ナ・マ・ガ・バ行に接続すると濁音になる(死んで・読んだ・注いだり・飛んじゃう 等)

• 清音のものと濁音のものは同じ役割

12年12月28日金曜日

テ形: 対策

• テ形は特殊な位置とする例:「カイテ」[書く]: 「位置 0」から始まり「位置 2 活用形 五段-カ行」で終わる[テ形]: 「位置 2 活用形 五段-カ行」から始まり「位置 2 テ形-清音」で終わる[て]: 「位置 2 テ形-清音」で始まり、「位置 3」で終わる例:「ヨンデ」[読む]: 「位置 0」から始まり「位置 2 活用形 五段-ガ行」で終わる[テ形]: 「位置 2 活用形 五段-ガ行」から始まり「位置 2 テ形-濁音」で終わる[で]: 「位置 2 テ形-濁音」で始まり、「位置 3」で終わる

• テ形接続の濁音は、デコード時に清音に正規化

12年12月28日金曜日

単純なラティス: 「カイタイ」

買位置: 0 位置: 1

飼書

い胃

た い

鯛掻

胃位置: 2 位置: 3 位置: 4

12年12月28日金曜日

用言活用を考慮したラティス: 「カイタイ」

買う位置: 0 位置: 2 活用型: 11(五段-ワア行)

連用位置: 2

書く位置: 2活用型: 1(五段-カ行)

テ形

た 胃

たい終止

掻く

飼う位置: 3

位置: 4

解体

連体

位置: 4 活用型: 31(形容詞)

位置: 2活用型: 33(テ形-清音)

他終止

活用型: 31(助動詞-タ)

連体

12年12月28日金曜日

用言活用を考慮したデコード例: 「カケナイ」

書く位置: 0 位置: 2 活用型: 1(五段-カ行)

可能

位置: 2

掛けるテ形 な 胃

ない 終止

欠ける

掻く

位置: 3

位置: 4

連体

位置: 4 活用型: 31(形容詞)

位置: 2 活用型: 17(一段)

未然

命令

連用

位置: 2 活用型: 33(テ形-清音)

12年12月28日金曜日

変換例

• ボクトウミニイカナイカボク/僕/代名詞/ ト/と/助詞-格助詞/ ウミ/海/名詞-普通名詞-一般/ ニ/に/助詞-格助詞/ イク/行く/動詞-非自立可能/2 未然形-一般 ナイ/ない/助動詞/I 終止形-一般 カ/か/助詞-終助詞/

• イエヲカイタイイエ/家/名詞-普通名詞-一般/ ヲ/を/助詞-格助詞/ カウ/買う/動詞-一般/; 連用形-一般 タイ/たい/助動詞/O 終止形-一般

• ビルヲカイタイビル/ビル/名詞-普通名詞-一般/ ヲ/を/助詞-格助詞/ カイタイ/解体/名詞-普通名詞-サ変可能/

12年12月28日金曜日

長所・短所

• 長所- 手作業での調整が基本的に必要ない- 高精度のコーパスを使えば高精度の変換ができる- モデルサイズが調整可能(N-gram プルーニングの閾値を設定)

• 短所- 手作業で変換を調整するのが難しい- コーパスの精度に影響される- ある程度のモデルサイズは必要(10MB~)- 変換速度(190文字の文の変換に 3秒程度)

12年12月28日金曜日

難しいところ

• 動詞の語彙素: 例「あう」-BCCWJ: 「合う」「会う」-使用実態: 「合う」「会う」「遭う」-語源: すべて同じ

• 「彼に 言う」「彼という 人」-BCCWJ では区別なし、同一語彙素-前者は自立・漢字表記、後者は非自立・かな表記

• その他、BCCWJ の性質・品質による問題点が多々

12年12月28日金曜日

共起

• N-gram のスパースさ「月が欠ける」: BCCWJ にない

• 離れた関係「ネコヲイツカカッテミタイ」

• カテゴリーに基づく共起処理が必要(未実装)

12年12月28日金曜日

ToDo

• 追加用言と活用語尾の連接-そのままでは高コスト

• 語彙素に対する候補の列挙

• IME として実装(mozc?)

• いろいろな調整(記号・数字の扱い etc.)

12年12月28日金曜日