
【LINE Bot x AI】顔認識を利用したAI Bot「スケベ博士」をPythonとGoogle Apps Scriptで作ろう
*******************************************************
【お得なマガジンもあります】
セット割で、3000円ほどお得になります。現在、3本のチュートリアルが利用できます。
LINE Botの作成を学べるコースです。以下のチュートリアル3点が、セット割で購入することができます。
・【AIプログラミング】LINEに画像を送ったら自動で文字起こししてくれる機械学習アプリを作ろう
・スケベAI「スケベ博士」をPythonとGoogle Apps Scriptで作るスケベ・チュートリアルを公開します
・JavaScriptだけで書ける!LINEからDMMのサンプル動画が見れる、「変態コンシェルジュ」を作ろう!
*******************************************************
画像から似ているAV女優をサジェストしてくれるAI Line Bot「スケベ博士」は、リリースから現在(3/25)、登録ユーザー数が17744名となりまして、大好評をいただいております。
送った画像URLから、似たAV女優が出てくるという、いたってシンプルな機能なのですが、リリース当日で10万アクセスがあり、パンクするほど相当スケベな需要がありました。
また、このサービスの安定稼働のために、現在6万円もの寄付が集まっております。(リクエストが1日に10万を超えてしまい、Google Apps Scriptの上限が3万なので瞬殺されました。性欲が人並み以上にある方、どこに発散したらいいかわからない方がいらっしゃいましたら、こちらのスケベ基金に募金していただけるとうれしいです。)
スケベ博士とは
Lineに画像を送ると、それに似ているAV女優を返してくれるLine Botです。こちらは前田敦子さんの画像を送った時に返ってくる画像となっています。
たったこれだけの機能ですが、裏では顔認識の技術を利用した人工知能で動いています。詳しい説明はこちらのURLをご確認ください!
AIで似ているAV女優を紹介しているスケベAI「スケベ博士」を作りました。①アプリ紹介編
https://review-of-my-life.blogspot.jp/2018/03/sukebe-AI-introduction.html
0から始めるスケベ開発チュートリアルを出版しました
このスケベ博士の作り方が気になる方がいらっしゃるようなので、このスケベ博士のチュートリアルをNoteで出版しようと思い、作りました。
ブログにも断片的に実装コードをアップしています。しかし、実際はそれだけ見ても開発の参考にはなりますが、全体像はわかりません。そこで、実際に実装に使ったコードと、そのコードをこのチュートリアルですべて公開しようと思っています。
読者の対象
読者の対象ですが、まったくのプログラミング初心者では難しいかと思います。求める読者のスキルセットとしては
* 基本的なHTML・CSSの知識(スクレイピングで必要)がある
* 基本的なPythonの知識(少なくとも自分でPythonの実行環境を構築することができる知識、簡単な文法がわかるレベル)がある
* 基本的なJavaScriptの知識(Google Apps ScriptがほとんどJavaScriptと同じなので)がある
* CRUDなどの、基本的なHTTPの通信の理解がある
* 困難な課題も解決しようと思える、圧倒的な性欲がある。もしくは何かしら独学でプロダクトを作りたいという欲求がある
が必要となってきます。
特に、最後の「困難な課題も解決しようと思える、圧倒的な性欲がある。もしくは何かしら独学でプロダクトを作りたいという欲求がある」がないと、挫折する可能性が高いと思います。コピペしてチュートリアル通りにやってもうまくいくことはありませんので、途中ではまるところも出てくると思います。
逆に性欲が強ければハマってしまっても、「広末〇子似の美熟女でスケベしたい!」という強力なモチベーションをもとに頑張れば、僕みたいに独学でプログラミングを勉強している人でもググりながら実装できると思います。性欲ですべての問題を解決しましょう。
追記)ちなみにPythonの技術選定基準は、単に「おっぱいそん」と言いたかっただけです。Rubyでもnode jsでもできると思います。
プログラミング未経験なんですけどデュフフ・・・という人へ
ちなみに、「え、スケベ博士みたいのプログラミングで作ってみたいけど、やったことない!」という方もいらっしゃると思います。その場合は、以下のURLを参考に、必要な知識を蓄えてからこのチュートリアルを購入されるとよいと思います。お勧めは、ProgateでHTML, CSS, JavaScript, Python,コマンドラインを勉強した後に、下の本を参考にしながらある程度環境も作れて、スクレイピングもできるみたいな状態だとよいと思います。
『Pythonによるスクレイピング&機械学習 開発テクニック』レビュー
このチュートリアルを読み切って、できるようになること
このチュートリアルの手順にそって勉強していくと、以下のことがわかるようになると思います。
* Pythonを利用し、自動でネット上の膨大なデータを取得するWebスクレイピングという技術の習得
* Pythonを利用してWeb APIから自動でネット上の膨大なデータを取得する方法
* 顔認識の機会学習API 「Microsoft Azure Face API」を利用し、画像を学習させる方法
* Lineから自動メッセージを返せる、Line Botを作る方法
* 0からプロダクトを作る経験
もしこれのやり方を学べば、あなたのアイディア次第で、いろいろできると思います。例えば同じやり方で、Lineで画像を送信すると、それを文字起こしして帰ってくるサービスだったりもできます。(Googleには文字起こしのAPIもあります)
また、スケベAIの男優版も作ることができると思います。AKB48だったら誰に似ているかアプリなんてものもできると思いますし、婚活サイトで好みの男性検索とかもできると思います!アイディア次第でいろいろなものができるわけですね。
目次
スケベ博士とは
スケベ博士の実装技術とは
実際の処理の全体像
PythonでAV女優の名簿をスクレイピングしよう
スクレイピングのコードの解説
PythonでDMMのAPIから、女優の画像をもう一枚取得しよう
PythonでMicrosoft Azure Face APIから、顔認識を実行しよう!
LineからFace APIで顔認識を行おう
スケベ博士とは
Lineに画像を送ると、それに似ているAV女優を返してくれるLine Botです。こちらは前田敦子さんの画像を送った時に返ってくる画像となっています。
たったこれだけの機能ですが、裏では顔認識の技術を利用した人工知能で動いています。
スケベ博士の実装技術とは
このAI Botは、
* Python
* Google Apps Script
* Microsoft Azure Face API
* DMM API
* Line Messaging API
を利用して作っています。人工知能の部分を扱っている、Microsoft Azure Face APIは、画像を学習させることで、簡単に顔認識を行うことができるAPIです。APIを利用することで、複雑な顔認識のAIの技術を簡単に実装することができます。
実際の処理の全体像
スケベ博士は、まずPythonでAV女優の名前と画像をスクレイピングという技術を使って、6000名のデータを取得します。その次に、DMMに存在する女優だけとりたいので、DMMから存在する女優だけ選び、もう一枚画像を取得します。もともと取ってきたエロサイトと、DMMからとった合計2枚の画像をMicrosoft Azure Face APIに学習させています。ここまでの流れをPythonでやります。
その後、実際にLine Botを動かすのはGoogle Apps Scriptです。
Lineからメッセージを送ると、その内容がGoogle Apps Script上に送信されます。その結果をGoogle Apps Script上で受け取ることができます。そこから受け取った画像のURLを、Microsoft Face APIに送信すると、その画像を読み取って似ている女優の名前を取ってきてくれます。その結果を、DMMに送信すると、その女優名から画像とAVの紹介ページを取ってきてくれます。
このような処理で、画像URLを送ると、それに似たAV女優を返してくれるという処理を実行してくれます。
PythonでAV女優の名簿をスクレイピングしよう
では、さっそくスクレイピングしてみましょう。
まず、AV女優を学習させるために、AV女優の名簿データを取得したいです。その際の手順はブログに書いていますが、こちらでもより詳細に解説したいと思います。
Python 機械学習のための画像収集①:アダルトサイトからAV女優6000名の名簿データをスクレイピングし、スプレッドシートを公開しました
https://review-of-my-life.blogspot.jp/2018/03/python-av6000.html
まず、このAV女優リスト一覧ページから、データをスクレイピングしました。
これらのデータのうち、画像のサムネイルのURLと、女優名をスクレイピングします。
これらのAV女優一覧ページから、すべての女優のデータを取得します。実際にスクレイピングした結果をCSVに保存することができます。
スクレイピングに必要なPythonの知識
さて、Pythonでこれらのサイトから、名前と画像をスクレイピングするときに必要な知識として
* Selenium
* Pandas
があります。
Seleniumは、Pythonでスクレイピングするときに必要なライブラリです。実際に我々がエロサイトでクリックしたりする操作を自動化できるライブラリとなります。Seleniumを利用するには、Selenium用のブラウザのインストールが必要となります。僕の場合はChromedriverというものをインストールしています。が、これはOSによって若干インストール方法が変わるので、Python Selenium Chromedriver MacやらPython Selenium Chromedriver Win10やらで検索すれば、インストールの方法は分かるかと思います。
Pandasは、Pythonの数値演算で利用するライブラリです。Pandasは取得したデータをCSV形式に保存することができるので、今回はこれを利用します。
PandasでCSVの読み書きをする方法については、過去にブログで投稿しているこの記事を参考にしていただけると、理解いただけると思います。
【Python】Pandasチュートリアル - CSVの読み書き:データの表示・追加・編集・削除を行う -
スクレイピングのコードの解説
まず、全体のコードからお見せいたします。
from selenium import webdriver
import pandas
"""***************************************
もろもろの設定
***************************************"""
browser = webdriver.Chrome(executable_path='/mnt/c/workspace/pydev/chromedriver.exe')
df = pandas.read_csv('default.csv', index_col=0) #女優名・女優の画像URLが列に入っている
url = "http://wav.tv/actresses/" #エロサイトの女優リストのページ
"""******************************
CSS SELECTORの設定
******************************"""
PAGER_NEXT = "a.m-pagination--next.is-last.step" #次へボタン
POSTS = "div.m-actress-wrap"
ACTRESS_NAME = ".m-actress--title" #女優名
IMAGE = ".m-actress--thumbnail-img img" #サムネイル画像のURL、srcで画像ファイルを取得できる
"""***************************************
実行部分
***************************************"""
browser.get(url)
while True: #continue until getting the last page
#5-1
if len(browser.find_elements_by_css_selector(PAGER_NEXT)) > 0:
print("Starting to get posts...")
posts = browser.find_elements_by_css_selector(POSTS) #ページ内のタイトル複数
print (len(posts))
for post in posts:
try:
name = post.find_element_by_css_selector(ACTRESS_NAME).text
print(name)
thumnailURL = post.find_element_by_css_selector(IMAGE).get_attribute("src")
print(thumnailURL)
se = pandas.Series([name,thumnailURL],["name", "image"])
df = df.append(se, ignore_index=True)
except Exception as e:
print(e)
btn = browser.find_element_by_css_selector(PAGER_NEXT).get_attribute("href")
print("next url:{}".format(btn))
browser.get(btn)
print("Moving to next page......")
else:
print("no pager exist anymore")
break
#6
print("Finished Scraping. Writing CSV.......")
df.to_csv("output.csv")
print("DONE")
処理としては
1. エロサイトにアクセス
2. 「次へ」ボタンが存在する限り、以下の処理を実行
・名前と、サムネイル画像のURLを取得し、それをpandasのデータフレームに保存
・「次へ」ボタンをクリックし、次のAV女優一覧ページに移動
3.「次へ」ボタンが存在しなくなったら、処理をやめて、スクレイピングしてきたデータをCSVに保存
という形になっています。
まず、seleniumとpandasをインポートします。
from selenium import webdriver
import pandas
ここから先は有料エリアとなります。有料エリアを全て実装すると、スケベ博士が実装できるようになっています。また、もしわからないことがあればこちらから質問を飛ばせるようになっているので、サポートも対応しています(ただしすべてには答えられませんので、可能な範囲でお答えいたします)
【LINE Bot x AI】顔認識を利用したAI Bot「スケベ博士」をPythonとGoogle Apps Scriptで作ろう
2,980円
