口コミ(クチコミ)とは、口頭でのコミュニケーションによる情報伝達のことです。
人と人の直接の情報伝達だけでなく、ネット上での口コミも増えています。
例えば、Webサイトのコメントや掲示板、 SNSなどで気軽に人と人のコミュニケーションが、成立しています。
ネット上の口コミは、情報の内容だけでなく、時間や空間の情報(いつ・どこで)とともに蓄積されていきます。
これらの情報を集める口コミ調査は、
- 世論調査
- 自社のマーケティング施策の改善
- 広告効果の測定
など、様々な観点から活用できます。
とはいっても、蓄積される口コミ情報は大量になるので、コンピュータを使って分析します。
口コミデータは、テキストデータであることがほとんどで、
テキストマイニングの手法が活用できます。
そして一般的なテキストマイニングの手法に加えて、
口コミの分析に独特の分析方法を加えることで、
有効な情報を抽出することができます。
そこで本シリーズでは、口コミ分析の初心者の方から、実際にやってみたい方のために、
- 口コミの分析方法のやり方は?
- 口コミ分析を手軽に行うためのツールとは?
- 口コミ分析をpythonでやる方法
などについて、わかりやすく、サクッとまとめています。
第1話では、口コミデータの特定、収集、本文抽出、注意点などについてまとめました↓
『口コミの分析方法とは?(1) 口コミデータの特定、収集、本文抽出、注意点について、わかりやすく、サクッとまとめました』
第2話となる本記事では、口コミデータの
- 文章から1文を抽出する方法
について、サクッとわかりやすく、
- オープンソースのフリーソフト
なども交えながら、まとめたいと思います。
本記事の概要
口コミの分析方法とは?(2) 口コミデータの1文抽出(文分割)について、オープンソースのフリーソフトなども含めて、わかりやすく、サクッとまとめました
第1話で書いたように、
口コミ分析の手順の最初のステップは、
口コミ分析のために適切なデータを収集することでした。
収集した本文データは、文が集まった文章の状態です。
口コミデータの分析するためには、まず文章を
- 1文1文に分けた状態にする
必要があります。これを文分割と言います。
文分割の方法としては、大きく2つあります。
- 文末に現れやすい文字を見つける方法
- すでに文分割されたデータから特徴を学習する方法
- 文字を文頭・2文字目以降・文の外、の3つに分ける方法
以下で解説していきますね。
文分割のやり方①:文末に現れやすい文字を見つける方法
日本語の文末には、句点「。」があります。
なので
- 「。」から次の「。」までを1文
とするやり方が考えられます。
教科書のようなきちんとした日本語の時にはこれでうまくいくかと思います。
しかしこの方法では難しいことがあります。
例えば、口コミデータでは、文の構造を意識しないような、気軽な日本語のやりとりもあります。
あなたが普段目にするSNSなどの投稿には、必ずしも「。」を使わずに書かれていることも多いかと思います。
そういったテキストでは、例えば、
文末には「♪」「★」「!」などがあるかもしれません。
なので、扱うテキストデータによっては、
文末の認識には、
- 「。」「♪」「★」「!」などの特徴的な文字
を含めて処理する必要があります。
他にも「句点がない」こともありえます。
その時には、文章のレイアウトの情報が使えるかもしれません。
- 文と文の間に「空白」
- 1文ごとに「改行」
などの構成になっているかもしれません。
これらの規則を使って1文に分割することができます。
これらの特徴的な文字をうまく扱うにはどうしたらいいの?
と思われる方も多いかと思います。
特定の文字の認識には、「正規表現」の活用が役立ちます。正規表現には以下の参考図書がございます↓
文分割のやり方②:すでに文分割されたデータから特徴を学習する方法
文分割をするには、人工知能技術の1つである「機械学習」を使う方法があります。
機械学習による文分割では、2つのステップがあります。
(1), すでに文分割されたデータを大量に用意して、それらの規則を学習させます。
具体的には、文字と文字の境界が、文末かどうかを学習していきます。
(2), 学習した規則を使って、分析したいテキストデータに対して文分割を行います。
この方法のメリットは、文末付近の規則も考慮した文分割ができることです。
上で説明した文末の文字の特徴や空白や改行の特徴も含めて、それ以外の特徴も考慮することができるわけです。
デメリットとしては、最初に、文分割された教師データを用意する必要があることになります。
関連する内容は以下の書籍にもございます↓
本書の詳しくは以下の記事でまとめています↓
『「機械学習」でソーシャルデータ分析。ビジネスを加速させたいあなたにはこちらをどうぞ』
機械学習ってなに?という方には、以下の記事もございます↓
『「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです』
『「機械学習」を「無料」ではじめてみませんか!?【フリーソフトではじめる機械学習入門】』
文分割のやり方③:文字を文頭・2文字目以降・文の外、の3つに分ける方法(系列ラベリング)
3つ目のやり方は、文字にラベルをつけていくアルゴリズムを用います。
1文のそれぞれの文字に、次の3つのラベルをつけていきます。
- 文頭の文字(B)
- 2文字目以降の文字( I )
- 文の外の文字( O )
この手法を「系列ラベリング」と呼びます。
文字は順番に並ぶことで意味があります。
このような順番のあるデータを系列と言います。
その系列データにラベルをつけるので、系列ラベリングと呼ばれるわけです。
ラベルがつけれれば、ラベルに従って
「B」と「 I 」のラベルの部分を1文として取り出せます。
じゃあ、どうやってラベルをつけるの?
というところですが、ラベルのつけ方は、
以下のように数式で扱いやすいように定式化して処理します。
とりあえず仮に1文字ずつラベルをつけていったとして、その結果の良さを表す指標を計算できる数式を定義します。
最適なラベルを見つけるには、この良さを表す指標を最大にするラベルを探せばいいことになります。
最適なラベルの探し方には、いくつかのやり方が考えられます。以下で3つのやり方を説明しますね。
1つ目は、文字とラベルの個々の対応について、それぞれ推定する
1つ目はシンプルなやり方で、文字ごとにラベルを個々に推定していきます。
他の事例でも使う機会の多い、サポートベクターマシン(SVM)などの機械学習の技術を使えます。
なのでこれを機に身につければ他の場面でも役立ちます。
また、すでに使ったことのある方でしたら、新たな勉強コストが少なくてすみます。
ただその反面、文字の前後の関係などを考慮しないモデルのため、結果の精度が得にくいなどのデメリットが考えられます(特徴に周囲の情報を含めることで精度を高めることが可能です)。
機械学習については、以下のものもございます↓
2つ目は、ラベルを先頭から順庵に1つずつ推定していく方法です。
ある文字のラベル推定では、その文字の前の文字までの推定結果を加味して、推定を行います。
単語のならいによる情報を使うことで、より精度の高いラベル推定が行えます。
3つ目は、文字列全体について最適化を行う方法です。
各ラベルは直前の状態のみに影響を受ける(マルコフ性)を仮定することで、計算を軽くすることができます。
具体的には、
- 文字の情報をそのまま使う「隠れマルコフモデル」
- あなたが使いたい特徴を採用できる「条件付き確率場」
といった手法を使うことができます。
条件付き確率場が実装されたオープンソースのフリーソフト3つとは
「条件付き確率場(CRF: Conditional Random Field)」
には、系列ラベリングを行えるオープンソースがありますので、それらを使うことも可能です。
「CRF++」では、特徴量をユーザーが定義することができるのが特徴の1つです。
- C++で書かれている
- 高速なトレーニング(LFGSアルゴリズム)
- より少ないメモリ使用
といった特徴があります。
「CRF Suite」についても。
- 高速なトレーニング(LFGSアルゴリズム)
- より少ないメモリ使用
- チュートリアルやドキュメントが充実
といった特徴があります。
他にも「sklearn-crfsuite」があります。
scikit-learn は、機械学習のオープンソースの雷雨らりですが、その中に、CRFを実行できる「sklearn-crfsuite」があります。
名前からわかるように、sklearn-crfsuite では、
ない腕は、CRF Suite を良い出して使っています。
Pythonに慣れている方は、sklearn-crfsuiteから CRFを実行するのがオススメになります。
系列ラベリングについて教科書としては、以下のものがございます↓
条件付き確率場にはこちらがございます↓
というわけで、本記事では、
口コミデータの分析の第2話として、
- 文章から1文を抽出する方法
について、
- オープンソースのフリーソフト
なども交えながら、サクッとわかりやすく、まとめました。
これでテキストデータを1文にできたことになります。
次は、1文を分析しやすい形にさらに分解していく必要があります。
それが「形態素解析」になります。
第3話で更新予定です。
SNSなど登録しておくと見逃さないかと思います。
ご登録、よろしくお願いします。
こちらもございます↓
こちらの記事もございます↓
『「テキストマイニング」を学びたいあなたにチェックしてほしい良書、12冊はこちらです』
『「自然言語処理」を学びたい人におすすめの良書、10冊はこちらです』