まわりの人の独り言をずっとメモしてたので、そのログから新しい独り言を自動生成してみる

こんにちは。マネックス・ラボの田中です。

突然ですが、皆さんは独り言をよく言いますか?
私はあまり言いませんが、人の独り言を聞くのは結構好きです。

そのため、私には人の独り言を記録するというライフワークがあります。
これまでプロジェクトの都合や人の異動で、席替えが3ヶ月に1回くらいあったので、10人以上の独り言を記録してきました。

f:id:PonT:20220208124112p:plain

お気に入りの独り言を抜粋しました

今は在宅勤務が増え、フリーアドレス制が導入されたので、独り言を聞く機会が少なくなりました。さみしいことです。
そこで、今まで記録してきた独り言から、2種類の方法で文章を自動生成してみることにしました。

目次

AIのべりすと

AIのべりすと(https://ai-novel.com/)という小説AIがあります。

ご存知の方も多いのではないでしょうか。今一番アツい文章自動生成ツールだと思います。

これにさきほどの独り言リストを入れて、「続きの文を書く」ボタンを押します。

f:id:PonT:20220208130948p:plain

下の方の青い文字が、AIの作成した文章です。大変それらしいものが出てきました。
「2022/7/26 16:51」など、実は未来予知で、本当にその時間に隣の人が言うかもしれません。(((( ;゚Д゚)))

マルコフ連鎖

エンジニアらしいこともしたいので、pythonで文章を自動生成してみます。

今回は、マルコフ連鎖のライブラリはmarkovify、形態素解析エンジンはMeCabを使います。
markovify(https://github.com/jsvine/markovify
MeCab(https://taku910.github.io/mecab/

$ brew install python
$ pip install markovify
$ pip install mecab-python3
$ brew install mecab mecab-ipadic
# MeCabを使ってみる
$ mecab
こんにちは。マネックス・ラボの田中です。
こんにちは	感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
。	記号,句点,*,*,*,*,。,。,。
マネックス・ラボ	名詞,一般,*,*,*,*,*
の	助詞,連体化,*,*,*,*,の,ノ,ノ
田中	名詞,固有名詞,人名,姓,*,*,田中,タナカ,タナカ
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
EOS

日時を抜いた独り言のリストをdokuhaku.txtという名前で作成し、同じディレクトリに以下のファイルdokuhaku.pyを作成します。

import MeCab
import markovify

# テキストを読み込む
text = ""
with open('dokuhaku.txt', 'r') as f:
    text += f.read().strip()

# Mecabで分かち書き
mecab = MeCab.Tagger()
splitted_text = ""

for line in text.split():
    mp = mecab.parseToNode(line)
    while mp:
        try:
            splitted_text += mp.surface
            if mp.surface != '。' and mp.surface != '、':
                splitted_text += ' '    # split words by space
        except UnicodeDecodeError as e:
            print(line)
        finally:
            mp = mp.next

# markovifyで学習させる
text_model = markovify.NewlineText(splitted_text, state_size=2, well_formed=False)

# 生成した文章を出力する
sentence = text_model.make_sentence()
print(''.join(sentence.split()))

実行してみます!!実行結果は毎回変わります。

$ python3 dokuhaku.py
さいあくだ~ううーんなんでやろなぁぬぅぅぅぅ~~~~~ン、んんっ?んん〜?あれ?どっちだ??

こちらも、それらしいものが出てきました。やたら苦しんでますね。

まとめ

いかがでしたか?

個人的には、自動生成したものよりも、実際の独り言の方が面白かったです。
独り言の分野では、まだAIより人間が勝っているようです。(独り言の分野とは??

田中 妙佳システム開発部 マネックス・ラボ