無脳の記録
会話の流れを収集する
例えば「XXX : 念願の夢が叶った」→「YYY : atXXX おめでとう」→「XXX : atYYY ありがとう」みたいな会話を学習して、「夢が叶った」って言ってる人には「おめでとう」って言って、誰かから「おめでとう」って言われたら「ありがとう」って返すような感じ。
今までは「fooって言われたらfoo'って返事をする」という仕様だったので、「fooと言われたらbarって返事をする」ようになった。いや、なるといいな。
リプライやRTから本文だけを抜き出す
「atXXX hogehogefugafuga」というツイートは「atXXX」が宛先で「hogehogefugafuga」が本文なので、半角スペースでスプリットして"at"を含むとか"#"を含むとか"RT"を含むとか色々なルールで本文を抜き出す。
RTの場合は「hogehoge RT atXXX : fugafuga」の"hogehoge"と"fugafuga"を先の会話の流れの関係として収集する。
話の話題は興味を持ったり忘れたりする
話題の引き出し、というある程度の長さの配列があって、そこに話の話題を上書きしたりしなかったりする。その話題の引き出しから適当に話題を引き出して文章を生成する。
文章の評価関数をゆるく
たくさん文章を作って、類似度や文章の長さや含んでいるキーワードの数などをパラメータにして評価をおこなう関数を実装。一番評価の配点が大きいのは「たくさん文章をつくったとき、どのくらい同じ文章が作られたか」という指標。なんかモンテカルロ法みたい。
これからやること
助詞、助動詞などの利用ルール
特に語尾について助詞や助動詞や特殊品詞の特徴を抽出して、キャラクタ作りのルールを策定。「hogehogeだぜ」とかだと男っぽいキャラだし、「fugafugaなの」とかだと女っぽいキャラだし、統一感。
記憶ベースの構築
時系列的に矛盾した内容を喋らないように、今までの自身の発言を自身の記憶として保持していくDBを構築。キャラクタとしての個性みたいなもの(好きな食べ物とか)も格納できれば人間っぽい。
followingごとのイメージ、友好度ベースの構築
仲いいとか悪いとか、どんな話をするかとか。
どうでもいいけど、今朝は二度寝したら髪を梳かす暇も朝ご飯を食べる暇もないくらいの時間になってしまったので、明日はちゃんと起きたい。