こんにちは!
最近猫カフェに入り浸っている、インターン生の小熊です。
(カメラ目線のしかめっ面の子が可愛すぎませんか…?)
皆さんは会社の上司に
「新規事業案をいくつか考えてくれ!1時間後の会議で発表だ!」
と言われたらどうしますか?
私だったら困り果ててフリーズします。
今回はそんな時にフリーズしないよう、新規事業生成器を作ろうと思います。
(そんな時がめったに無いのは内緒です…)
どの部分を自動化するの?
新規事業を考える際に苦戦するのは、0→1でアイデアを出すフェーズだと思います。
なのでそこを自動化してみましょう。
具体的にはチャットボットなどに使われる「マルコフ連鎖」の考え方を用いて、事業概要を自動生成します。
マルコフ連鎖とは?
マルコフ連鎖はマルコフ過程の特別な場合です。
マルコフ過程の定義は
そしてマルコフ連鎖の定義は
マルコフ、マルコフうるさいですね(笑)
天気予報の例で簡単に説明すると
「t日目の天気を予想する時に、t-1日目の天気のみが関係する」という状況が成立しているのがマルコフ連鎖です。
t-1日より前の日の天気は、明日の予報に全く関係ありません。
非常にざっくりな説明ですが、この記事を読むためだけならこの程度の理解で問題ありません。
マルコフ連鎖の応用例
マルコフ連鎖が応用されている例を挙げると、
・Twitterのチャットボットしゅうまい君
・夏目漱石風文章の自動生成
・本の見出し自動生成
などがあります。
自然言語処理の中でも主に文章生成のタスクに使われているみたいです。
次にこれらの仕組みを説明します。
マルコフ連鎖を使った文章生成の仕組み
マルコフ連鎖を使った文章生成での「状態」は「単語」のことです。
単語Aの次に来る単語Bは、単語Aのみによって確率的に決まります。
Aよりも前の単語は関係ありません。
この考え方を使って単語を次々に予想し、最終的に文章を生成します。
具体例で考えてみましょう。
・私は本が好きです → 私 は 本 が 好き です
・私は犬が嫌いです → 私 は 犬 が 嫌い です
・私は彼女が好きです → 私 は 彼女 が 好き です
上の3つの文を材料に、マルコフ連鎖を用いて文章生成を行います。
まず、文章を単語に分割します。こうして出来た各単語が、マルコフ連鎖における「状態」に対応します。
この分割作業を「形態素解析」といいます。
そして次に、マルコフ連鎖を状態遷移図で表現します。
この図をマルコフモデルと言います。
例で挙げた3つの文を見ると「私」の後には絶対に「は」が来ています。
なので「私」という状態にいる時、次の状態は確率1で「は」になります。
次に「は」に注目すると「は」の後には「本」と「犬」と「彼女」が来ています。
なので「は」という状態にいる時、次の状態はそれぞれ確率1/3で「本」か「犬」か「彼女」のどれかに決まります。(次に来る単語を完全ランダムに選ぶとしています)
赤枠の部分に注目すると「好き」のほうが「嫌い」よりも確率が高く、頻繁に来る単語が選ばれやすいモデルになっていることが分かります。
このモデルが出来たら、ここから後は簡単です。
「私」を先頭にし、上図の通りの確率で単語を決定していけば文章が生成出来ます。
例えば生成されうる文として「私は彼女が嫌いです」がありますが、これは初めに用意した3つとは異なっていますよね!
この例は3つの文章しか用意していないので、元の文と少ししか変わらない文章が生成されてしまいます。
ですが、多くの文章を使ってマルコフモデルを作ることで、元の文章に似た、より内容の異なる文章を生成することが出来ます。
新規事業生成器の概要
ここでは、上の文章生成技術を使ってどのように新規事業案を生成するか説明します。
まず用意する文章データですが、弊社ディップが運営するwebメディア「StartUpTimes」のインタビュー記事の見出しを使います。
この見出しは、以下のように各企業の事業概要を短く表現しています。
https://startuptimes.jp/2020/03/05/209396/
今回はこの見出しを生成するタスクを通して、新規事業案の自動生成を行います。
新規事業生成器の作成
1.StartUpTimes内のインタビュー見出しをスクレイピング
スクレイピング結果

2.見出しを形態素解析で分割
pythonの形態素解析libraryであるMeCabを使いました。
形態素解析結果(一部)
[‘[BOS]’, ‘モノ’, ‘づくり’,’’の’, ‘プラットフォーム’, ‘で’, ‘、’, ‘業界’, ‘に’, ‘革命’, ‘と’, ‘イノベーション’, ‘を’, ‘起こす’, ‘。’, ‘――’, ‘株式会社’, ‘FUN’, ‘UP’, ‘(’, ‘ファン’, ‘アップ’, ‘)’, ‘[EOS]’]
[‘[BOS]’, ‘パーソナリティ’, ‘重視’, ‘の’, ‘アプローチ’, ‘で’, ‘日本’, ‘の’, ‘働き’, ‘方’, ‘を’, ‘変える’, ‘、’, ‘PortRay’, ‘株式会社’, ‘「’, ‘OSUMITSUKI’, ‘」’, ‘[EOS]’]
3.マルコフモデルを作成
上で説明したこのモデルを作成します。
ちなみにpythonでマルコフモデルを作るときは、辞書型を利用します。
{‘現在の単語’:次に来る単語の候補たち}
という感じです。
これを全状態について行います。
4.見出し生成
最後に見出しの生成です。
pythonによるコーディングはこちらの記事を参考にしました。
url:https://qiita.com/interharuki/items/444781f9c7921c36678e
結果
何回か見出しの生成を試してみて、面白いものがいくつか出てきました。
・プロスポーツ選手の技術を駆使し、利益を生むAI
: プロスポーツ選手の動作を再現して課題解決するAIとか…?
・五感を使った、人材シェアリングサービス
:驚異的な感覚を持った人だけを集めた人材サービスとか…?
:全体音感レンタル,動体視力レンタルとか??
・起業に必要な全栄養をこの一杯のなかに!
:起業に必要な栄養とは!?
:右脳的思考を高めるためのどんぶり??
・就活を可視化するAI
: かっこいい。使ってみたい。時期や選考状況に合わせたアドバイスもしてくれたら尚良い。
・eスポーツの夢の国を作る
:eスポーツのアトラクションパークがあったら楽しそう。
生成したテーマに肉付けをしていったらユニークな事業案が出来そうですね!
最後に
今回はマルコフ連鎖、自然言語処理の勉強をかねて、新規事業案生成器を作ってみました。
実用性は勿論ありませんが「何でもいいから案が欲しい、、、」という時には使えるかも知れません(笑)
今後も「実装してみた系」の記事を書いていく予定なのでお楽しみに!
記事を読んでみて自分もディップで記事書きたい!データいじりたい!と思った方はこちら!