【技術書店にて出版】自然言語解析、トピックモデルについて徹底解説!

この記事を書いた人
北爪 聖也

株式会社pipon代表取締役。 キャリアはADK(広告代理店)でテレビ広告運用をして残業120時間するが、ネット広告では自分の業務がAIで自動化されていることに驚愕する。そこで、機械学習受託会社に転職し、技術力を身につけた後、piponを創業。現在、製薬業界、大手監査法人、EC業界、様々な業界でAI受託開発事業を運営。

今回は技術書店というイベントで自然言語解析にまつわる本を出版したので、そのことについて話あったことを書き起こししています。今回もこちらのVoicyの内容を書き起こしたものになっています。

[chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]宜しくお願いします。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”] よろしくお願いします。 [/chat]

技術書店とは?

[chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]技術書店っていうのは?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]技術書店っていうのはですね、もう第5回になるイベントなんですけれども、エンジニアが自分の好きなテーマを好きに本を書いて売りまくるという同人誌のイベントです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]そういうこと。コミケみたいなもんだよね?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。コミケのエンジニア版だと考えて頂ければと。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なるほど。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]でもどんどん大きくなって、第5回は1万人来場と。もうね、異様な熱気で、盛り上がりで。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]エンジニアしかいないんだもんね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]エンジニアしかいないっすね。スポンサーもすごいんすよ。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]そんだけエンジニアが集まればね、スポンサーは付くよね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。ゴールドスポンサーはメルカリとリクルートです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]もう、スーパー大手が。もうIT2強が出てきた感じですね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうなんですよ。まぁ、1万人のエンジニアにプロモーションできるとしたら、安いもんなんでしょう。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]でしょう。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]もう、いろんな本が売ってました。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なんかあった?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]いやもう、いっぱいありますよ。マイニングとかブロックチェーン系の話もあれば、AR・VRとか、そういう最新の技術もあれば、普通にFirebase(サーバーサイド・・・簡単に開発できるGoogleのサービス)でアプリケーションを作りましたみたいな本もあれば、いろんな本があります。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]たしかに、普通に書店で売ってる本ていうのは「1から始める始めるブロックチェーン」といういわゆる教科書的なやつが多かったけど、これはエンジニアが趣味で作ってる本だから、色々テーマに特化したりとか、熱量がやっぱり違うわけでしょ、きっと。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。もう自分の好きな分野をとことん本が並んでたりとか。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]ってことだよね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]面白かったのは、あれもありましたね。純肉培養っていう。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]何すかそれ?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]肉を培養するためにはどうやったらいいのか?というキットを1万円で売ってて、そのキットの使い方みたいな本を売ってたブースもありましたね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]もう、あれだね。エンジニアというか生物学的な方向にもいってるんですか。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そういう方向もあったんですよ。異彩を放ってましたね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]特殊な集まりの中でも特殊って感じですね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]あれは面白かったですね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]純肉培養がもしかしたらこれからくるかもしれない。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]あーそうですね。なにかの記事で読んだんですけど。1キロの肉を培養するのに、何万円っていうお金がかかっちゃって、スーパーで買えば、100gで300~400円なので、数百倍しちゃうらしい。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]コストが全く合わないと。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]今はコストが全く合わない、けど、これがどんどん下がってくるらしいです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]ってなったら身近に買えますよねって。畜産業がなくなると。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そしたらすごい世界ですよね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まあ、そこまで行くのは何年かかるかわかんないですけどね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。・・・っていう本もあったりして。実は僕も本を出したんですよ。「橋下徹さんのメルマガを解析した」っていう。[/chat]

橋下徹さんのメルマガを解析

[chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]橋下徹さんのメルマガをいままで119号とか出ているんですけど、僕はそれを全部とっているので、それを自然言語解析っていって、データにしてPythonでね、自然言語解析するんですよ。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]自然言語解析ってなんですか?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]自然言語解析は、人間が日常的に使っている言語をコンピュータに処理させる技術です。Step1は、文章を意味のある最小単位に落としますと。品詞とか、そういうレベルに落としていく。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]うん。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]例えば「僕がのがっちと話しています。」っていう文章があったとしたら、「僕」「が」「のがっち」みたいな、品詞レベルでの意味の分かる最小単位に落としますと。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]文章をスライスするわけだ。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。それで、助詞には意味がないので、削ってしまい、名詞とか形容詞とか動詞とか、重要な品詞のみに絞って抽出します。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]「が」「は」みたいなやつは削るというわけですね?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。重要な品詞だけ絞って、その後、数値ベクトル、数値の羅列に変換します。この数値への変換方法方は色々あるのですが、今回は使ったのは単純に単語の頻度表現に変換しました。つまり、「私」っていうカラム(列)があって、「のがっち」っていうカラムがあって、それらの単語が何回出現したかという回数をまとめていくんです。そうすると、メルマガ第○号は[0,2,3,0,0]みたいに、数値ベクトルで表すことが出来るようになる。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]うん。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]で、数字にさえしてしまえばもうこっちのもんで、いろんなアルゴリズムを適応することもできますし、そこから色々と解析ができる、と。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まずは、「私」とか「せいや」とかそういう言葉にどんどん分割していって、どんだけ何回か言葉が出てくるのか?・・・(例えば)橋下さんは「私」という言葉を百回も使っていたらその回数が数値ベクトルの中に入ってくるんだ。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なるほど〜。で、アルゴリズムに適用すると。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。数値ベクトルにさえ落としてしまえば、アルゴリズムに適用できる。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]どんなやつよ?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]僕が今回使ったのは、LDAっていう教師なし学習です。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]何の略ですか?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]Latent Dirichlet Allocationっていうアルゴリズムで、一種のクラスタリングみたいなもの。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]クラスタリング。こういう言葉をなんかたくさん使っているトピック・・・「私」と「あなた」「愛してる」みたいな、そういう言葉をたくさん使っていたら、それはきっとラブストーリーだろうと。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。ある文章の中からこの文章は、どういうトピックについて話しているのか?という確率分布を計算してくれるアルゴリズム。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なるほどね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]で、このLDA使っていたりするスマニュー(スマートニュース)さんとかがよく使ってる技術で、いろんな記事をクローリングしてきて、この記事はビジネスについて話しているとか、この記事はテクノロジーについて話しているだとか、そういうのを分類してくれるアルゴリズムなので。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]じゃあ、ビジネスレベルで使われているアルゴリズムなんですね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]で、橋下徹さんのメルマガ119号を32個のトピックに分類して、各メルマガはどのトピックに所属しているのか?っていうのを、出したっていう。そんな本になっています。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]119号のメルマガは32個のトピック分けられると、そのLDAを使うと。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]どんなトピックがあるんですか?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]例えば、「橋下徹のトランプ論」。このトピックに所属しているメルマガでは、「インテリ」とか、「トランプ」っていう単語がこのトピックの特徴単語として挙がっています。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]インテリとトランプ、いかにもトランプの話題という感じですかね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね。トランプはこういう改革をしようとしたけど、インテリがそれを批判するみたいなという話が出てきますね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]だから「橋下徹のトランプ論」って名付けたんだね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そう。メルマガをトピックに分類したあと、各メルマガはどこのトピックに分類されるのか、っていうのを所属確率を算出します。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まあ、110何個あるけど、結局喋ってるのは32個に分類されるよねと。で、各メルマガはどのトピックに所属するのかっていう確率を計算すると。確かにクラスタ分析っぽいね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうなんです。クラスタリングですね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]100人いるけど結局これは、5個のクラスタに集約される、みたいな。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうそう。マーケティングとかでよく使われるのは、こういう行動をしているとクラスタAとかいうふうに分類すると思うんですけど、それの自然言語解析バージョン。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]ってことですよね。なるほど。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]その橋下徹のトランプ論っていうトピックだったら、メルマガナンバー18とかいろんなところで所属しているのが分かります、っていうトピックが出せるんですよね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]僕いま本を読んでいますけども、1番の頃から100番の頃までまんべんなく登場してるって感じですよね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうなんです、トランプさん話題を振りまいてくれますから、いろんなメルマガでトランプさんの話題が出てる。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なるほど、橋下さんも語りたいと。トランプに関して。またトランプの話題触れたよと。これで俺のメルマガが捗る、みたいな感じなんでしょうね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そういうことです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]他に何かあります?面白いの。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]面白いの、後はですね。あるトピックでは、安倍さん(安倍総理)の対応ミスっていうトピック名を付けたモノがあります。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]そのトピック名を付けたのはせいやでしょ。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうです。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]その前にさ、そのトピックに出てくる単語っていうのを教えて下さいよ。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]特徴的な単語は「組織」「森友学園」「挽回」っていった単語になってます。[/chat]

[chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]あと「問題」とかあるね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうですね、ここら辺の単語がこのトピックを構成する上での特徴単語。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]あと「財務省」とかもあるよね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]これは、安倍さんがこの一年通じて加計問題もそうだし森友学園問題もそうだし、財務省の対応のところでもそうだし、いろんなところで、こうすればもっとこう不満がすぐに収まったのにっていう、対応ミスだったっていうふうに橋下さんがよく論じてたんですよ。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]なるほど。でもこれ「加計」っていうの出てないよ。「加計学園」とかはないよ。森友と財務省はある。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]「加計」はなかったですかね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]でもまあ、挽回とかあるから。橋下さん的には、安倍総理でそういう問題が起きたけど対応次第では挽回できたはずだろう、みたいな。やつはミスったみたいなのを論じたんでしょうね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]論じてました。で、それはどのメルマガ号で論じていたかというと、その所属確率はこんな感じで出せますと。[/chat]

[chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まあ、10回ぐらいは出てるよね。110個のうち。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]あと、一個しか所属しないトピックもあります。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まあ、32個もあると、結局それってもうほぼそれしかねーじゃんってやつもありそうだね。例えばなにこれ、イタリア五つ星運動っていうトピックがありますね。[/chat]

[chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]イタリアって第二世界大戦の失敗の時にムッソリーニが悪かったという話で、今政党が20個とか30個とかちっちゃい政党がいっぱいあって、誰も意思決定できないみたいな感じになっているらしいんですよ。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]アメリカの二大政党とは全く違うって感じ?[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]全く違うんですよ。これでは暴君は生まれないけれども何も決定できない困った状態。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まとまらないと。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そして投票率が低くて政治が機能しない。なので、小さい政党の中で1番になった政党に全権委ねようよ、というのが五つ星運動です。しかし、それでは第二次世界大戦と同じ失敗をすることになるということで、棄却されたんですけど。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]過半数もってなくても決定しちゃおうと。でもそれって民主主義の原則としてどうなのっていう話になるからね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]そうなんです。それがイタリア五つ星運動ですね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]まあ、この自然言語解析を使うと、さっき言ったクラスタ分析のような感じで、今回は橋下さんのメルマガだったけれども、例えば新聞とかあるニュースメディアとか、どういうトピックとかを主に扱っているんだっけ、っていうのを分析するのに非常に使えるっていうことですよね。[/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]おっしゃる通りです。そういうことですね。[/chat] [chat face=”1a2c3504-nogatti.jpg” name=”のがっち” align=”right” border=”none” bg=”blue”]興味のあるひとはちょっと試してみるとよさそうですね![/chat] [chat face=”69a08dd7-prof.jpg” name=”運営者” align=”left” border=”none” bg=”blue”]githubにコードは上げているので、cloneして、すぐに使えますので、興味ある方は試してみてください^^[/chat]

ということで、今回は、自然言語解析の本を出版したことについて話しました。本の全文はこちらのリンクから読むことが出来ます!