catch-img

ChatGPTを使ったテキストマイニングでお客様の声を分析し顧客満足度を高める方法

これまで、CRMの分野でのAIの利用は、ある程度の規模を持った会社に限定されていました。しかし今、ChatGPTなど生成系AIの登場により、技術的にもコスト的にも、多くの企業で活用機会が増えつつあります。ここでは、顧客の声(アンケートの自由文回答やコールセンターの記録など)を分析対象とした、ChatGPTの活用方法を紹介します。


この記事のポイント

  • ポイント1 手持ちのテキストデータについてChatGPTに分析させる

  • ポイント2 お客様の声=文章をネガポジや対象別に分類したり要約する
  • ポイント3 顧客調査の計画から報告までChatGPTを活用するヒント


すずしょうたくや


目次[非表示]

  1. 1.ChatGPTに手持ちのデータを分析してもらう
    1. 1.1.はじめに--生成系AI使用上の注意事項
  2. 2.対話型画面でサマリーなどを作ってみる
    1. 2.1.長文をサマリーに要約する方法
    2. 2.2.長文内の"言葉"の出現率を調べる方法
    3. 2.3.ワードクラウドのHTMLを作る方法
  3. 3.グーグルスプレッドシートのアドオンを使ってお客様の声を分類する
    1. 3.1.グーグルスプレッドシートのアドオンとは
    2. 3.2.ChatGPTのAPIキーの取得方法
    3. 3.3."GPT for Sheets and Docs"の取得とセットアップ
    4. 3.4.アンケートの自由回答の感情分析をやってみる
    5. 3.5.自由回答を任意のカテゴリに分類
  4. 4.ChatGPTでアンケートを作ってみる
    1. 4.1.質問と選択肢の作成
  5. 5.【まとめ】


顧客満足度の向上につながる打ち手一覧集


ChatGPTに手持ちのデータを分析してもらう

現在のところ、ChatGPTをはじめとした生成系AIの使い方は、何か知らないことを尋ねたり代行してもらうイメージが強いようですが、手持ちのデータを分析したり評価したりしてもらうこともできます。今回はこの方法で、市場調査からのお客様の声を分析してみましょう。


はじめに--生成系AI使用上の注意事項

このコンテンツを読んで実際にChatGPTなど生成系AIを使う際は、以下の点に注意して、ご自身の責任の範囲で使用してください。

(1)生成系AIは社内の利用規定を守って使う

AI技術を導入するにあたっては、プライバシーやセキュリティについての考慮が不可欠です。さらに企業での利用においては、AIが扱うデータに対するプライバシー保護規定や、情報セキュリティの規定を遵守することが重要です。具体的には、個人情報等を含むデータをAIで処理する場合、そのデータが適切に保護され、不適切な利用がないようにするため、個人情報や機密情報を含まないよう厳重に注意してください。

(2)AIの作業再現性には限界がある

AIは、人間が行うようなデータの解析作業を代行することができますが、その結果は必ずしも一定ではありません。特に言語を解析するAIは、同じデータを入力しても、その時々で微妙に異なる解析結果を出すことがあります。これはAIが機械学習のプロセスで生成したモデルに基づいて作業を行うため、そのモデルの中の微妙な差異が結果に反映されるからです。したがって、本コンテンツに記載されているとおりにChatGPTが反応しないことがあることをあらかじめ理解しておいてください。

(3)従来のテキストマイニングとは違っている

従来のテキストマイニングでは、文章を単語に分解し、その出現頻度などを統計的に処理する形態素解析が主流でした。しかし、ChatGPTを用いたテキストマイニングでは、より文脈に即した情報抽出が可能となります。言葉の出現率だけでなく、その言葉がどのような文脈で使用されているのかを理解することで、より深い情報を抽出することが可能となっているのです。一方で、前項で説明した通り、よくも悪くも"人間の代行"に近いため、厳密な数値の再現性がないことも理解して使用してください。それでははじめましょう。


