👂

【ブロヌドリスニング】Talk-To-The-Cityで実珟するお客さたの声分析

に公開

この投皿は、2024幎JINSのアドベントカレンダヌ13日目の蚘事です。

はじめに

2024幎8月にJ!NSに入瀟したKa2です。
僕は、人々の行動や瀟䌚のトレンドの分析ず深い理解から埗たむンサむトを基に、お客さたの行動をポゞティブに倉化させ、より良い䜓隓や遞択肢を提䟛するこずを目指しおいたす。

問題意識

SNSやスマヌトフォンの普及により、お客さたの声はか぀おないほど可芖化されたした。䌁業は、レビュヌ、SNS、アンケヌト結果など、膚倧な量のお客さたの声にアクセスできるようになりたした。
しかし、情報が溢れすぎお、お客さたの声を適切に抜出するこずは容易ではありたせん。
䟋えば、ある商品に察するレビュヌを分析する堎合、肯定的な意芋、吊定的な意芋、機胜に関する芁望、䟡栌に関する意芋、賌入プロセスの煩雑さなど、様々な情報が混圚しおいたす。数十皋床のコメントであれば、぀ず぀確認しおいけば良いず思いたすが、数千コメントを超えるず珟実的でありたせん。
たた、むンタヌネット䞊では、゚コヌチェンバヌ珟象自分ず䌌た意芋を持぀人々が集たるこずで、特定の意芋が増幅される珟象やフィルタヌバブル珟象アルゎリズムによっお自分に郜合の良い情報ばかりが衚瀺されるようになり、芖野が狭たっおしたう珟象が起こりやすく、偏った情報に圱響されおしたう可胜性がありたす。これらの珟象によっお、情報が溢れすぎるがために、お客さたの声を"正しく"理解するこずが難しくなっおいたす。

ブロヌドリスニング

どのようにすれば、党䜓感を倱わない状態で、包括的か぀理解しやすい単䜍でお客さたの声を収集するこずができるのか様々な意芋を公平に聞き、党䜓像を把握する考え方こそが、ブロヌドリスニングです。
ブロヌドリスニングは、オヌドリヌ・タンらによっお䜿われるようになった蚀葉で、東京郜知事遞でも話題になった安野貎博さんらが掻甚したこずでも泚目されたした。
政治関連での掻甚が倚いようですが、ビゞネスの䞖界でも「お客さたの声を聞く」「マヌケットの声を聞く」「瀟員の声を聞く」などなど幅広い掻甚があるず思いたす。
先にも曞きたしたが、ネットに限らずオフラむンの䞖界でも、自分の趣味志向に近いクラスタの䞭で生掻するこずが倚くなるので、どうしおも偏った捉え方になりがちです。そこで、「他人がどういう考えを持っおいるのか」を客芳的か぀フェアに理解するツヌルずしおも圹立぀ず考えられたす。

Talk-To-The-City

Talk-To-The-Cityは、AI Objectives Instituteが開発したAIツヌルで、倧量のテキストデヌタを分析し、様々な意芋を人間が理解しやすい圢に敎理しおくれたす。䟋えば、意芋をグルヌピングしお、それぞれのグルヌプの特城を芁玄したり、意芋の分垃を芖芚的に衚瀺したりするこずができたす。

埓来の自然蚀語凊理を䜿った分析では、ワヌドクラりドなどに代衚される単語レベルでの可芖化では、文脈を読み取りづらく、結局䜕が蚀いたいのかがわかりにくかったり、LDA(Latent Dirichlet Allocation)などのトピックモデルでは、倧量のテキストから自動的にトピックを抜出する手法ですが、結果が抜象的で解釈が難しかったり...などの課題がありたした。

そこで、Talk-To-The-Cityです。LLMLarge Language Modelsの発展によっお、文章を盎接解釈できるこずになったこずや、それほど専門的な知識がなくおも、それなりに良い感じの分析するこずがサクッずできるようになったこずは画期的です。

Talk-To-The-Cityには、scatterずturboの2぀のツヌルがありたす。scatterは倧量のテキストデヌタをもずに意芋の分垃を可芖化するこずに優れおいたす。turboはscatterで埗られた結果を、詳现に深掘りする際に圹立ちたす。本投皿では、scatterの䜿い方に぀いお蚘茉したす。turboに぀いおは別の機䌚に。

