読者です 読者をやめる 読者になる 読者になる

らこらこブログ

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

メカらこ開発記録 02/02

今日はめちゃくちゃ実装を進めました

構文木を作るにあたってMeCabが吐き出す生の形態素のままでは細分化されすぎていてとても文法規則を定義しきれないので、ある程度の補正が必要だということに気づいた

ということで思いついたのは連続する重複品詞を結合する方法。
適当にやったらこうなった


ということでもうちょっと細かく品詞を読み取ってあげたら
ということでまあ解決?

ソースコードはこんな感じで、連続した重複品詞をまとめて、単語を結合してます

public void Fix()
{
    var list = new List<PosPair>();
    var current = PosPairs.First();
    foreach(var x in PosPairs.Skip(1))
    {
        if(current.Pos == x.Pos)
        {
            current.Gram = string.Concat(current.Gram, x.Gram);
        }
        else
        {
            list.Add(current);
            current = x;
        }
    }
    list.Add(current);
    PosPairs = list;
}

なんやかんや実装を進めてなんとか構文木を作れるまでになりました


構文木最尤推定がちょっと危ういんですがこれは追々どうにかします

残りのタスクは、

  • 構文解析系…文法規則を増やして受理できる文を広げる(手動)
  • 語彙学習系…未着手
  • 文章生成系…未着手

です

一番きつそうなところが終わったので完成まで頑張ります