【Tech Trend Talk vol. 11】社外向け勉強会「自然言語処理の初歩と活用を学ぶ」を開催しました!|東京のWEB制作会社・ホームページ制作会社|株式会社GIG

【Tech Trend Talk vol. 11】社外向け勉強会「自然言語処理の初歩と活用を学ぶ」を開催しました!

【Tech Trend Talk vol. 11】社外向け勉強会「自然言語処理の初歩と活用を学ぶ」を開催しました!
News

こんにちは。GIG社員の松竹です。

この記事が公開される頃にはホワイトデーがきっと近いですね。私は「チョコを食べすぎると鼻血が出る」よりも「チョコを食べすぎるとニキビが出る」の方が深刻なお年頃。なのですが、チョコ大好きなので、ホワイトデーという口実に乗っかり自分宛に買いたいと思います。

さて、今回は社外勉強会「Tech Trend Talk Vol.11 機械学習の応用と自然言語処理の活用」のレポートをお送りいたします。

 

 

機械学習の応用と自然言語処理の活用

今回の講師は、GIGの技術顧問兼外部取締役の中島さん。これまで5回にわたりPythonを用いた機械学習の基礎を教えてくださっています。今回は、実務向けに機械学習を応用する方法と自然言語処理の活用法を紹介してくれました。

中島 正成(なかじま まさのり):株式会社メタップスの取締役CTOとして立ち上げに参画。機械学習とデータサイエンスのプロダクトインプリメントに取り組む。その後、エン・ジャパン株式会社経営戦略室経てIGS株式会社に執行役員CTOとしてジョイン。教育領域へのA.I活用プロダクト開発に取り組む。

 

過去のTech Trend Talk「機械学習回」はこちら▼

【Tech Trend Talk vol.1】社外向け勉強会「中学生レベルの数学で学ぶ機械学習モデルとPythonライブラリの話」を開催しました!

【Tech Trend Talk vol.3】社外向け勉強会「機械学習の教師なし学習をやってみる」を開催しました!

【Tech Trend Talk vol.5】社外向け勉強会「機械学習の教師あり学習をやってみる」を開催しました!

【Tech Trend Talk vol.7】社外向け勉強会「ランダムフォレストを用いたスコア予測の実践」を開催しました!

【Tech Trend Talk vol.9】社外向け勉強会「データ処理と機械学習アルゴリズム」を開催しました!

当日のスライドはこちら▼

 

 

機械学習の実務への応用

中島さん:「いまの時代、機械学習のやり方自体は検索すればたくさん出てきます。ソースコードを真似してサンプルデータを処理するだけなら簡単です。そこで今回は、機械学習を実務に応用するにはどういうプロセスを踏んでいくといいのかを説明します」

中島さん:「まず紹介するのがCRISP-DMというプロセスモデル。データマイニングの方法論を規定しています」

中島さん:「CRISP-DMとは、データサイエンスを実務に取り入れるに当たって、

  1. ビジネス自体の理解を深める
  2. データを探索する
  3. モデルを作る
  4. モデルを評価する
  5. 評価した結果を受けてプロセスの最初に戻る

というサイクルを回すと良い、という方法論です」

中島さん:「ただし、CRISP-DMのドキュメントは長文かつ学術的で、そのまま現場に適用するのは難しいでしょう。そこで紹介したいのが、CRISP-DMの言葉をよりわかりやすく、シンプルに表した方法論です」

1. 目的を定める

 

中島さん:「まず定めなければいけないのは、データと機械学習を用いて“何を実現したいのか”、つまり目的です。」

中島さん:「機械学習は決して魔法の箱ではないのです。しっかり目的を定めて取り組まなければ、機械学習は効果をなさないと思ってください」

中島さん:「このステップは、さらに細かな3つのステップに細分化できます。

  1. 「データを活用して何をしたいのか(=目的)」を明らかにする
  2. 目的に対するプロセスを整理し、可視化する
  3. プロセスごとの課題を整理し、可視化する

