らこらこブログ

唐揚げとアニメとプログラミングが大好きです

メカらこ開発記録 01/26

少しずつ実装進めてますが基本的な方針がやっと決まりました

問題



助けを求める





ひらめく

ということで、以下の工程で。

学習

  • 文をMeCab形態素解析
  • 品詞列とそれに対応する単語列を得る
  • 複雑すぎる日本語を扱いやすくするためにいろいろ補正する(結合など)
  • 補正された品詞列をPCFGで構文解析する
    • ボトムアップで品詞,品詞句を結合していく(右辺から左辺への逆変換)
    • 開始記号Sに収束したパターンで使用された規則の出現回数を加算する
  • 加算された出現回数をもとに全規則の確率を再計算する
  • 品詞列と単語列から、(品詞,単語)のペアのNグラムモデル(拡張N-POSモデルとでも呼ぶか?)の出現回数を加算する

文章生成

  • 開始記号Sから確率に従って規則を適用して品詞列まで分解する
  • 品詞列を先頭から拡張N-POSモデルを適用して、品詞ごとに単語を割り当てていく
    • 先頭N個の品詞と一致する並びのモデルを開始モデルとする
    • 単語情報を元にマルコフ連鎖を行うが、品詞列と品詞が一致しないモデルは除外する
      • モデルの割り当ては連鎖可能モデルのそれぞれの出現回数に比例した確率を適用する

やっと形が見えてきたのでぼちぼち頑張っていきましょう

[追記]
確率補正用の学習については上の通りでそこまで難しくなさそうだけども、生成規則自体を学習する方法がないかどうか検討してみた


  • 文法的に信頼できる文を規則の学習データを用意する
  • 形態素解析を行う
  • ボトムアップで品詞,品詞句を結合していくが、まずすでに存在する規則を適用し、Sに至らなかった場合は仮の規則を作って開始記号Sに至る全てのパターンを得る

ここまで考えたところで、仮の規則の数が一番少ないパターンを新しい構文として認めて、仮の規則を正式に採用して確率学習に用いる…っていうのは、正直どうなんだろうと思った。
仮の規則の数が少ないからといってもっともらしい構文であるという保証がないので、そうするならその証明が必要。最尤推定の問題を作らないといけない。死。

できるわ とか書いたけど、出来そうにないのでやっぱり棚に上げときます。いつかやろう