顧客満足度の向上につながる打ち手一覧集


対話型画面でサマリーなどを作ってみる

ものは試し、まずは一般的に使用する対話型画面から作業をしてみましょう。まだChatGPTのアカウントをお持ちでない場合は、以下のページからサインアップして、無料のアカウントを取得することをおすすめします。※会社内で使用する場合は会社の規定を遵守してください

https://openai.com/


長文をサマリーに要約する方法

ChatGPTは自然な文を生成する能力に長けています。そのため、長いテキストデータを読み込ませて、そのサマリーを生成することが可能です。具体的には、まず全体のテキストをAIに入力し、サマリー作成用プロンプトを使ってテキストの要約を要求します。これにより、大量の情報を含む長文から、重要なポイントを絞ったサマリーを生成することができます。
このコンテンツでは、ChatGPTの基本的な使用方法については説明をしていません。また、以下の画面を"対話型画面"、Send a message欄に入力する命令やデータを"プロンプト"と呼んで説明します。

※このコンテンツでは、コンテンツの最後に添付したテキストデータ=恵比寿の街についてのアンケート自由回答(60行程度)を"分析用テキスト"として使用しています。


<サマリー作成のプロンプト>

以下の文章を"分析用テキスト"という名前で記憶して、400文字程度のサマリーを作成してください。
<文章>
色々なお店があったりするけど治安が若干悪いから
交通の便と飲食店やオフィスと住居が同居している
いい街だから
静かで素敵なお店がたくさんあるから
山手線の駅なので、どこへ行くにも便利。その割に街がゆったりしている。
色々な物が揃っているから
最高の環境ですが、物価は高めなので。
治安が良く便利だが、物価が高いので。
雰囲気は悪くないが、何しろ物価が高い。特にガーデンプレイス付近の高台ゾーン。スーパーが無くて、あるのは美容室ばかり。この辺の老人たちはどこへ買い物に行っているのやら?
物価は高い。子供用品の買い物が不便
便利、子供の数が少な目だから子供に優しい
立地は良い、渋谷、原宿、六本木にも近い。けど、生活するには、物価が高い
利便性の良さ。
色々なものが揃っていて便利だから
便利だから
電車が便利。コンビニ多くて便利。
環境がよい
人も多くて雑踏としているけど、自分のペースと行動パターンに慣れてくれば、便利で住みやすいです。
スーパーやドラッグストア、本屋など少ない
・ギャヤリーや美術館、劇場やシアターなどが多く最新アートに身近に触れられる・職住近接としてとても便利で快適・地域住民同士のコミュニティー形成が濃密・地域住民がみんなやさしい・シビックプライドを持って地域住民自らまちづくりをしている・地域企業がまちづくりや地域イベントに積極的に参画している・歩道が広い・官(※渋谷区)民の連携が取れている・公衆電話やポストが多い・最新の地域情報を随時発信し続けている(※恵比寿新聞など)・地域独自、恵比寿ならではでのイベントが多い
自分が気にいっているから。でも、すべての人におすすめとはいきませんね。
楽しいけれど物価が高い。日常生活を普通に送るには物販店がほとんどないなど不便。
世の中のイメージと実際に住んで感じるギャップ
交通の便が良く、住宅街と繁華街のバランスが良い。ただし空気があまり綺麗ではない。
お店が多いから
飲食店が沢山あるから
新しいお店ができる割合が多いから
便利で暮らしやすい。恵比寿での生活に満足している人が多い。
交通の便がよすぎる。乗り換えなしでどこへでも行ける。
街並み、便利さ、近所付き合いも含め素晴らしい街。もしお得で品揃え豊富なスーパーがあれば10点豊富な
気持ちのいい街ですが、家賃が高い
秩序ある街だから
便利だから
企業優先の開発まちづくりに不安がある
住んでいましたが、渋谷駅にも六本木方面にもアクセスが良かったところ。街のサイズ感。ガーデンプレイスがシンボルとして、良い。
恵比寿横丁前を中心に輩が多すぎて極めて不快
駅の近くはやはり騒々しいが、少し離れると閑静であり便利だから場所によると思う。
昔から恵比寿暮らし憧れていた、ついに実現できてとても幸せ。
最近は治安面での不安が結構大きいかもしれません。
街は暮らしやすいので薦めたいが、家賃等の生活コストが高いので万人に薦められるものではない。
ガーデンプレイス中心に代官山や広尾にもアクセスしやすく緑多くて気持ち良い。ただ相応に生活コストが高いので満点とはいかないかもしれません。
暮らしやすい街ですが、家賃が高くなるのがネック
地域コミュニティをつなごうという姿勢を持っている人が多い
交通、買物、飲食に便利
昔から住んでいて愛着があるから
交通の便利さ
大人には快適な職住環境。子育て施設が少ないがアクセスが良く近隣地域で習い事などは可能。
便利でおしゃれなお店がある一方でゴミのポイ捨てや住民同士のつながりが弱い。
清潔で便利で治安の良い安全な街だから
薦めすぎると人が増えるのでほどほどに
商業施設や社会インフラも充実していて基本的には住みやすいと思います。個人的には外国人との共生という意味では広尾や麻布に少し劣後しているかなと思う点が減点ポイントです。
JRと日比谷線が使えて便利。美味しいお店が多い
交通の利便性がよくどこへも行きやすい
一通りのものは揃っているが、経済的な各種相場は高め。それとここ数年街そのものや出入りする人間に乱れが増えてきた。
とても住みやすいが家賃が高い
安全でのんびり過ごせる街
公園など外で遊ぶ場所が少ない、交通量が多いなど、ノビノビと子どもが過ごせる街ではないと思います。
とても住みやすい町だと思うが、家賃が高いので、誰にでもはおすすめできない。
どこへ行くにも便利だが、安いスーパーはない
交通の便は良いので、その面では勧める。手頃なスーパーが駅近くに少ないこと、飲食店が増えて治安が悪くなったことや騒音問題でマイナスです。
交通の便が良い。ビッグターミナルではない気軽さ。意外に下町。物価は高いけど自転車圏内で安い買い物もできる。