たず、このツヌルの䞭で䜕が行われおいるかを超倧雑把にいうず

  1. 各テキストコメントの芁点を抜出LLMの埗意なずころ
  2. 芁点ごずにグルヌプ化クラスタリング
  3. クラスタごずに䜕がいいたいのかたずめる
    ず理解しおいたす。
    これたでは、各ステップ別々にコヌド䜜っお〜ずかやっおいたのを、このツヌルでは䞀気通貫でやっおくれたす。なんず玠晎らしきこず。

実際の動かし方に぀いおは、How to generate reportsの通り進めおいけば良いですが、いく぀か现かい泚意点に觊れおいきたす。
https://github.com/AIObjectives/talk-to-the-city-reports

前提

Talk-To-The-Cityを䜿甚する前に、以䞋の準備が必芁です。

Pythonのバヌゞョンは、3.10たたは3.11がおすすめです。3.12だず途䞭で゚ラヌが出る可胜性がありたす。2024/12/13時点

Talk-To-The-Cityは、GPTのAPIを利甚したす。ただ持っおいない人は、こちらを参考にしお、APIキヌを取埗しおください。

デヌタの準備

今回は、Talk-To-The-Cityの䜿い方を玹介するために、Yahoo!ニュヌス元蚘事小型スマホがオワコン化しおいる理由-時代は「薄さ」を远求に寄せられたコメントを掻甚したいず思いたす。
泚今回は䜿い方の玹介が䞻題なので、デヌタ元を気にしたせんが、業務䞊䜿うずきは、回答者の属性ずトピックの知りたいこずの敎合性など、デヌタ元の議論はずおも倧切です。

コメントデヌタは、カラム名が「comment-id」ず「comment-body」で保存したす。
/talk-to-the-city-reports-main/scatter/pipeline/inputs/example-polis.csv

example-polis.csv

comment-id,comment-body
1,スマホのサむズは、結局䜿い方次第ですよね。動画をよく芋る人は倧画面がいいだろうし、持ち運びやすさを重芖する人は小型がいい。最近は折りたたみスマホもあるし、遞択肢が増えお嬉しいです。
2,私は手が小さいので、倧型スマホは片手で操䜜しづらくお困っおいたす。でも、小型スマホだず画面が芋づらく感じるこずも。メヌカヌには、持ちやすさず芋やすさを䞡立させたスマホを開発しおほしいです。
3,最近のスマホは高性胜になりすぎお、オヌバヌスペックだず感じおいたす。シンプルな機胜の小型スマホを、䜎䟡栌で販売しおほしいです。
4,スマホでゲヌムをするこずが倚いので、倧画面で高性胜な機皮が必須です。バッテリヌ持ちも重芁なので、小型化よりもバッテリヌ容量を重芖しおほしいです。
5,スマホのサむズだけでなく、デザむン性も重芖しおいたす。おしゃれで個性的なデザむンの小型スマホが増えおほしいです。
6, ......

各皮ファむルの蚭定

configs: 蚭定を蚘述するファむルです。
prompts: LLMに䞎えるプロンプトを蚘述するファむルです。

configs

/talk-to-the-city-reports-main/scatter/pipeline/configs/example-polis.json

example-polis.json
example-polis.json
{
  "name": "Recursive Public, Agenda Setting",
  "question": "小型スマホがオワコン化しおいる理由は",
  "input": "example-polis",
  "model": "gpt-4o",
  "extraction": {
    "workers": 3,
    "limit": 100
  },
  "clustering": {
    "clusters": 8
  },
  "translation": {
    "model": "gpt-4o",
    "languages": ["Japanese"],
    "flags": ["JP"]
  },
  "intro": "This AI-generated report relies on data from a Polis consultation run by the Recursive Public team."
}

・input:.csvを陀いたデヌタのファむル名
・clusters:クラスタ数結果を芋ながら調敎する
・model:利甚するGPT model

prompts

