White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

無駄な抵抗3・・というか共起による人工無脳の文章生成

前回までのあらすじ

1文あたりの単語間の共起をまとめる=共起行列を作る(前回の表ね)

hamaが生成した文に対して共起行列を使った評価関数を適用する

変な文章が学習により自動的に弾けられてウマー・・のはず
例:"「"と"」","『"と"』","["と"]","今日は"と"です"はOK,"「","『","["のみとか、"明日は"と"でした"はNG

単語AとBが関連している:P(B|A),P(A|B)が0ではない
単語AとBが強く関連している:P(B|A),P(A|B)が1に近いか、それ以上

あらすじ終わり

hamaに実装してみました。

条件:
hamaにより生成された単語列がS=[A,B,C,D,...],単語A,B,...の共起確率がP(A|B)で現れる時、

score = 1
for a in range(0,len(S)):
    for b in (0,len(S)):
        if(S[a]!=S[b]):
            score *= P(S[b]|S[a])

・・という風にやってみたのですが、以下の問題が発生しました。

  • 長文になればなるほど評価値が0になりやすい(組み合わせの問題)
  • これだけだとAとBが存在するという判別はできるが、AがあってBがない(からダメ)という条件を判別できない

今後の理想

  • ↑の対策
  • 自動修正
  • 評価値の高そうな文章を自動的に選んでいく