Google SheetsとColabで実践!レビューやアンケートのテキスト分析入門
テキストデータ活用の第一歩:無料ツールで始める分析
ビジネス活動においては、数値データだけでなく、顧客からの問い合わせ、アンケートの自由記述、商品レビュー、SNS上のコメントなど、様々な「テキストデータ」が存在します。これらのテキストデータには、顧客の生の声、隠されたニーズ、製品やサービスに対する率直な意見、市場のトレンドの兆しなどが豊富に含まれています。
しかし、これらの構造化されていないテキストデータをどう活用すれば良いのか、どのように分析すればビジネス上のヒントが得られるのか、多くのビジネスパーソンが課題を感じているかもしれません。特に、高価な専門ツールや高度なプログラミングスキルが必要だと思われがちです。
本記事では、すでに多くのビジネスパーソンが利用しているGoogle Sheetsと、無料で利用できるPython実行環境であるGoogle Colaboratory(Colab)を活用し、テキストデータの分析を始めるための基本的なステップと手法を具体的な例を交えてご紹介します。これらの無料ツールを使うことで、コストをかけずにテキストデータから価値ある情報を引き出す第一歩を踏み出すことができます。
テキスト分析とは何か、なぜビジネスで役立つのか
テキスト分析(Text Analysis)とは、自然言語(人間が日常的に使用する言葉)で記述されたテキストデータから、有益な情報やパターン、傾向を抽出する技術や手法の総称です。具体的には、特定のキーワードの出現頻度を調べたり、文章が肯定的か否定的かを判断したり、関連性の高い単語同士の繋がりを見つけたりといったことが含まれます。
テキスト分析がビジネスで役立つ理由は多岐にわたります。 * 顧客理解の深化: アンケートの自由記述やレビューから、顧客が製品やサービスにどのような感情を抱いているか、具体的にどのような点に満足または不満を感じているかを詳細に把握できます。 * 市場やトレンドの把握: SNSやニュース記事の分析を通じて、業界の動向や競合他社の評判、消費者の関心事などをリアルタイムに近い形で捉えることができます。 * 製品・サービスの改善: 顧客の声に基づき、具体的な改善点や新しい機能のアイデアを見つけることが可能です。 * リスク管理: 炎上リスクのあるキーワードや不満の兆候を早期に発見することができます。
これらの分析を通じて得られた洞察は、マーケティング戦略の立案、製品開発、顧客サポートの改善など、様々な業務における意思決定に役立てられます。
無料ツール紹介:Google SheetsとGoogle Colaboratory
高価なツールや専門的なソフトウェアを導入しなくとも、身近な無料ツールでテキスト分析の基礎を行うことが可能です。本記事で焦点を当てるのは以下の二つです。
Google Sheets
- 概要: Googleが提供するオンラインのスプレッドシートアプリケーションです。
- なぜテキスト分析に使えるか: 基本的なテキスト操作関数(文字列の分割、検索、置換など)や、頻度集計に役立つ機能(COUNTIF関数、ピボットテーブルなど)が備わっています。普段の業務で使い慣れている方も多く、特別な環境構築が不要で手軽に始められます。
- メリット: 手軽さ、直感的な操作性、共同編集のしやすさ。
- デメリット: 大量のデータ処理には向かない、高度な自然言語処理(日本語の形態素解析など)は単独では難しい、複雑な分析には限界がある。
Google Colaboratory (Colab)
- 概要: Googleが提供する、ブラウザからPythonコードを実行できる無料のクラウドサービスです。環境構築が不要で、機械学習やデータ分析に広く利用されるPythonライブラリをすぐに使うことができます。
- なぜテキスト分析に使えるか: Pythonには、テキストデータを扱うための強力なライブラリ(MeCab, spaCy, NLTK, scikit-learnなど)が豊富に存在します。これにより、Google Sheetsだけでは難しい形態素解析やより高度な分析を行うことが可能です。
- メリット: 無料でPythonの強力なライブラリが利用可能、環境構築が不要、比較的複雑な処理も実行できる。
- デメリット: Pythonのコードを書く必要がある(初心者には学習コストがかかる)、インターネット環境が必要、処理時間に制限がある場合がある。
これら二つのツールは、それぞれ得意なことが異なります。Google Sheetsで手軽に基本的な分析を行い、より深い分析が必要になった場合にGoogle Colabを活用するというように、使い分けるのが効果的です。
Google Sheetsで実践:簡単な頻度分析・キーワード集計
まずは、最も手軽にできるGoogle Sheetsを使ったテキスト分析の基本から見ていきましょう。ここでは、アンケートの自由記述欄の回答データがあるとして、特定のキーワードがどのくらい出現するか、また単語の単純な頻度集計を行う方法を解説します。
例:アンケート自由記述からのキーワード出現回数集計
顧客アンケートの自由記述欄に「〜に関する意見」という列があり、その中に「使いやすい」「分かりにくい」「改善希望」といったキーワードがどれくらい含まれているかを知りたいとします。
-
データの準備: アンケート回答のテキストデータが、Google Sheetsの特定の列(例:
B
列)に入力されているシートを用意します。 -
キーワード出現回数の集計: 特定のキーワード(例: 「使いやすい」)を含むセルの数を数えるには、
COUNTIF
関数とワイルドカードを使用します。COUNTIF(範囲, 検索条件)
キーワード「使いやすい」を含むセルの数を数える場合:
=COUNTIF(B:B, "*使いやすい*")
B:B
は集計したい範囲(B列全体)を指定しています。"*使いやすい*"
は検索条件です。アスタリスク(*
)は任意の文字列を表すワイルドカードです。これにより、「〜使いやすい〜」のように前後に文字があってもキーワードを含んでいればカウントされます。
この数式を使えば、「分かりにくい」や「改善希望」といった他のキーワードについても同様に集計できます。これにより、特定のキーワードに対する言及頻度を簡単に把握できます。
例:単純な単語頻度分析
もう少し進んで、各回答を単純な単語に分割し、どの単語が多く出現するかを調べたい場合を考えます。ただし、Google Sheets単体で日本語の正確な単語分割(形態素解析)を行うのは難しいため、ここではスペースや句読点などで区切られた単語を対象とするか、回答が比較的短い場合の手法とします。
-
データの準備: 同様に、テキストデータが格納されたGoogle Sheetsを用意します。
-
単語への分割: 各セル内のテキストを単語に分割します。カンマやスペースで区切られている場合、
SPLIT
関数が利用できます。=SPLIT(テキスト, 区切り文字)
例として、セル
B2
のテキストをスペースで分割し、複数の列に展開する場合:=SPLIT(B2, " ")
もし句読点なども区切り文字として扱いたい場合は、区切り文字の引数に複数の文字を指定できます(例:
=SPLIT(B2, ", ")
)。ただし、複雑な区切り方や複数の区切り文字を同時に扱う場合は少し工夫が必要です。 -
単語リストの作成: 分割された単語を一つの列にまとめます。これは手作業(コピー&ペースト)で行うこともできますが、新しいGoogle Sheetsの関数(例:
FLATTEN
- 利用可能な環境による)やGoogle Apps Script(GAS)を使うと自動化できます。GASを使った方法はこの記事の範囲を超えるため、ここでは手作業またはコピー&ペーストを想定します。分割した単語が展開された複数の列をコピーし、新しい列に「値のみ」ペーストして一つの長い単語リストを作成します。 -
単語頻度集計: 作成した単語リスト(例:
C
列)に対して、各単語の出現頻度をピボットテーブルで集計します。- 単語リストの列を選択します(例:
C:C
)。 - メニューから「挿入」 > 「ピボットテーブル」を選択します。
- 新しいシートか既存のシートかを選択し、「作成」をクリックします。
- ピボットテーブルエディタで、「行」に作成した単語リストの列(例:
C
列)を追加します。 - 「値」にも同じ単語リストの列(例:
C
列)を追加し、集計方法を「COUNTA」(空白でないセルの数)に設定します。
これにより、単語ごとの出現回数と、その頻度順で並べ替えたリストを得られます。
- 単語リストの列を選択します(例:
Google Sheetsを使ったこれらの手法は非常に手軽ですが、日本語のように単語の区切りが曖昧な言語の正確な分析や、大量データの処理には限界があることを理解しておく必要があります。
Google ColaboratoryとPythonで実践:形態素解析と単語頻度集計
Google Sheetsでは難しかった日本語のテキスト分析(単語への分解など)を、Google ColabとPythonを使って行ってみましょう。ここでは、日本語の形態素解析ライブラリであるMeCabを使った単語の分解と、その頻度集計の基本手順を解説します。
例:レビューデータの形態素解析と単語頻度集計
ECサイトの商品レビューデータがあるとして、レビュー本文を単語に分解し、よく出現する単語を調べることで、肯定的な意見や不満が多く挙げられている点を特定したいとします。
-
データの準備: 分析したいレビューデータを含むCSVファイルをGoogle Driveに保存しておきます。例えば、「review_data.csv」というファイル名で、レビュー本文が「text」という列に入っているとします。
-
Colabを開き、データに接続:
- Google Colaboratoryのサイト(colab.research.google.com)にアクセスします。
- 新しいノートブックを作成します。
- Google Driveをマウントして、保存したファイルにアクセスできるようにします。
```python
Google Driveをマウント
from google.colab import drive drive.mount('/content/drive')
CSVファイルを読み込み(ファイルパスはGoogle Drive上のパスに合わせて修正してください)
import pandas as pd file_path = '/content/drive/My Drive/your_folder/review_data.csv' # 例: マイドライブ内のフォルダ名/ファイル名.csv df = pd.read_csv(file_path)
分析対象のテキストデータが入っている列を指定(例: 'text'列)
texts = df['text'].tolist() ``` 上記のコードセルを実行し、Google Driveへの接続を許可します。
-
日本語形態素解析ライブラリ(MeCab)のインストール: Colab環境にMeCabとそのPythonラッパーをインストールします。
```python
MeCab本体と辞書のインストール
!apt-get install mecab libmecab-dev mecab-ipadic-utf8 -qq
MeCabのPythonラッパーのインストール
!pip install mecab-python3 -qq ``` これらのコマンドを実行することで、日本語の単語に分割するための準備が整います。
-
形態素解析と単語頻度集計: 読み込んだテキストデータに対し、MeCabを使って形態素解析を行い、単語リストを作成します。その後、リスト内の単語の出現頻度を集計します。
```python import MeCab from collections import Counter import re # 正規表現を使うためのライブラリ
MeCabの初期化(ipa辞書を使用)
mecab = MeCab.Tagger("-Ochasen -d /usr/lib/mecab/dic/mecab-ipadic-utf8")
word_list = []
処理が重くなる場合があるので、まずは最初の100件などで試すのがおすすめです
for text in texts[:100]: # 最初100件で試す場合
for text in texts: # テキストがNaN(欠損値)でないか、文字列であることを確認 if pd.isna(text) or not isinstance(text, str): continue
# 必要に応じて簡単な前処理(例: URL除去、記号の削除など) # text = re.sub(r'http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?', '', text) # URL除去例 # text = re.sub(r'[!-/:-@[-`{-~]', '', text) # 半角記号除去例 # text = text.lower() # 小文字化(英語の場合など) # MeCabで形態素解析 node = mecab.parseToNode(text) while node: # 品詞を取得 feature = node.feature.split(',') hinshi = feature[0] # 品詞 # 抽出したい品詞を指定(例: 名詞、動詞、形容詞) if hinshi in ['名詞', '動詞', '形容詞']: # 原形を取得する場合(多くの場合こちらの方が分析しやすい) # 原形がない場合や、featureの要素が少ない場合を考慮 if len(feature) > 6 and feature[6] != '*': word_list.append(feature[6]) # 原形 else: # 原形が取得できない場合は表層形を使用 if node.surface != "": word_list.append(node.surface) node = node.next
単語頻度集計
word_counts = Counter(word_list)
頻度の高い単語を表示(上位30件)
print("上位30件の単語と出現回数:") for word, count in word_counts.most_common(30): print(f"{word}: {count}")
必要に応じて、特定のストップワード(例: 'する', 'ある', 'いる' など、分析に関係ない一般的な単語)を除外する処理を追加することも可能です。
stop_words = ['する', 'ある', 'いる', 'こと', 'もの', 'ん', 'よう', 'そう'] # 例
filtered_word_counts = {word: count for word, count in word_counts.items() if word not in stop_words}
filtered_word_counts = Counter(filtered_word_counts)
print("\nストップワード除去後(上位30件):")
for word, count in filtered_word_counts.most_common(30):
print(f"{word}: {count}")
`` このコードでは、MeCabを使ってテキストを形態素(単語や助詞など)に分解し、その中から名詞、動詞、形容詞といった、内容把握に繋がりやすい品詞の単語を抽出しています。そして、
collections.Counter`を使って各単語の出現頻度を集計し、頻度が高い順に表示しています。これにより、レビューデータ内で特に多く言及されているキーワードや概念を把握できます。※ 注意点として、日本語の形態素解析は完全に自動化することが難しく、分析目的によっては辞書のカスタマイズやより詳細な品詞フィルタリングが必要になる場合があります。また、上記のコードはあくまで基本的な例であり、実際のデータに合わせて修正が必要です。
実際の業務での活用シーン例
これらの無料ツールを使ったテキスト分析は、様々なビジネスシーンで応用できます。
- カスタマーサポート: FAQや問い合わせ履歴のテキストデータを分析し、よくある質問や顧客が抱える潜在的な問題を把握することで、FAQの拡充やサポート体制の改善に繋げられます。
- マーケティング: 広告のキャッチコピーや商品紹介文に対する顧客レビューを分析し、どのような言葉や表現が響いているのか、あるいは誤解を与えているのかを把握することで、より効果的なメッセージを作成できます。
- 製品開発: 新機能に対するユーザーからのフィードバックをテキスト分析することで、改善要望が多い点や意外な使い方などを発見し、次の開発ロードマップに活かせます。
- コンテンツマーケティング: 自社ブログや記事へのコメント、SNSでの反応を分析し、読者やフォロワーがどのような情報に関心があるかを把握することで、ニーズに合ったコンテンツ企画に役立てられます。
Google Sheetsを使った簡単なキーワード集計だけでも、特定のキャンペーンに対する反応のポジティブ/ネガティブなキーワード頻度を把握したり、問い合わせ内容の分類に役立てたりできます。Colabを使えば、より詳細な単語レベルでの分析や、将来的に感情分析、トピック分析といったより高度な手法への足がかりとすることも可能です。
分析を行う上での注意点
無料ツールでテキスト分析を行う際には、いくつかの注意点があります。
- テキストの前処理: 生のテキストデータは、表記ゆれ(例: 「スマホ」と「スマートフォン」)、誤字脱字、不要な記号やURL、HTMLタグなどが含まれていることが多いです。これらの「ノイズ」は分析精度を低下させるため、適切な前処理が必要です。Sheetsの置換機能やColabでの正規表現などを活用してデータをクレンジングすることが重要です。
- 日本語の特性: 日本語は単語の区切りが曖昧なため、英語のようにスペースで区切るだけでは正確な単語分解ができません。MeCabのような形態素解析エンジンを使う必要があります。また、同音異義語や文脈による意味の変化など、難しさがあります。
- 分析結果の解釈: ツールが出力した単語リストや頻度だけを見て結論を出すのではなく、元のテキストデータに戻って文脈を確認することが非常に重要です。なぜその単語が多く出現するのか、どのような文脈で使われているのかを理解することで、より深い洞察が得られます。
- 無料ツールの限界: 大量のデータ処理には時間がかかったり、メモリ制限に達したりすることがあります。また、最新の高度な分析手法(例: ディープラーニングを用いた感情分析など)を実装するには、より専門的な環境や知識が必要になります。無料ツールはあくまでデータ活用の「はじめの一歩」として活用し、より高度な分析が必要になった場合は専門ツールの導入なども検討することになります。
結論
テキストデータは、数値データだけでは見えてこない顧客の感情や具体的なニーズを把握するための宝庫です。これまでテキスト分析に敷居の高さを感じていた方も、本記事でご紹介したGoogle SheetsやGoogle Colaboratoryといった無料ツールを活用することで、コストをかけずにその第一歩を踏み出すことができます。
Google Sheetsは、すでに使い慣れている表計算ソフトの機能を使って、特定のキーワード集計や簡単な頻度分析を即座に試せる手軽さが魅力です。一方、Google ColabとPythonを使えば、日本語の形態素解析といったより専門的な前処理や分析も、無料の環境で実現できます。
まずは手元にあるアンケートの自由記述やレビューデータを使って、簡単な単語頻度分析から始めてみてはいかがでしょうか。そこで得られた発見が、きっと日々の業務における課題解決や改善に繋がるはずです。無料ツールを賢く活用し、データに基づいた意思決定を推進していきましょう。