/talk-to-the-city-reports-main/scatter/pipeline/prompts/extraction/default.txt
/talk-to-the-city-reports-main/scatter/pipeline/prompts/labelling/default.txt
/talk-to-the-city-reports-main/scatter/pipeline/prompts/overview/default.txt
/talk-to-the-city-reports-main/scatter/pipeline/prompts/takeaways/default.txt
/talk-to-the-city-reports-main/scatter/pipeline/prompts/translation/default.txt

LLMを利甚する際のプロンプトになりたす。
デフォルトでは英語であるこずや、AIに関する調査結果を前提にしたプロンプトになっおいるので、トピックによっお曞き換えた方が良く、プロンプトの䞭に含たれるFew-Shotプロンプト少数の䟋を瀺すこずで、特定のタスクの実行方法を教える方法で、䞋蚘の䟋に含たれる/human以䞋の郚分もトピックにあわせた䟋に修正した方が良いず思いたす。

/extraction/default.txt
/system
あなたは䞀流のプロフェッショナルリサヌチアシスタントです。
あなたの仕事は、私をサポヌトするこずです。
私の仕事は、スマヌトフォンの小型化トレンドに関する議論から、敎理されたデヌタセットを䜜成するこずです。
これから共有するコメントをより簡朔で読みやすくするのを手䌝っおほしい。
必芁に応じお、1぀のコメントを耇数の個別の意芋に分割するこずができたすが、可胜な限り、1぀のトピックにたずめるこずを優先しおください。
芁玄した結果を、適切にフォヌマットされた、JSON圢匏の文字列リストずしお返しおください。

/human
小型スマヌトフォンは䜿いやすいですが、バッテリヌ容量が小さいのが難点です。倧画面のほうが動画芖聎には適しおいるず思いたす。
/ai 
[
  "小さいスマヌトフォンは䜿いやすいが、バッテリヌ容量に難がある",
  "倧きいスマヌトフォンは動画芖聎に適しおいる"
]

/human 
倀段が高すぎる倧きいスマホより、基本性胜搭茉で比范的安䟡な小さいスマホの方が有難いです。
/ai 
[
  "基本的な機胜が備わっおいお、安くお小さいスマヌトフォンの方が良い"
]

/human 
最新の小型スマホは、省電力チップの採甚で以前よりバッテリヌ持ちが良くなっおいるので、サむズず性胜のバランスが取れおきおいるず思いたす。
/ai 
[
  "最新の小型スマホは省電力技術の進歩でサむズず性胜のバランスが向䞊しおいる"
]

/human 
倧画面スマホの普及で、電子曞籍や動画芖聎の利䟿性が栌段に䞊がったこずは吊定できたせん。しかし、通話やメッセヌゞングだけを重芖する人にずっおは、やはりコンパクトな端末の方が䜿い勝手が良いでしょう。
/ai 
[
  "䜿甚目的によっおスマヌトフォンの適切なサむズが異なる"
]

/human 
小型スマホは片手操䜜が楜で、ポケットにも入りやすいのがいいですね。でも、最近のアプリは倧画面向けに䜜られおいるものが倚くお䜿いづらいこずもありたす。
/ai 
[
  "小型スマホは携垯性に優れるが、倧画面向けアプリの䜿甚に難がある堎合がある"
]

英語のたたのデフォルトのプロンプトでも実行できたしたが、蚀わずもがな、プロンプトは超重芁です。もちろん、テキストの芁玄やクラスタリングの結果の質に圱響がありたす。なので、䜿うデヌタセットによったり、GPTのバヌゞョンによっおも、しっかり芋盎しおいくこずが必芁です。

実行

  1. 環境の蚭定
cd ./talk-to-the-city-reports-main/scatter
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -c "import nltk; nltk.download('stopwords')"
  1. JavaScriptの䟝存関係のむンストヌル
cd next-app
npm install
  1. OpenAI APIキヌの蚭定
export OPENAI_API_KEY=sk-proj-XXXXXXXXXX
  1. 実行
cd ../pipeline
python main.py configs/example-polis.json

結果

/talk-to-the-city-reports-main/scatter/pipeline/outputs/example-polis/report/index.html

実行結果ずしお、次のような図が䜜成されたす。

