メカらこ開発記録 01/26
少しずつ実装進めてますが基本的な方針がやっと決まりました
問題
品詞分解は出来たとして、文末の「でしょう」なんかは単に品詞だと助動詞・助動詞になってしまうからやっぱり基本形とか未然形とかそこら辺まで細分化してグループ化しないとうまくいかないなこれ pic.twitter.com/DQ0rECxDQi
— らこ (@laco0416) 2014, 1月 26
(助動詞→助動詞,助動詞)を定義したとして、もし助動詞が3つ並んだ時もカバーできるけど終端記号をどこに取るかっていう話になっていく
— らこ (@laco0416) 2014, 1月 26
助けを求める
@kazoo04 https://t.co/5mEMcDfDAz https://t.co/kJwg3Vznal 最初は(助動詞+助動詞)をまとめて助動詞にして「助動詞→でしょう」の規則作ればいいかと思ったんだけど考えつく欠陥ある?
— らこ (@laco0416) 2014, 1月 26
@kazoo04 助動詞→助動詞+助動詞っていう規則とはまた違うから、これは文法とは関係ない学習データの補正になるかな 規則にしちゃうと確率で無限に助動詞が連結しちゃうし
— らこ (@laco0416) 2014, 1月 26
@laco0416 完璧にやりたい場合は前後の文脈を見て時制を一致させたりしなきゃいけないからそういった補正は大なり小なり必要になってくると思う。まあどこまできちんとやるかだね。
— かずー氏 (@kazoo04) 2014, 1月 26
@laco0416 多少違うのは仕方ないしそれ故に面白いツイートをするわけだからそのへんは適当でいいんじゃないかな
— かずー氏 (@kazoo04) 2014, 1月 26
@kazoo04 じゃあこの方向で行く あと確率的言語モデル読み終わったんだけど、感想としてNグラムモデルのマルコフ連鎖のほうが確率文脈自由文法より精度高いんじゃないかっていう…
— らこ (@laco0416) 2014, 1月 26
@laco0416 実装はマルコフ連鎖のほうが簡単だけど、Nは通常2〜3くらいしかないから局所的には正しくても文全体で見ると滅茶苦茶になりがちだからそれをカバーするためのアイディアとしてPCFGを勧めてみた次第
— かずー氏 (@kazoo04) 2014, 1月 26
ひらめく
@kazoo04 PCFGの終端記号を単語じゃなく品詞にして、文や句から品詞に分解するまでのPCFGにまかせて、Nグラムを今の(w1,w2,w3)から{(p1,w1),(p2,w2),(p3,w3)}に拡張することで、その品詞列にマッチするNグラムを選定するってのどう思う?
— らこ (@laco0416) 2014, 1月 26
@laco0416 なるほど、それはすごく良いと思う
— かずー氏 (@kazoo04) 2014, 1月 26
ということで、以下の工程で。
学習
文章生成
- 開始記号Sから確率に従って規則を適用して品詞列まで分解する
- 品詞列を先頭から拡張N-POSモデルを適用して、品詞ごとに単語を割り当てていく
- 先頭N個の品詞と一致する並びのモデルを開始モデルとする
- 単語情報を元にマルコフ連鎖を行うが、品詞列と品詞が一致しないモデルは除外する
- モデルの割り当ては連鎖可能モデルのそれぞれの出現回数に比例した確率を適用する
やっと形が見えてきたのでぼちぼち頑張っていきましょう
[追記]
確率補正用の学習については上の通りでそこまで難しくなさそうだけども、生成規則自体を学習する方法がないかどうか検討してみた
確率補正用の学習データとは別に、ツイッターをは別の文法的にまともだろうと思われるソースから規則追加用の学習データを得て規則の学習していくことできそうだな うん、できるわ
— らこ (@laco0416) 2014, 1月 26
- 文法的に信頼できる文を規則の学習データを用意する
- 形態素解析を行う
- ボトムアップで品詞,品詞句を結合していくが、まずすでに存在する規則を適用し、Sに至らなかった場合は仮の規則を作って開始記号Sに至る全てのパターンを得る
ここまで考えたところで、仮の規則の数が一番少ないパターンを新しい構文として認めて、仮の規則を正式に採用して確率学習に用いる…っていうのは、正直どうなんだろうと思った。
仮の規則の数が少ないからといってもっともらしい構文であるという保証がないので、そうするならその証明が必要。最尤推定の問題を作らないといけない。死。
できるわ とか書いたけど、出来そうにないのでやっぱり棚に上げときます。いつかやろう