メインコンテンツへスキップ
見出し画像

AIに記事執筆を任せてみた

    創作は楽しいものだが、決して楽なものではない。納得できるものが出来上がるまでに時間や労力をかなり費やすことになる。いわゆるスランプに陥ることもある。

    三島由紀夫はスランプに対して否定的で、それを言い訳にすることを嫌っていた。しかし凡人の私たちはそうはいかない。また様々な情報が溢れる世の中では、ある程度の頻度で投稿しなければ目にしてもらえないかもしれない。

    この葛藤の中で考えたのが「AIに記事執筆を任せる」ということである。技術的には可能である。禁じ手に近いような気もするが、一種の実験と考えれば許されるかもしれない。そこで早速実行することにした。

    モデルとプログラム

    まずは元になる言語モデルを用意する。人間で言うところの予備知識のようなものである。ここにたくさんの文章が記録されており、それをもとに新しい文を生成する。

    今回はjapanese-gpt-1bというものを使用した。これは「AI女子高生りんな」を手がけたrinna株式会社から公開されたものである。これを以下のようなコードで動かす。専門的な記事ではないので多少省略している。

    import torch
    from transformers import T5Tokenizer, AutoModelForCausalLM
    
    # トークン化とモデルの準備
    tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt-1b")
    model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-1b")
    
    # 元になるテキスト
    text = """
    今回は世界史の勉強法についてお話しします。まずは
    """
    
    # テキストのエンコード
    token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")
    
    # 文章生成
    with torch.no_grad():
        output_ids = model.generate(
            token_ids,
            do_sample=True,
            max_length=100,
            min_length=100,
            top_k=500,
            top_p=0.95,
            pad_token_id=tokenizer.pad_token_id,
            bos_token_id=tokenizer.bos_token_id,
            eos_token_id=tokenizer.eos_token_id,
            bad_word_ids=[[tokenizer.unk_token_id]]
        )
    output = tokenizer.decode(output_ids.tolist()[0])
    print(output)

    プログラミングについて知識のない人でも、この程度の簡単な処理で十分だということを前提にしてくれればよいと思う。

    完成したもの

    このようにして出来上がった記事が以下のものである。実際に読んでその内容や表現が破綻していないかを確かめてほしい。ちなみに、これらはこの記事よりも前に投稿済みである。

    これらの記事では最後に人工知能の手によるものであることを明かしている。しかし、もしこの注釈がなかったらどうだろうか。人間の書いたものではないと気づくことはできるだろうか。

    執筆ができるしくみ

    機械が自然な文章を書くなんて、知識のない人からすればまるで魔法のように思える。これを見れば、「人工知能が仕事を奪う」という類の危機感も持つかもしれない。ただしくみを理解すればそこまで驚くことではない。

    先述したように、元になるモデルには大量の文章が読み込ませてある。Wikipediaやブログなど様々だが、その中から確率で「それらしい」ものを選んでいるのである。

    例えば元になるテキストに「勉強」という単語が多く含まれているとする。「勉強」と何度も繰り返す記事は「受験」に関するものであることが多い。したがってそのような文章をデータの中から引っ張ってくる、というような感じである。

    もしここで「ラーメン」や「競馬」などが出てきたら不自然だと思うだろう。こういったものは統計的にも同じ記事で使われることのない単語である。このような取捨選択で違和感を減らしているのである。

    このような説明は専門家の方からは不満だろうが、自然さというものは観念的なものでもあるのでお許しいただきたい。とんでもない奇跡が起こっているのではなく、「それらしさ」を追求することで自然な文章に見えているということを指摘したいのである。

    人間が書く意義はあるのか

    自動で生成した記事というのは自然で内容もそこまでおかしいものではない。しかし逆にいえば無味乾燥としていて明日には忘れてしまうような文章である。当たり障りのないのはいいが、あってもなくてもいいようなものだ。

    人間が文章を書くとこれと逆のことが起こる。まったく違う内容、時には批評と小説というように形式まで違っても、なぜかその人らしさが現れるのである。

    その原因は文体や表現かもしれない。しかし正体がはっきりしないところもある。作家によってはこの自分の持つ何かから脱却しようとすることもあるが、大抵の場合は苦労しているのをみると、これを正確に突き止めるのは難しいのかもしれない。

    いずれにせよ、私たちが名文と呼ぶものには少なからずこのようなものが含まれているのではないだろうか。その人らしさというものはたったひとつしかないため、多数が重要な統計学的には何の意味もない。しかしこのような時には偉大な武器になる。

    「それらしさ」から脱するとしても自分を明らかにすること。もし機械任せにできるとしても、それでもなお文章を書く意義があるとしたらここにその意味があるのかもしれない。



     
     
    8つのアプリの開発と運営を行なっています。現在学習中の言語はSwift、Python、ロシア語です。本の紹介なども記事にしているのでよければフォローお願いします!

    あなたへのおすすめ