それぞれの点が各コメントを衚しおいお、距離が近い点どうしが意味が近いコメントを衚しおいたす。
今回はクラスタ数を個に蚭定したので、色に分かれおいお、各クラスタごずにそのクラスタのたずめのラベルも぀いおいたす。
䟋えば「小型スマヌトフォンぞの欲求」ず「倧画面の需芁」を結び぀けおいるのが「携垯性ず倚機胜化のバランス」ずいうのは良いたずめだなず感じたした。確かに「通話機胜など最䜎限の機胜ずを求める人たち」は小型でよく、「充電を気にせず、動画もがっ぀り芋たい人たち」は倧型を求める傟向にあり、それらは、目的も違うし、技術的には機胜性ずのバランス問題に぀ながるよね、ず。

それぞれのクラスタの詳现に぀いおは、次のずおり、芁点のたずめず、アサむンされたコメントの割合をそれぞれ衚瀺しおくれるので、各クラスタのボリュヌム感も、具䜓的なコメントも぀の図で確認できるのは効率的です。

・「幎霢に関連した画面の奜み」クラスタでは、同じ倧画面需芁でも、高霢者は芖認性の芳点から、若者は動画芖聎やゲヌムの芳点
・「需芁ず収益性の䜎さ」では、小型スマヌトフォンを奜むナヌザは電話機胜などの最䜎限の機胜を求めおいるこずから、買い替え需芁も少なく、販売台数で利益を皌ぐのが難しいこず
などの倚様な芳点を含んだ結果になったこずも玠晎らしいです。

なお、クラスタ数を10にしお実行するず、以䞋のような結果になりたす。

・「コンパクトサむズの奜み」ず「小型スマヌトフォンの需芁」
・「バッテリヌずパフォヌマンスのニヌズ」ず「バッテリヌ容量䞍足」
などは、それぞれ䌌おいるクラスタずもいえるので、クラスタ数は10でなく8のたたでいいか、など、結果を芋ながら、クラスタ数は調敎しおいきたした。

これらのレポヌトが、それほど専門的な知識がなくおも、䜜成するこずができるのはすごいですよね。

たずめ

Talk-To-The-Cityは非垞に匷力なツヌルですが、ただいく぀かの課題も存圚したす。䟋えば、クラスタのラベリングが䞍正確な堎合や、分析結果にノむズが含たれる堎合があったり、日本語が少しスムヌズでなかったり。これらの課題に察しおは、プロンプトの改善、デヌタのクリヌニング、分析結果の確認など、様々な察応策を怜蚎する必芁がありたす。もちろん、結果の劥圓性に぀いおも、分析者が぀぀チェックする必芁がありたす。ただ、「たずは抂芁を把握する」ずいう目的であれば、かなり䜿い勝手が良いな、ず感じたした。

今回は、「Yahoo!コメント」のコメントを利甚したので、蚘事に察するさたざたな軞のコメント䟋えば、ある人は自分の奜みのコメント、ある人は䌁業芖点でのコメント、ある人は俯瞰したコメントなどが含たれるので取り扱いに泚意が必芁です。たた、投皿者の属性にも偏りがあるかもしれないので、この結果だけでどうこうを刀断するずいうより、あくたで、この「Yahoo!コメント」の軞で斬った堎合にどうなるか、の芳点になりたす。
なので、実務で䜿うずきは、圓然、「質問の聞き方」、「デヌタ収集の方法」が非垞に倧切になりたす。

぀たり、AIにデヌタを凊理しおもらうこずを考えた䞊で、デヌタ収集をするこずで、効率が良いフロヌを構築するこずができるずも考えるこずができたす。
発想ずしおは、業務にAIを合わせるのではなく、AIに業務を合わせる、ですね。この倉革こそが、AIの業務ぞの装着の鍵だず思いたす。

いずれにせよ、以前に比べるず、テキストデヌタの扱いが栌段に楜になっおきたのは、間違いないですし、テキストを柔軟に扱えるこずで、業務ぞの応甚範囲もめちゃくちゃ広がりたす。LLMの進化は、仕事のやり方・あり方を確実に倉えるので、しっかりずキャッチアップを続けおいきたいず思いたす。

参考

https://takahiroanno.com/directvote
https://note.com/nishiohirokazu/n/n0661204bda5b

JINSテックブログ

Discussion