画像は途中で切っていますが、<分析用テキスト>はこの下に50行ほど続いています。"Send a message”欄に直接打ち込むのは難しいので、別途テキストエディタなどでプロンプトを作成しておきコピー&ペーストします。


<作成されたサマリー>

ほぼ瞬時に、50行程度の自由回答をサマリーにしてくれます。


長文内の"言葉"の出現率を調べる方法

ChatGPTを用いると、長いテキストの中から特定の単語やフレーズの出現頻度を調べることができます。まず全体のテキストをAIに読ませ、特定の単語やフレーズに対してその出現率を問うプロンプトを入力します。これにより、その単語がテキスト内でどれほどの頻度で使用されているのかを把握することができます。


<単語の出現率を調べるプロンプトとその結果>

ここではサマリー作成時の"分析用テキスト"をそのまま流用し、単語の出現数を表形式で表示させています。


ワードクラウドのHTMLを作る方法

※この作業は、HTMLについての多少の知識が必要です。ChatGPTにHTMLコードを作らせ、それをテキストエディタで保存(UTF指定)で保存し、ブラウザで読み込むといった技術が要求されます。

ワードクラウドは、テキスト内の単語の出現頻度を視覚的に表現したものです。ChatGPTでは、分析結果からワードクラウドを生成し、その結果をHTMLフォーマットで出力することが可能です。この手法を用いると、顧客の声の中で特に多く使われている単語を一目で確認することができます。
実際には完成度や再現性が低く、難易度の高い作業になります。


<ワードクラウド用のHTMLコード作成用のプロンプト>