プロセスを整理し、一番コストがかかっているところを探します。それこそが一番、データサイエンスを投入するメリットがある場所です」

中島さん:「機械学習やデータサイエンスを導入することにもコストはかかります。例えばマシンを用意する費用や、調査・実装の時間などです」

中島さん:「機械学習にも苦手なことがあります。例えば機械学習を人材採用に用いるケースだと、”マッチしない人を落とす”ことには効果を発揮しますが、”よい人材を判断する”のは困難です。マッチしない人に共通の要因は割り出しやすいですが、よい人材はどの要素がその企業にハマったのか多種多様で、一概に言えません」

中島さん:「要件が曖昧なまま、”なんかやってよ”でプロジェクトを進行するのが一番よくないです。目的がないとデータ分析すらできません。プロセスと課題をちゃんと整理して、どこがコア要件なのかを整理しておくのが大事です」

<例>
目的を定める→新卒を大量に効率よく採用したい
「効率よく採用したい」と「いい人を採用したい」では必要なデータが変わる

 

2. 現状を把握する

中島さん:「目的を定めたあとは、その目的を達成するための必要なデータが揃っているのかを確かめる必要があります。いま手元にあるデータは何で、他にどんなデータが必要かを把握します。

このステップを細分化すると、

  1. 手持ちのデータの整理と分析
  2. プロセスと課題に対して有効なデータと足りないデータをリスト化
  3. 目指すべき姿の言語化

となります。」

中島さん:「こんなデータがあるといいのになあ、と思ったことをリスト化しておくのが大事です。今日では、足りないデータも簡単に集められます」

 

3. 目標を定める

中島さん:「目的が”機械学習で何をしたいのか”だったのに対し、ここでの目標とは”具体的な数値目標”です」

中島さん:「もし課題に対する正解のデータを用意できなくても、教師データを用意できないからといって手を止めないようにしましょう。ここで大事なのは、仮説のデータを作ることです。ラベリングをしてもいいし、人の感覚でもいいでしょう。仮説があってるかどうかをデータ検証のプロセスで決めます」

中島さん:「重要なのは、もし正解データがなくても次のデータが用意できるかどうか。『このデータがあればなんとかなるのにな』を思いつくには、ビジネスをよく理解しておく必要があります」

中島さん:「機械学習でやれることは、あくまで人間が繰り返しの作業でできること、もしくは繰り返しやらなければいけないことです。これを実務に応用するなら、予測や自動化による、品質向上かコスト削減しかありません」

中島さん:「例えば、不良品検査の精度を機械学習によって上げることができます。これは品質の向上です。もしくは、チェックに割く労力が減ることで、作業時間や労力、人件費といったコストをカットできます。その分、製品自体の改善にリソースを割り当てることができれば、これもまた品質向上に繋がります」

中島さん:「したがって、目標は『品質向上』か『コスト削減』を定量化した指標で表す必要があります

 

4. モデル作成と仮導入

 

中島さん:「目標が定まったら、いよいよ機械学習のモデルを作成します。ここでのポイントは3つ。

追加の正解データが集まる仕組み
仮設で立てた他のデータが集まる仕組み
正解データを整理・管理できる運用

中島さん:「追加でデータを集めるのは難しいことではありません。データサイエンティストがやらなければいけないものでもないです。もし追加のデータが欲しかったらここを探そう、ということがエンジニアにもわかるようにしておきましょう」

 

5. 結果を評価する

 

中島さん:「機械学習の結果をもとに、モデルの精度を評価していきます。ここで、目標設定の段階で定量化しておく意義がわかります。」

中島さん:「定量化した目標に対して、達成率はどのくらいかがわかります。その結果になった原因に対して仮説を立て、調査を行い、もう一度目標とデータ設計を構築してみます」

 

 

