Hatena::Grouprekken

murawaki の雑記

2009-12-10

くだけた表現の分類

前回の続き。前回は、提案手法が修正対象とする「くだけた表現」は非常に限定されていると推測した。混乱の原因は「くだけた表現」という表現が misleading なこと。実際に扱っているのは表記の問題だけだから。「くだけた表現」は多岐に渡り、扱うべき解析の段階も異なる。そこで「くだけた表現」を整理する。いや、整理し損なったので、頭の中の混乱した状態をとりあえず書き出してみる。

言い換え

「くだけた表現」と言われて普通思いうかべるのは、「あれだよね。」といった口語風の表現。これを改まった表現に変換する技術は言い換えと呼ばれる。文末を中心とした機能語の他、「ちんたら」のような語彙、倒置、助詞の省略などの現象も扱う (扱いたい)。

「氷、レベルが高いです」の「氷」が覚醒剤だと検知する技術は、「氷」を「覚醒剤」に言い換えると考えれば、言い換えに含まれるかもしれない。しかし一番重要なのは「氷」の意味の特定。語義曖昧性解消。

言い換えや語義曖昧性解消は、形態素解析などの基本的な言語解析の上で行うのが普通。つまり、「~だよね」なら「だ + よ + ね」、「氷」なら「氷」という形態素 (列) を正しく同定した上で、語義を特定したり言い換えたりする。逆に形態素を同定せずに精度よく行うのは難しい。大阪弁フィルタのような文字列マッチングの作り込みには限界がある。

非規範的な表記

一方、「ヵゎいい」などは「くだけた表現」の中でも表記の問題。通常の表記「かわいい」に変換すれば、もはや「くだけた表現」ではない。もちろん「行くょ~」は「行くよ」に修正しても「くだけた表現」。しかしそこから先は言い換えの問題。

このように表記上の現象をどう呼ぶか悩んでいる。とりあえず「非規範的な表記」と呼んでいる。ぱっとしない名前。この用語が扱う範囲が曖昧。

非規範的な表記 (の一部) は、発表された技術は形態素解析の前処理で扱う。一方、JUMAN 6.0 は形態素解析時にその場で同定する。やっていることは単純。入力文字列に「ヵゎいい」のような文字列があれば、「かわいい」と正規化して辞書引き。辞書にあれば候補に追加。この際スコアに重みを加えて、通常の形態素よりも採択されにくくする。いい加減な手法だが、少なくとも何もしないよりマシらしい。非規範的な表記のうち、現在の JUMAN が扱うのは小文字で表記されているものだけ。もっとも「~」やギャル文字なども同じ手法で処理できそう。

こうした表記の処理段階としては、形態素解析前の文字列処理と形態素解析のどちらが良いだろうか。前者の方が良いと思う。例文「できるかどうヵゎ分かりません」では、2個の連続する形態素が非規範的に表記されている。(音変化ならぬ) 非規範的な表記は文法を無視する。それなら文字列的に扱った方が頑健に処理できそう。

伏字

発表された技術は「オ●マ」のような伏字も対象とする。実は若干の伏字は、ウェブコーパスから未知語として獲得される。ただし例示は控えたい。アダルトサイトから獲得した用語ばかりだったので。こうして獲得された伏字に対して元の表記を同定するタスクが考えられる。

この手法を発表された技術と比較する。前者の利点は形態素が同定されていること。同一文書中に共起する形態素などの広い文脈を同定の手掛かりとして使える。「オ●マ」が「オバマ」であって「オカマ」でないと判断するには、周辺に出現する「大統領」、「米国」といった語を利用する必要があるだろう。

欠点は低頻度の伏字に弱いこと。何度も「オ●マ」と表記されなければそもそも形態素として獲得されない。つまり「●バマ」、「オ●マ」、「オバ●」と伏せる個所を毎回変えられたら使えない。一方、発表された技術は、1回きりの伏字でも検出されれば処理できる。正しい「オバマ」がコーパス中で十分使われていればよい。

おまけ。記号の多義性が問題となる場合がある。例えば「●バマ」のように先頭が伏字の場合。「●」をレイアウト目的で使っているかもしれない。HTML からの文抽出の段階で曖昧性が問題になる。

字種の交代

字種の交代がくだけた文章では見られる。通常漢字で表記される語をカタカナで書いたり、カタカナをひらがなにしたり。例えば「籠」を「カゴ」と表記。こうした現象も「非規範的な表記」と言えるかもしれない。しかし「行くょ~」などとは明らかに毛色が違う。はやく混乱した用語を整理したい。

実は「カゴ」という表記は JUMAN の辞書に登録されていない。未知語扱いになるのでコーパスから獲得される。こうした表記の正規化を行うには、既知の表記への対応を得る必要がある。「カゴ」の例では、単純に候補を挙げると、「籠」の他に「加護」や「過誤」も考えられる。つまり語義曖昧性解消の問題。ちなみに、既知語についても同じ問題がある。例えば「かぜ」は「風」か「風邪」か分からない。

前回述べたように、このような字種の交代は、発表された技術は修正対象としないと推測している。こうした表記は、特別な前処理を行わなくても形態素解析上の問題とならない。カタカナは形態素解析の未知語処理で大抵が同定できる。ひらがなの未知語は深刻な解析誤りを起こしやすいが、適切に未知語獲得を行えば対応できる。むしろ、表現の正規化しようとすると、文字列処理では利用できない手掛かりが重要な役割を果たす。したがって、言い換えと同様に基本的な言語解析の上で行うのが良い。

用言を活用語尾までカタカナ表記

字種の交代の一種だが、形態素解析で問題となるものに、活用語尾までカタカナで表記した用言がある。

「やばい」という形容詞を考える。語幹のみをカタカナ化した「ヤバい」は問題ない。一度「ヤバい」という表記でコーパスから獲得し、形態素解析の辞書に格納すればよい。そうすると、「ヤバい」、「ヤバかった」、「ヤバくて」のような活用変化した形も形態素解析で処理できる。問題は「ヤバイ」のように活用語尾までカタカナ化した場合。現在の形態素解析では扱えない。なぜなら JUMAN (や ChaSen) は活用語尾がひらがな表記であることを前提とするから。

ではどうするか。形態素解析を改良する方法が2通り。一つ目。その場で活用形を展開せず、MeCab のようにあらかじめ活用形を展開した形で辞書登録する。*1もうひとつは、実行時に活用形を展開する方式のまま。語幹がカタカナの場合はカタカナ語尾を候補に加える。

ぐだぐだ考えてみたが、その前に実態調査が必要。印象では、語尾までカタカナ表記されるのは、基本形「ヤバイ」のような一部の活用形が大半を占める。「ヤバケレバ」のような表現はまれ。また、カタカナ表記は語尾だけでなく、後続の付属語に及ぶ場合もある。

形態素解析より前に文字列処理で扱えるか。このようなカタカナ用言も、やはり発表された技術は修正対象としないと推測している。そもそも単なるカタカナ文字列なので、「くだけた表現」候補としての検出が難しいのではないか。

*1:ちなみに、現行仮名遣いで規範化される以前の書き言葉でも、活用語尾がひらがな表記されないことがあるはず。