【ワードクラウド】作成用プロンプト
このテーブルの単語出現頻度を見本のデータとして全て使い、ワードクラウドを作成するHTMLコードを作成してください。その際には"https://d3js.org/d3.v5.min.js""https://cdn.rawgit.com/jasondavies/d3-cloud/master/build/d3.layout.cloud.js"を使用してください。サイズは幅1200px高さ900px。カラフルなものにしてください。

先に作業した"単語の出現数"を対象に、ワードクラウド用のHTMLコードを作成します。


"https://d3js.org/d3.v5.min.js"と
"https://cdn.rawgit.com/jasondavies/d3-cloud/master/build/d3.layout.cloud.js"
の2つのjsは、筆者があらかじめChatGPT相手に格闘した結果、再現性が高いことを突き止めていたライブラリーです。このふたつを指定することでコードの動作率が上がります。


<ワードクラウド作成用プロンプト・コード>

<バグがあったようなので再作成を依頼したプロンプト>

出来上がったコードをテキストエディタにコピーペーストし、test.htmlなどの名前で保存します。この際、テキストコードを"UTF"に指定することを忘れないでください。このHTMLをブラウザで開くと、ワードクラウドが表示されるはずなのですが表示されません。
コードを書く作業が一度でうまくいくことは稀です。根気よくGPTに依頼します。


<無事に出来上がったHTMLをブラウザで読み込んだ結果>

今回は、1回の再作成でここまで表示することができました。このあとにカラーの変更などを何度もやり取りして、調整した結果が最上部のタイトル画像でも使用した、こちらになります。

<出来上がったワードクラウドのHTMLコード>
※再読み込みで表示がランダムに変化するため、上記の見本画像とは若干違います。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Word Cloud</title>
    <script src="https://d3js.org/d3.v5.min.js"></script>
    <script src="https://cdn.rawgit.com/jasondavies/d3-cloud/master/build/d3.layout.cloud.js"></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        #wordcloud {
            width: 1200px;
            height: 900px;
            margin: 50px auto;
        }
    </style>
</head>
<body>
    <div id="wordcloud"></div>

    <script>
        var words = [
            { text: "便利", size: 10 },
            { text: "高い", size: 8 },
            { text: "街", size: 7 },
            { text: "物価", size: 6 },
            { text: "交通", size: 6 },
            { text: "生活", size: 6 },
            { text: "治安", size: 4 },
            { text: "住みやすい", size: 4 },
            { text: "スーパー", size: 3 },
            { text: "地域", size: 3 },
            { text: "子供", size: 3 },
            { text: "お店", size: 3 },
            { text: "静か", size: 2 },
            { text: "素敵", size: 2 },
            { text: "山手線", size: 2 },
            { text: "コミュニティ", size: 2 },
            { text: "公園", size: 2 },
            { text: "駅", size: 2 },
            { text: "不便", size: 2 },
            { text: "感じる", size: 2 }
        ];

        var width = 1200;
        var height = 900;

        var svg = d3.select("#wordcloud")
            .append("svg")
            .attr("width", width)
            .attr("height", height)
            .append("g")
            .attr("transform", "translate(" + (width / 2) + "," + (height / 2) + ")");

        var layout = d3.layout.cloud()
            .size([width, height])
            .words(words)
            .padding(5)
            .rotate(function() { return ~~(Math.random() * 2) * 90; })
            .fontSize(function(d) { return d.size * 15; })
            .on("end", draw);

        layout.start();

        function draw(words) {
            svg.selectAll("text")
                .data(words)
                .enter().append("text")
                .style("font-size", function(d) { return d.size + "px"; })
                .style("fill", function() { return d3.rgb(Math.random() * 255, Math.random() * 255, Math.random() * 255); })
                .attr("text-anchor", "middle")
                .attr("transform", function(d) { return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; })
                .text(function(d) { return d.text; });
        }
    </script>
</body>
</html>


顧客満足度の向上につながる打ち手一覧集


グーグルスプレッドシートのアドオンを使ってお客様の声を分類する

