今回は、キカガクで「機械学習による自然言語処理」を学んだ。
学習内容
実装の流れ
自然言語処理の流れ(文章の特徴を抽出するための操作)は次のとおり。
- データの収集
- 【前処理】クリーニング処理
- 【前処理】単語の正規化
- 【前処理】形態素解析
- 【前処理】基本形への変換
- 【前処理】ストップワード除去
- 単語の数値化
- モデルの学習
データの収集
解決したいタスクに応じてデータを収集する。
【前処理】クリーニング処理
HTMLのタグなど意味を持たないノイズを削除する。
BeautifulSoup や 標準ライブラリ re モジュールを使用する。
【前処理】単語の正規化
半角や全角、小文字大文字などを統一する。
表記ゆれ(「行う」と「行なう」、「りんご」と「リンゴ」、「Apple」と「apple」等)を統一する。
【前処理】形態素解析
文章を単語ごと分割する。単語の分かち書き。
MeCab、Janome、JUMAN++ を使用する。
MeCab は MeCab: Yet Another
Part-of-Speech and Morphological Analyzer から mecab-0.996.exe をダウンロードしてインストール(文字コードは UTF-8 を選択)。
さらに、pip
install mecab-python-windows で Python 開発環境にもインストール。
【前処理】基本形への変換
語幹(活用しない部分)への統一を行う。
例:学ん(だ)→学ぶ
主に MeCab を使用する。
昨今の実装では基本形へ変換しない場合もある。
【前処理】ストップワード除去
出現回数の多すぎる単語など、役に立たない単語を除去する。
ストップワードをまとめた辞書との一致検索や出現頻度による削除を行なう。
昨今の実装では除去しない場合もある。
単語の数値化
機械学習で扱えるよう文字列から数値へ変換を行う。
モデルの学習
タスクに合わせ、古典的な機械学習~ニューラルネットワーク選択する。
オープンデータセットについて
オープンデータセットとはある団体が保有しており、自由に活用できるよう公開しているデータのこと。
オープンデータセットは次のようなものがある。
オープンデータセットのまとめサイト