nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート | 実務で使う自然言語処理をする #サポーターズCoLab

はじめに

だんないよ、nikkieです。
「実務で使う自然言語処理をする」のイベントレポートをお送りします。

 

勉強会の概要

【サポーターズCoLab勉強会】実務で使う自然言語処理をする - サポーターズCoLab

イベント概要

今回のテーマは「実務で使う自然言語処理をする」。

(中略)

しかし、「ちょっとお試しでデータを調べてみる」などの用途にはディープラーニングで頑張るよりも、

もっと簡単にできることがあります。

今回は、「実務のための自然言語処理」を掲げて、「まず第一歩」に踏み出す方法を話します。

具体的にはPythonで次のことをします。

  • 形態素分割と単語カウント

  • 文書からキーワード抽出

  • 文書カテゴリ分類

機械学習を案件で使う関係で勉強していますが、
自然言語処理は手薄だったので、全体像をつかみたいという思いで参加しました。
 

まとめ 

実務のための自然言語処理は3ステップと理解しました。

  1. テキストを機械学習に持ち込むために形態素分割で単語にバラす
    (登場頻度を数えるなどする)
  2. 単語の中から、ラベル付けされたテキストに固有なキーワードを抽出する
    (今回は重みスコアを計算してキーワードを抽出)
  3. ラベル付けされていないテキストをカテゴリに分類する

資料はこちらです。

www.slideshare.net

 

ソースコード

GitHub - Kensuke-Mitsuzawa/sample-codes-supporters-tutorial

 
以下トピックごとにメモを元にまとめます。

形態素分割

辞書データと形態素解析モデルからなる。
モデルはMecab、Kuromoji、Juman++がよく使われている。
 触ってみるならMecabらしい
辞書データはIPA辞書、IPA-neologd辞書、Juman辞書がメジャー。
 IPA-neologd辞書にはWebの新語が取り入れられているらしい

 

日本語は単語の間にスペースが入らないので、形態素分割が必要になる。
(思わず「確かに」と言ってしまった)

(そういえば、私は以下のチュートリアルMecab触ってました。)

AIが入ったBotの作り方を学ぼう - Part4 形態素解析と食品データベースで食品とその栄養価を特定する - Qiita

 

キーワード抽出

形態素の集計では意味がない単語(例:する、なる、ある)があるのでキーワード抽出が必要

ラベルの付いたテキストをいくつか持っている前提。(ラベルは2つの想定)
ラベルごとに単語が出てきた回数をカウントし、別のラベルとの間で回数の差分を取る。
 プラスであればラベルに固有であると考える。
 差分が0や負はどこにでも出てくるからラベルにとっては重要ではないと考えられる。

ラベル分けは主観が入ってくる。(主観でやっていくしかない)

 

カテゴリ分類

テキストの内容を考慮してカテゴリに分ける(ニュースが国際、スポーツと分かれる感じ)
今回はキーワードについていた重みスコアを使う(スコアリングベース)
 SVMや深層学習でもできるらしい

利用可能なラベル付きデータは重み付けスコア作成データと評価用データに分ける
(メモ:これは機械学習の考え方)

 

感想 

自然言語処理、意外と簡単じゃんと思えました。
感想ツイート見てアニメごとによく出る単語とか集計したいなとか考えちゃいます。

ソースコードが公開されているので、近日中に手を動かす予定です。
Pythonのコードの書き方としても参考になると期待しています)

参加者の方は自然言語処理に携わるエンジニアが多かったようです。
楽譜をキャプチャして自動で演奏するシステムを作った方がいらっしゃり、印象に残っています。

今回の勉強会関係者と出席者の皆さま、どうもありがとうございました。