実際の顧客満足度向上業務では、アンケート調査の自由回答やコールセンターへの問い合わせなど、多数のお客様の声の分析が必要になります。このような場合は、エクセルなどのスプレッドシートと連携するとよいでしょう。2023年5月現在では、グーグルスプレッドシートのアドオン、"GPT for Sheets and Docs"が便利に使えます。


グーグルスプレッドシートのアドオンとは

Googleスプレッドシートのアドオンとは、スプレッドシートの機能を拡張するツール群を指します。これにより、ユーザーは通常のスプレッドシート機能を超えた多様な作業を行うことが可能になります。例えば、外部のAPIを呼び出したり、自動化のプロセスを作成したりすることができます。今回は、"GPT for Sheets and Docs"というアドオンを使用してみました。これは、OpenAIのGPT-3やChatGPTを、GoogleスプレッドシートやGoogle Docsで利用できるようにするツールです。


ChatGPTのAPIキーの取得方法

ChatGPTの機能を他のアプリケーションで使用するためには、まずOpenAIのウェブサイトから"APIキー=裏口から依頼して裏口に返してもらうための暗号のようなもの"を取得する必要があります。APIキーの取得方法は以下の通りです。

1.OpenAIのウェブサイトにアクセスし、アカウントを作成します。

 https://openai.com/


2.アカウントを作成したらへappsページに移動し、「API→」をクリックします。

 

3.platformページに移動するので、右上のドロップダウンメニューから"View API keys"を選択します。


4."Create new secret key"をクリックし、必要な情報を入力します。


5.作成されたAPIキーを保存します

このAPIキーは、後で"GPT for Sheets and Docs"のセットアップに使用します。

APIの利用状況はView API keysから確認することができます。


▲生成されたAPI key

作ったAPI keyはこの段階で必ずどこかに保存します。あとから再確認できません。
また、API keyは使用者に責任を求められる大切なものなので、決して公開したり第三者に自由に使わせたりしてはいけません。


"GPT for Sheets and Docs"の取得とセットアップ

まず、"GPT for Sheets and Docs"アドオンをGoogleスプレッドシートに追加します。このときは以下の手順で行います。

  1. Googleスプレッドシートを開き、上部メニューの"拡張機能"から"アドオン"を選択します。
  2. "アドオンを取得"をクリックします。
  3. 検索ボックスに"GPT for Sheets and Docs"と入力し、該当のアドオンを見つけます。
  4. "GPT for Sheets and Docs"の右側にある"インストール"ボタンをクリックします。


<Chromeでのアドオンの取得方法>


<GPT for Sheets and Docの検索とダウンロード>

次に、ChatGPTのAPIキーをアドオンに設定します。

Googleスプレッドシートを開き、上部のメニューから"拡張機能"を選択します。

  1. "GPT for Sheets and Docs"を選択し、"Set API key"をクリックします。
  2. 先程取得したChatGPTのAPIキーを入力します。


<アドオンを起動したスプレッドの画面>


<API keyのセット>

以上で、"GPT for Sheets and Docs"のセットアップは完了です。


アンケートの自由回答の感情分析をやってみる

"GPT for Sheets and Docs"の使い方は非常に簡単です。エクセルなどと同じように関数を使います。テキストの感情を分析するための関数は、’GPT_CLASSIFY’です。具体的な使用方法は以下の通りです。

  1. 結果を表示したいセル(黄)に"=GPT_CLASSIFY(a 調べたい文が入っているセル ,b 分類ルールが書かれたセル)"と入力します。
  2. aにはアンケートの自由回答部分のセルのアドレスを入力します。
  3. bには図のように結果表示をさせたい最上行に以下の3つの分類ルールをカンマで区切り入力しておきます。例:(positive,neutral,negative)

感情分類関数の使用方法は以下の通りです。左の文を最上段のルールで分類しています。

この関数は、テキストの感情を"positive"(肯定的)、"neutral"(中立)、"negative"(否定的)のいずれかで分類します。通常の関数同様に、最上行を絶対参照してオートフィルすると、4行目以降の文章も分類してくれます。