自然言語処理と活用

中島さん:「これで機械学習を実務に導入していく心構えができました。続いて、自然言語処理を実務に活用していく方法が中島さんから伝授されます。」

中島さん:「ここでは技術的に高度な話はせず、自然言語処理をサービスに応用するイメージが掴めるように説明していきます」

 

自然言語とは

中島さん:「そもそも、「自然言語」とは何でしょうか。自然言語とは、意思疎通のために普段から人が話したり書いたりしていることばです。自然言語は新しい単語や若者ことばが生まれたり、文法が変化したり、逆に使われなくなったことばが出てきたりと流動的です。機械言語や人工言語のように、定義されたことばとは異なります」

中島さん:「この自然言語をコンピュータで処理する技術が自然言語処理です。」

中島さん:「ひとくちに「自然言語処理」といっても、これを構成する要素技術はさまざま。応用されるサービスも幅広く派生します。」

中島さん:「今日は、もっとも基礎的な要素技術である形態素解析と構文解析・意味解析を簡単に紹介します」

 

 

形態素解析とは

中島さん:「「形態素」とは、単語よりももっと細かい、意味の通じる最小単位。この形態素を自動で判断して適切に仕分けるのが「形態素解析」で、あらゆる自然言語処理の基礎になる重要なテーマです。」

中島さん:「オープンソースの形態素解析エンジンもあります。日本語だとMeCab・Juman・Chasen、英語だとStanford NLP・PolyGrotが有名です。」

中島さん:「個人的にはJumanの精度が一番高い印象がありますが、いまもっとも一般的に使われているのはMeCabですね」

形態素解析の中身の技術にもさまざまなアプローチがありますが、基本的には辞書ベースの機械学習です。

形態素解析の課題は、「固有名詞の判断が難しい」という点です。例えば、私たちは当然のように『東京スカイツリー』を1単語と認識できますが、形態素解析エンジンは『東京/スカイ/ツリー』と分けてしまいがちです。

近年では、この問題を解決するための「キーワード抽出技術」の研究もされています。これは、文章を学習して「単語の組み合わせが頻繁に登場する場合、その組み合わせは固有名詞の可能性が高い」ということを機械学習で判断する技術です。

 

構文解析・意味解析

 

形態素から進んで、文節を判断してどのような係り受けの関係になっているかを判断するのが構文解析です。さらに進んで、単語や文章の意味を理解し、抽出する技術も研究されています。それが意味解析です。

日本語の構文解析エンジンとしてはCaboCha、KNPが有名です。英語については、形態素解析の項で紹介したStanford NLP、PolyGrotが構文解析や意味解析にも対応しています。

 

 

どうやって活用していく?

では、どうやって自然言語処理を実務に活用すればいいのでしょうか。

中島さん:「基本的にはどんなサービスも、これまでに紹介した要素技術を組み合わせた上に成り立っています」

中島さんの紹介する「鉄板の流れ」は以下の通り。

形態素解析を行い、単語を判別。さらに構文解析を通して文節を読み取り、それらをパラメータとして機械学習します。応用的ですが、自動要約した内容や、クラスタリングした結果も利用できます。

中島さん:「現場のエンジニアが陥りがちなのが、単語だけでとりあえず機械学習をしようとすると、新語や特徴的な語句への対応に開発・運用コストがかかります」

例えば、『課題解決力』をそのまま形態素解析すると『課題/解決/力』と分けられてしまいます。こういった語句をいちいち辞書登録するのは非常に大きな手間です。

ここで構文解析を用いれば、『課題解決力は』という文節で判断できます。その上で助詞『は』を取り除けば、『課題解決力』という単語を絞り込めます。

このように、文節や要約文をパラメータに用いることで、より精度の高い学習を簡単できることがあります。

中島さん:「それでは、自然言語処理をサービスに応用する方法を実例で紹介していきます」

 

例1. チャットボット

