ChatGPTに飲食店レビュー記事の文章から評価点数を推測させてみた
はじめに
みなさん初めまして。
トヨタコネクティッド株式会社 先行企画部 新技術開発室のとっきーと申します。
最近ChatGPTなどの生成AIを業務で使う機会が多く、私がやりたい色々なことが実現できそうだなあと日々ワクワクしています。
そんな私がやりたかったことの一つに、文章のスコアリング化があります。
文章のスコアリングについて
従来、文章などの非構造化データを数値で評価するためには何かしらの形で構造化データにする前処理をする必要がありました。(形態素解析、意味の紐付けなど)
大学の研究で実際にやったことあるのですが、まあめんどくさい。。。
が、生成AIを使えばそんな面倒な作業は不要、文章を加工しないでそのまま使うことができます。
それに文章のスコアリングを生成AIにやってもらうメリットは他にもあります。
大量データを高速に分析できる
評価基準に一貫性を持たせることができる
人間が持つ偏見がなく、公平に評価できる
人間が気付かないパターンやトレンドを見つけられる
などなど
今回やったこと
さて前置きはこの辺にして、今回私は飲食店レビューサイトの口コミ記事の文章から評価点数を推測させて、実際の点数とどれくらい差があるかを比較してみました。
行ったことがない居酒屋やレストランなどを探すとき、口コミや評価をよく見るのですが、記事内容に対して評価点数が合っていないんじゃないかということがちょいちょいあり、これを生成AIにやらせてみたら面白いんじゃないかと思っていたので、この機会にやってみようと思って今回やってみた次第です。
評価に使用したもの
生成AI
ChatGPT-4o
口コミ記事情報元
食べログ
記事提供者
筆者の大学時代の友人Sさん(本人に承諾済み)
※ご提供本当にありがとうございます
実際にやってみた
それではChatGPTに投げてみましょう。
実験①: 評価点数のレンジのみ指定
プロンプトは下記を使用しました
下記の飲食店の口コミ記事の評価点数をルールに従い推測してください
## ルール
・点数は1.0-5.0の範囲内で0.1刻みで付けてください
## 口コミ記事
(口コミ記事の文章をそのままコピペ)
レビュー記事は下記を使います。ちなみにこちらの評価点数は3.6です。
ではChatGPTに投げてみます。結果はこちら。
うーん、実際の点数とかなり乖離してしまっていますね。
実験②: 評価要素を指定する
採点の観点を明確にすると良いかもしれません。
ということで、食べログでの詳細評価の項目(料理・味、サービス、雰囲、CP、酒・ドリンク)から総合的に評価するルールを追加してみます。
下記の飲食店の口コミ記事の評価点数をルールに従い推測してください
## ルール
・点数は1.0-5.0の範囲内で0.1刻みで付けてください
・料理・味、サービス、雰囲、CP、酒・ドリンクの観点から総合的に評価してください
## 口コミ記事
(口コミ記事の文章をそのままコピペ)
結果はこちらです。
先ほどと大きな変化は見られませんでした。
実験③: 過去のレビュー記事を事前に読み込ませる
①②がうまくいかなかった要因としては下記が考えられます。
①記事の文章では書ききれない要素がある
視覚や聴覚で感じる印象など
②レビュワーの評価点数のレンジが狭い
かなり満足した内容だからといって満点近い点数をつけるとは限らない
①についてはプロンプトに反映するのは難しいですが、②は今までのレビュー記事と点数を事前に学習していれば解決できるかもしれません。
レビュー記事提供者の方は幸い他のお店のレビューも数十件されているため、それを事前に読み込んだ上で推測してもらうアプローチを取ってみます。
方法としてはいくつかありますが、今までのレビュー記事と評価点数をまとめたファイルを事前に読み込ませるのが一番簡単なやり方なのでやってみます。
やり方は簡単で、過去のレビュー記事を数十件まとめたテキストファイルをプロンプト入力時に添付ファイルとして読み込ませるだけです。
↓プロンプト内容
下記のSさんの飲食店の口コミ記事の評価点数をルールに従い推測してください
## ルール
・点数は1.0-5.0の範囲内で0.1刻みで付けてください
・ファイルにSさんの他のレビュー記事を添付したので、それらのレビュー内容と評価点数の傾向を踏まえて点数をつけてください。
## 口コミ記事
(口コミ記事の文章をそのままコピペ)
review.txtファイルの中身はこんな感じです。本当に雑にまとめたテキストファイルです。
評価: 3.1
自分で好きな具材をえらべて、好きな麺も選べて、味付けも選べるヘルシー志向の女性にはとってもオススメですし、旦那といっても楽しめます。
味付けも超本格的!
ただ、辛さ2が蒙古タンメンと大体同じくらいな気がするので、最初から調子乗って3とか頼むと痛い目見る可能性あります笑
旦那は坦々麺の辛さ1にしてましたが、これがちょうどよい感じでとても美味しかったです。
私は極太春雨みたいなやつを注文しましたが、噛みきれなくて一苦労…ここは何度か来店してますが普通の春雨が一番な気がします!
また必ず来ます!今度はトムヤムクンスープ試したい!!
下記は今後の自分メモ用に………………
<薬膳スープに合うもの>春菊、豚肉、トマト
評価: 3.2
まさかの1番おいしかったのはこだわりのポテトでした!笑笑
どれも美味しくて、博多をイメージしたいろんな小皿も楽しめます。
びっくりしたのは、肉巻きおにぎりのボリューム感で、まさかの1つ頼むとお味噌汁とともに、めちゃくちゃ大きなおにぎりが2つ付いてきます。
...
それではプロンプトを投げてみましょう。
結果はこちらです。
実際の点数(3.6)と一致することはできませんでしたが、実験①②と比べるとかなり近い点数となりました。
やはり評価点数の傾向はスコアリング指標の良い材料ということがわかりました。
それにしてもあんなに雑なテキストファイルでもちゃんと理解してくれるとは、すごい時代になりましたね…!
実験④: 過去のレビュー記事から点数傾向をルール化 → ルールに従って推測
実験③が比較的うまくいったので、もう一つ方法を試したいと思います。
過去のレビュー記事と評価点数の関連性・傾向をルール化
1.のルールをプロンプトに含めて点数を推測する
というものです。
これによって膨大な過去の記事データをいちいち読み込ませる必要がなくなり、比較的短いプロンプトで推測することができます。
それではやってみましょう。
まず過去のレビュー記事内容と評価点数との因果関係を分析するプロンプトを投げ、分析結果を出してもらいましょう。
[プロンプト]
----------
ファイルはSさんが行った飲食店のレビュー記事と評価点数をまとめたものです。
このファイルの内容からSさんのレビュー記事内容の傾向と評価点数との因果関係を分析し、ルールに従って記述してください。
# ルール
・評価点数の範囲は1.0-5.0の間で付いています。
・Sさんが付ける点数範囲の分析は厳密に行なってください。
・レビュー記事中の表現での点数分布の傾向を、評価点数範囲と併せて記述してください。
----------
↓
[出力結果]
----------
Sさんのレビュー記事と評価点数を分析した結果、以下の傾向が見られます。
### 評価点数の範囲と分布
- **評価点数の範囲:** Sさんのレビューにおける評価点数は主に**3.0から3.9**の範囲内で付けられています。これらの点数は、一般的に「良いが完璧ではない」という評価を反映していると考えられます。
### レビュー内容と評価点数の因果関係
- **高評価(3.7-3.9)の傾向:**
- **料理の質:** 料理の味や質が非常に高い場合、Sさんは3.7以上の高評価を付ける傾向があります。例えば、「本当に美味しい」と表現する料理や、特に感激した料理についてはこの範囲に属する点数が付けられています。
- **接客の質:** さらに、スタッフの接客が非常に良いと感じた場合も、評価が高くなる傾向があります。「接客が良い」「スタッフが親切」といった表現が多く見られます。
- **中程度の評価(3.0-3.6)の傾向:**
- **部分的な不満:** 料理は美味しいが、店内の雰囲気やサービスに不満がある場合、Sさんは3.0-3.6の評価を付けることが多いです。例えば、「味は良かったが、接客がいまいちだった」や「サービスが遅かった」などのコメントがこれに該当します。
- **一部の問題:** 他にも、「料理が一部美味しかったが、全体的にもう少し改善が必要」といった場合も、この点数範囲で評価される傾向があります。
### 記述ルールに基づいた結論
- **点数分布の正確な把握:** Sさんが付ける評価点数の範囲は3.0から3.9の間に集中しており、特に3.5前後の点数が多く見られます。この範囲は、料理やサービスに対して好意的であるが、何らかの不満や改善点を感じた場合に多く見られます。
- **レビュー内容との因果関係:** Sさんのレビュー内容は、料理やサービスに対する具体的な感想が点数に反映されており、特に料理の質や接客の質が高評価の主な要因であることが明らかです。逆に、接客や雰囲気に対する不満があれば、その分評価が下がる傾向があります。
これらの分析を基に、Sさんの評価点数の傾向を理解することができます。
----------
↑のプロンプト作成で意識したのは下記です。
点数範囲をできるだけ厳密に出すよう指示する
各点数範囲内でどのような文言・表現を使っている頻度が高いか明確にする
記事内容と評価点数との分析結果が得られたので、これを使って評価点数を推測してもらいます。
下記が入力するプロンプトです。
下記のSさんの飲食店の口コミ記事の評価点数をルールに従い推測してください
## ルール
・点数は1.0-5.0の範囲内で0.1刻みで付けてください
・「Sさんの評価点数と記事内容の関連性」の内容を深く理解し、記述されている傾向を考慮した上で点数を推測しください。
## Sさんの評価点数と記事内容の関連性
----------
Sさんのレビュー記事と評価点数を分析した結果、以下の傾向が見られます。
### 評価点数の範囲と分布
- **評価点数の範囲:** Sさんのレビューにおける評価点数は主に**3.0から3.9**の範囲内で付けられています。これらの点数は、一般的に「良いが完璧ではない」という評価を反映していると考えられます。
### レビュー内容と評価点数の因果関係
- **高評価(3.7-3.9)の傾向:**
- **料理の質:** 料理の味や質が非常に高い場合、Sさんは3.7以上の高評価を付ける傾向があります。例えば、「本当に美味しい」と表現する料理や、特に感激した料理についてはこの範囲に属する点数が付けられています。
- **接客の質:** さらに、スタッフの接客が非常に良いと感じた場合も、評価が高くなる傾向があります。「接客が良い」「スタッフが親切」といった表現が多く見られます。
- **中程度の評価(3.0-3.6)の傾向:**
- **部分的な不満:** 料理は美味しいが、店内の雰囲気やサービスに不満がある場合、Sさんは3.0-3.6の評価を付けることが多いです。例えば、「味は良かったが、接客がいまいちだった」や「サービスが遅かった」などのコメントがこれに該当します。
- **一部の問題:** 他にも、「料理が一部美味しかったが、全体的にもう少し改善が必要」といった場合も、この点数範囲で評価される傾向があります。
### 記述ルールに基づいた結論
- **点数分布の正確な把握:** Sさんが付ける評価点数の範囲は3.0から3.9の間に集中しており、特に3.5前後の点数が多く見られます。この範囲は、料理やサービスに対して好意的であるが、何らかの不満や改善点を感じた場合に多く見られます。
- **レビュー内容との因果関係:** Sさんのレビュー内容は、料理やサービスに対する具体的な感想が点数に反映されており、特に料理の質や接客の質が高評価の主な要因であることが明らかです。逆に、接客や雰囲気に対する不満があれば、その分評価が下がる傾向があります。
これらの分析を基に、Sさんの評価点数の傾向を理解することができます。
----------
## 口コミ記事
----------
ゆっくりできるところでおいしい料理も食べたいし甘いものも食べたい。そんなわがままな願いを叶えるのがこちらのレストランです。忘年会シーズンに行きましたが、ある意味世間ではサラリーマンの人たちが大勢で団体予約する時期だったのか、女子会などが多い様子の本店は、穴場時期だったのかギリギリで予約が取れました!
パフェはもちろん絶品でしたが、その他のお料理も最高でした。
ゆっくり滞在もできるので、おいしいワインを飲みながら語り合い、最高に美味しいパフェを楽しむことができて、みんな大満足の様子でした!
また行きます!!
----------
出力結果は下記になりました
結果、実験③と値が近い点数を推測することができましたが、実際の点数と一致させることはできませんでした。
実際の点数にならなかった原因を考える
今回実験③④では実際の評価点数に近い結果を得られることができましたが、同じ点数にすることはできませんでした。
原因を考えてみます。
レビュワーが感想を全て文章に盛り込むのが難しかった
読み込ませる過去のレビュー記事の量が足りない
文章では表現できない要素があった
視覚や聴覚などの感覚的なもの
お店のジャンルによって重要視する要素が異なっていた
レストランだったらゆったりできる方がいいが、ラーメン屋は回転率が高い方がいいなど
評価推測に必要な情報が文章以外の要素を含めまだまだあるように感じました。
まとめ
今回やってみて、下記の知見を得られました。
レビュー記事内容の情報だけでスコアリングするのは現状難しい
レビュー記事のサンプルを事前に読み込ませることで点数の精度をあげることができる
レビュー記事内容から傾向をルール化してプロンプトに含めても一定の精度が得られる
あまり構造化していないテキストでも使える
より精度を高めるためには、文章以外の情報が必要
生成AIを使ったスコアリングのアイディアがありましたら教えていただけると幸いです。
それではまたお会いしましょう!
この記事が気に入ったらサポートをしてみませんか?