自由回答を任意のカテゴリに分類

"GPT for Sheets and Docs"には、テキストを複数のカテゴリに分類する関数、’GPT_TAG’ も存在します。この関数を使用すると、顧客のアンケート自由回答を任意のカテゴリに分類し、複数回答形式のように扱うことができます。具体的な使用方法は以下の通りです。

  1. 結果を表示したいセルに=GPT_TAG(a 調べたい文が入っているセル,b 分類ルールが書かれたセル)を入力
  2. aとbはGPT_CLASSIFYと同様です

カテゴリーは一般的なものだけでなく、自社の業務に関連した特定のカテゴリーを設定することも可能です。これにより、より詳細な分析を行うことができます。


<文章に複数のタグを付ける関数の使用方法>

択一で分類する"CLASSIFY"と、複数の該当項目を表示する"TAG"を比較しています。

このように非常に便利なアドオンですが、ChatGPTを無料アカウントで利用していて、"GPT for Sheets and Docs"にAPIキーをセットしたにも関わらず、GPT関数の結果としてエラーが表示される場合があります。この場合は、APIの無料枠の有効期限が切れている可能性がありますのでご注意ください。


顧客満足度の向上につながる打ち手一覧集


ChatGPTでアンケートを作ってみる

質問と選択肢の作成

ChatGPTは、調査の設計にも利用できます。ここでは、アンケートの「たたき台」を作るために一気に書き出してもらうスクリプトを使っています。


<たたき台づくりのために、最初にまとめて依頼したプロンプト>

このプロンプトでいったん出力しましたが、テーブル指定をしていませんでした。(出力画面は整理ができなかったので割愛します)。


<テーブル指定をしていなかったので追加で再依頼したプロンプト>


<出来上がったアンケートの「たたき台」>

ここでは、ある程度知識のある者が「たたき台」を作るためにChatGPTを使っています。
一方で、あまり詳しくない方であれば、たとえば「顧客体験調査を行うために全体を設計したい」と頼むと、ChatGPTは必要な事項を尋ねてきます。質問が多いときは、「ひとつずつ頼みます」と言うと、ChatGPTは一つずつ質問をしてきます。あなたにわかることを回答していくと、ChatGPTはそれに基づいて全体の設計を進めてくれます。


顧客満足度の向上につながる打ち手一覧集


【まとめ】

この記事では、ChatGPTを活用した自由文の分析方法を中心に解説し、顧客満足度調査やコールセンターから得られる顧客の声の分析を行う方法について説明しました。
この分野での生成系AIの活用範囲は非常に広いものになると思いますが、それ以上に期待されるのは、今まで専門家に頼っていたような分析、時間のかかった分析、調査設計などを、誰もが手軽に行えるようになることだと思います。
これまで、ついつい読みきれなかった顧客の声が眠っていたら、まずそれを読むことに利用してみてはいかがでしょうか? 意外な気づきがあるかもしれません。

吉澤隆
吉澤隆
1997年。インターネット黎明期に女性ネットコミュニティをベースに、ネットマーケティング会社=マーケティングジャンクションを設立。情報の受発信が乗り換わる場として"ジャンクション"をコンセプトに、市場調査とオウンドメディアの開発運営という両輪で、マーケティングサポートを展開。過去25年のマーケティングの変化は、ネットワークコミュニケーションの進化に起因しており、本人はパソコン通信、DTP、WEB制作、SNSグループ、アンケートシステム開発、ネット配信など、新しいデジタル技術を、真っ先に遊ぶことを心がけている。

ポイントマーケティングでお悩みの企業様
私たちジー・プランにご相談ください!

お役立ち資料は
こちらから
ご不明な点はお気軽に
お問い合わせください
顧客満足度を向上させる打ち手一覧

\ おすすめのセミナー情報 /

目的に合った「調査と分析」できていますか?~調査の秘訣と具体的な調査結果の大公開~
ページトップへ戻る