毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/8/30【68日目】マルコフ連鎖で謎の会話ができるようになった

3グラムの方がいいという情報があったので、ただ単にMeCabで単語に分けたものよりも3グラムを学習させてみます。 3グラムはこちらで勉強したコードから。

dailytextmining.hatenablog.com

def text2threegram(text):
    kaisekiyou = text.read().split('¥n')
    string = ' '.join(kaisekiyou)
    mecab = tagger.parse(string)
    kaigyou = mecab.splitlines()

    word = []

    for tango_list in kaigyou:
        tab = tango_list.split('\t')
        words = tab[0]
        word.append(words)

    three = []
    for i in range(len(word)-2):
        three_list = [word[i], word[i+1], word[i+2]]
        mojiretsu = ','.join(three_list).replace(',', ' ')
        three.append(mojiretsu)
    
    return three

要素がリストのままですと学習できないので、mojiretsu = ','.join(three_list).replace(',', ' ‘)のところで文字列にします。 この要素を文字列にしたリストを学習させて、replyで出力させます。

def main():
    text_model = markovify.Text(text2threegram(text))
    while True:
        i_am = input('I :')
        if i_am == 'バイバイ':
            break
            exit(0)
        if not i_am == 'ふざけるな':
            reply =  text_model.make_short_sentence(90)
        else:
            reply = "ごめん"
        sentence = reply
        print('bot:' + sentence)
    print('bot:バイバイ')

実行結果。

I :こんにちは
bot:座っ て い た から 、 あゆ ちゃん
I :あゆちゃん?
bot:柱 NIGHT with AKB48 ??
I :いきなり英語?
bot:中 毎回 来 て
I :何言ってるの?
bot:総選挙 の モバイル 票 は
I :ふざけるな
bot:ごめん
I :いいよ
bot:は 『 希望 について 」
I :バイバイ
bot:バイバイ

会話になっていないうえ、日本語もおかしいですね。

そもそも会話用のテキストではないので、これが限界のような気もしますが、 なんとか改良していきたいと思います。

今日の結果

今日のAKBの呟きは60件でした。

'嬉しい': 6, 'ない': 4, '可愛い': 3, '小さい': 2, '早い': 2, '楽しい': 2, 'いたい': 2, '良い': 2, 'すごい': 2, '暗い': 1, '眠い': 1, '新しい': 1, '惜しい': 1, '高い': 1, '欲しい': 1, '珍しい': 1, '上手い': 1, 'はやい': 1, 'やるせない': 1, 'カッコイイ': 1, '凄い': 1, 'いい': 1, '恥ずかしい': 1, '優しい': 1})
'ちゃん': 25, '公演': 21, 'さん': 13, '今日': 13, '日': 12, 'アンナ': 11, '生誕': 9, '祭': 9, 'こと': 8, 'ん': 8, '撮影': 8, '山根': 7, '涼': 7, '羽': 7, '嬉しい': 6, '回': 5, 'ちょ': 5, '私': 5, '月': 5, 
'する': 34, 'ちゃん': 25, '公演': 21, 'さん': 13, '今日': 13, '日': 12, 'いる': 12, 'てる': 12, 'アンナ': 11, '生誕': 9, '祭': 9, '言う': 9, 'こと': 8, 'ん': 8, '撮影': 8, '終わる': 8, '山根': 7, '涼': 7, '羽': 7, '嬉しい': 6, 'みる': 6, '来る': 6, 'なる': 6, '回': 5, 'ちょ': 5, '私': 5, '月': 5, 'れる': 5, 'くれる': 5, '思う': 5, 'くださる': 5, 'せる': 5, 'ない'

要約するとこんな感じです。

12 月 23 日 は さ と サンタ だ よ ?✨ 是非 遊び に 来 て ください ! ! ! ! … " " あっぱれ 聴い てる ? ! ? ! 出 たい 出 たい 言いまくっ て たら 限定 復活 さ せ て くれ  た ! だ が しかし 次長 課長 の お 二 人 不在 !? "
アンナ 先生 公演 でし た ✨ そして ずん ちゃん の 生誕 祭 でし た ?
お 楽しみ に し て ください ね ☺ ️ 撮影 終わっ たら ちょ に 誕生 日 プレゼント を 渡し  た すごく 喜ん で くれ て 、 私 も うれ ぴよ ?

f:id:rimt:20180902183927p:plainf:id:rimt:20180902183944p:plain