#電子書籍「人工知能ポルノ」出版
人工知能ポルノ: コンピュータが書いたエロい文章
本記事の生成結果を電子書籍にしました。200~400文字程度の文章を100編掲載しています。 ご興味のある方はどうぞ!
自動生成してえ
こちらの記事に感銘を受けた。自分も何かやってみたいと思ったが、DeepLearningを用いての自動生成はハードルが高く、まずはマルコフ連鎖を使って自動生成してみようと思った。
【エヴァンゲリオン】アスカっぽいセリフをDeepLearningで自動生成してみる
そうだ!AVだ!
自動生成にはデータが必要。自分はアニメがわからんので、エヴァンゲリオンの真似をしてもテンションがあがらない。自分のテンションがあがるものは?...すぐ思いついたのがAVの紹介文だ。
AV紹介文のメリット
- 120字程度でデータが多そう?
- タイトルと比べれば生成する文にバリエーションが出そう
- 人を興奮させようという熱意ある文章
- 無機質でないので楽しそう
- DMM APIで取得できる
- 2016年3月にver3.0が出た
- 何かしら改良されてるはずなので開発が以前より容易かも
- 2016年3月にver3.0が出た
DMM APIを登録
https://affiliate.dmm.com/api/guide/
とういうことで早速始める。こちらの利用ガイドを参考に。
- DMMアフィリエイト登録
- アフィリエイトID発行
- API IDを取得
作品紹介文を取得
こちらを参考にした。DMMのAPIはver3.0になっているのでそこは修正する必要がある。
http://akms.hateblo.jp/entry/2013/05/24/234703
コード
1000作品の紹介文を取得してero.txtに書き込んだ。
# -*- coding: utf-8 -*-
require 'open-uri'
require 'rexml/document'
def getURL(offsetNum)
url = "https://api.dmm.com/affiliate/v3/ItemList?"
queries = []
params = {
"api_id" => 'YOUR_API_ID',
"affiliate_id" => 'YOUR_AFFILIATE_ID',
"site" => 'DMM.R18',
"service" => 'digital',
"floor" => 'videoa',
"sort" => 'rank',
"offset" => offsetNum,
"hits" => 100,
"output" => "xml"
}
params.each_pair do |key,value|
queries.push("#{key}=#{value}")
end
url += queries.join("&")
return url
end
# 書き込み用テキストファイルを開く
File.open("ero.txt", "w") do |file|
# 取得したいoffsetの回数だけLoop
10.times do
url = getURL(num)
res = open(url)
REXML::Document.new(res).elements.each("xml/result/items/item") do |element|
# 作品紹介文を書き込む
file.puts element.elements['comment'].text
end
end
end
マルコフ連鎖を行う
MeCabを準備
いろいろなやり方があると思うけど、下の記事を読んで設定した。
http://qiita.com/grachro/items/4fbc9bf8174c5abb7bdd
マルコフ連鎖のスクリプト準備
こちらのスクリプトを参考にした。
https://github.com/o-tomox/TextGenerator
自分はPython3系で実行したので、上のスクリプトを2系から3系の書き方に修正した。
https://gist.github.com/naoyashiga/4dfaa7e2a5222a9cadd9
#紹介文を自動生成
紹介文を取得
$ ruby dmm.rb
dbに書き込む
$ python PrepareChain.py
自動生成
$ python GenerateText.py
出力結果
出力できた
おっと内容が卑猥すぎたようだ!残念ながらここでは公開できない
気になる諸君はぜひ自分でやってみよう!
考察と展望
- Deep Learningでもやってみたい
- 生成文章量を調節できるようにしたい
- もっと大量の文章をもとに生成してみたい
#追記
ニューラルネットワークを用いてやってみました。
DMM API、char-rnn(リカレントニューラルネットワーク)でAV作品の紹介文を自動生成 - not good but great