基本的なチャットボットの中身はこのようになっています。

回答文まで自動で生成するのは、ほかの非常に高度な技術が必要です。そのため、多くのチャットボットは、重要なキーワードを抽出して全文検索エンジンに掛け、最適な回答パターンを返すようになっています。

キーワードを選定する「ことばの重要度」を評価する手法には、tf-idfがあります。

 

例2. 記事の自動分類

記事を自動的に分類する機能も自然言語処理を使えば導入できます。ユーザー投稿型サービスやキュレーションサービスだけでなく、ユーザーからの問い合わせを分類する機能や、プロフィールやユーザー行動を分析して記事をサジェストするタイプのマッチングシステムなどにも応用が効く技術です。

分類するカテゴリがあらかじめ決められ、教師データも十分ある場合におすすめなのが、ナイーブベイズ分類器という手法です。これはGoogleメールのスパム判定にも利用されています。

教師データが十分でなくても、似ている文章を探してカテゴリに当てはめていくやり方もあります。近年注目されているのはDoc2Vecという手法です。このほか、単語の出現回数で分類することもできます。この場合、単語だけでなく類語を参照したり、辞書的にカテゴライズされた単語データベース(日本語WordnetやWikidataなど)を参照したりすることで精度を高められます。

「カテゴリが決まってないが、とりあえず分けてみたい」というときには、トピック解析を行いましょう。代表的な手法はLDAです。

 

例3. ユーザ興味の要約

自動要約は、自己紹介文やブログ投稿からユーザープロフィールの要約を作るほか、Webサイトの要約文を自動生成したり、不正投稿を監視したりするのにも使える技術です。

要約パターンには、単語ベースでの要約と文章ベースでの要約の2種類があります。さらに、それぞれのパターンで抽出型(単語や文章をそのまま抜き出す)と抽象型(単語や文章をカテゴリに分類した上で抜き出す)の2種類に分けられます。

TextRankLexRankは、記事のセンテンスどうしのつながりを読み取り、よりつながりが集中しているセンテンスを抽出するアルゴリズムです。

 

例4. 履歴書のスコアリング

HRテック分野で注目を集めるのが履歴書(レジュメ)のスコアリング。有名なサービスにはTextioがあります。

Textioの優れている点は、採用候補者のレジュメから注目すべき点を単語レベルでハイライトしてくれる機能です。単語ごとにスコアを割り振って総合点を算出しています。

単語のスコアは、現在の社員のレジュメから割り出しているようです。ここでも、単語だけに注目すると新たな職能(例:データサイエンス)に対応できない可能性があるので、キーワード抽出技術が重要になります。

単語だけでなく、「論理構造が正しいか」「簡潔に書かれているか」といった要素をスコアリングするには、構造解析を使用します。

また、社内のスタッフのレジュメが集まっていれば、トピック抽出によって文化や性格のマッチングを探ることもできます。ただし、これには採用候補者のレジュメにも相応の厚みが必要です。

 

 

勉強会のあとは、恒例の懇親会!

内容盛り沢山のトークを終え、中島さんもこの笑顔。集中してみんな勉強会に取り組んでいたため、お腹はペコペコ。用意したピザはあっという間になくなりました。

 

 

まとめ

中島さんは、「機械学習さえすればすぐ何かしら効果があるのではない。あくまで、いままでのやり方を踏襲しながらその精度や効率を上げるために使う」ということを強調していました。ホットワードだからと飛びついても成果が得られるとは限りません。正しく扱ってはじめて武器になるのだと実感しました。

GIGでは機械学習、IoT、ブロックチェーンなどの最新トレンドに関する勉強会を今後も定期的に開催していきます。イベントの詳しい情報は、connpassのGIGページをチェックしてください!

shochik(横内翔太)

1993年、青森生まれ。リンゴを食べても歯茎から血が出ない。大好きなのは野球と酒。

RELATED ARTICLES