無駄な抵抗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がない(からダメ)という条件を判別できない
今後の理想
- ↑の対策
- 自動修正
- 評価値の高そうな文章を自動的に選んでいく