商品口コミを特徴ベクトルに使ったセマンティックサーチの応用例
P01 表紙
商品口コミを特徴ベクトルに使ったセマンティックサーチの応用例
2023年3月29日 株式会社ロンウイット
関口宏司
P02 セマンティックサーチ*1
(*1:ニューラルサーチやベクトル検索などと呼ばれることもあります。本書ではセマンティックサーチで統一します)
人が理解するのと同じように検索エンジンがテキスト・画像・動画・音声データを理解して高速に検索できる
P03 内容
- セマンティックサーチとは?
- デモ
- キーワード検索との比較
- ChatGPTとの比較
- 車のユーザーレビュー(口コミ)データを使った車の特徴ベクトル化とセマンティックサーチによる検索
- デモ
- 口コミデータの構造と分布、特徴
- 特徴ベクトル作成のさまざまな方法と考察
- Q & A
P04 従来型のキーワード検索との比較
- 従来のキーワード検索では文書に含まれるキーワードを入力しないと検索できない
- ある程度業務ドメインの知識がないと検索できない
- ドメイン知識があっても、同じ意味を持つキーワードは複数存在するので、類義語辞書のメンテナンスが欠かせない
- セマンティックサーチでは必ずしもクエリのキーワードはヒットする必要がない
- 業務ドメインの知識がなくても、調べたいことを自分なりの表現にすれば検索できる
- (例)ECサイトで「机を組み立てるのに必要な工具」
- (例)辞書・慣用句・ことわざを調べるのに、意味から調べられる
- コーパス収集時期とクエリ時期が離れていても検索できる
- 従来のキーワード検索における検索性能*1を向上させるための施策
- 文字等さまざまな正規化
- 形態素解析と文字N-gramの使い分けや組み合わせ
- キーワードの表記揺れ対策やシノニム定義
- フィールドの重み付け
- クエリサジェスチョン etc.
- セマンティックサーチは上記従来テクニックを一切不要にする破壊的な技術
*1: 情報検索における精度(Precision)と再現率(Recall)のことを指します。
P05 従来型のキーワード検索との比較(技術要素)
P06 技術要素比較:Bag-of-Words vs. Semantic
P07 技術要素比較:Sacparse vs. Dense
P08 技術要素比較:Boolean vs. ANN Vector
P09 他社製検索エンジンの「セマンティック検索」との比較
- 他社製検索エンジンの「セマンティック検索」は、従来型のキーワード検索技術の上に構文解析・意味解析を付加したもの。そのため、
- 検索対象はテキストのみ。
- 文書の意味を理解しているわけではない。
- 結局はキーワードが当たらないとヒットしない。
- (再現率ではなく)精度向上の補助的施策にすぎない。
- キーワードが構文解析ウインドウの外にあると太刀打ちできない。
- ヒューリスティクス。(類義語辞書登録のように切りがない)
- ロンウイットのセマンティックサーチは、「人が理解するようにテキスト・画像・動画・音声データを検索エンジンが理解し、検索できる」ので、
- キーワードがヒットしなくても、調べたいことの意味が記述されていればヒットする。
- 検索対象はテキストに限らない。ベクトル化できればあらゆるものが検索可能。
- テキストクエリで画像を検索したり(またはその逆)できる。
(注)構文木の図は英語の場合です。日本語の場合は係り受け解析等が行われます。
P10 今後キーワード検索はどうなる?
- キーワードを含む文書を探したいユーザーのために今後も使われ続ける
- (例)当該業務ドメインに詳しい利用者が使う検索システム
- (例)著者名による書誌検索、会社名検索、製品名検索
- セマンティックサーチとのハイブリッドシステムで使われる
- キーワード検索をAIを使ってより良くする工夫も健在
- 類義語辞書自動生成
- 専門用語抽出
- 固有表現抽出からの新たなファセット軸提供
- 言語モデル等によるスマートなクエリサジェスチョン
- アノテーション
- ハイパーパラメーター探索
- ランキング学習
P11 ChatGPTについて
- 情報検索との違い
- 情報検索
- 時短が好まれる風潮にあって、ユーザー視点から的外れなページへの誘導が好まれなくなってきている。目的によってGoogle検索からインスタグラムやTwitterへ検索ユーザーが移動
- 検索エンジンはコンテンツ元に基づいてインデックスを作成するのみで、情報提供はあくまでもコンテンツ元。検索エンジンには法的なバックアップがある
- ChatGPT
- モデル内に知識があれば端的に、時には創造性も加えて、よさげな回答を提供できる
- チャットはコンテンツ提供となるため、責任が生じないように利用規約の設計が必要
- VS. toC検索エンジン
- 情報検索に時間をかけたくないユーザーや責任あるコンテンツ元を必要としないユーザーはChatGPTのようなAI生成コンテンツで満足する可能性が高く、ある程度の需要がChatGPTに流れる
- VS. toB検索エンジン
- ChatGPTが特定企業の社内コンテンツを学習したモデルを提供できるようになると、toC同様、企業ユーザーもChatGPTを使い始める。ただし、対顧客へ責任ある回答を行うために、エビデンスを情報検索する需要がある
- 結果的に当面は企業内検索は存続し、時短要件を満たすため、セマンティックサーチの需要は高まる
- チャットと検索は利用目的が異なる。AI出力ではなく、人が作成したオブジェクト(社内文書、写真、論文、商品、etc.)を探す場合は検索エンジンが使われる
- ChatGPTに「出典を示してくれ」と言っても、存在しないリンク(404 Not Found)を平気で提示してくる
- ChatGPTの特定業務ドメインのモデル生成には多大なコストとリソースが必要となる
P12 車のユーザーレビューデータによる車の特徴ベクトル化とセマンティックサーチによる検索
P13 ユーザーレビューのデータ構造
(ルート)
│
メーカー 例)LEXUS メーカー 例)TOYOTA
│
車種(モデル) 例)CT モデル 例)ES モデル 例)GS
│
レビュー 0123.json レビュー 1234.json
P14 ユーザーレビューデータ(例)
{
"title": "ワイルド",
"maker": "レクサス",
"model": "CT",
"eval_text": "【総合評価】 とてもいいと思います! 【良い点】 色がかっこいし綺麗にみえる 【悪い点】 じぶんてきにはおおきさがもっとコンパクトになってほしい",
"eval_comprehensive": " とてもいいと思います! ",
"eval_dislike": " じぶんてきにはおおきさがもっとコンパクトになってほしい",
"eval_like": " 色がかっこいし綺麗にみえる ",
}
P15 データの各種統計情報
- メーカー数(ブランド数):91社(TOYOTAとLEXUS、FORDとFORD JAPANは別勘定)
- 車種数:1,414
- ユーザーレビュー総数:68,441(平均:48.4 reviews / model)
- レビュー数の分布
P16 試したこと(1)
レビューテキストの単純な連結/Simple Concat
- 「ユーザーレビューをくまなく使いたい!」
- BERTのトークン数制限により、未試行
車Aの特徴 = “かっこいい” + “室内空間が広い” + “小回りが効く” + …
P17 試したこと(2)
レビューテキストの単純な平均/Simple Average
- 「皆の意見を取り入れる(パート2)」(民主的?)democracy
- 結果:多数の意見を計数的に平均をとってもぼやけてしまう
車Aの特徴 = ( ↑ + → + ↓ + … ) / N
P18 試したこと(3)
ユーザーレビューを使った検索結果グループ化/Solr’s Search Result Grouping on User Reviews
- 「民主的な方法はうまくいかなかったので、専制君主的にやってみよう」monarchy
- &group=true&group.field=model
- 結果:車種ごとにたった一つの意見しか特徴にならない。「弱い」意見が無視されてしまう
車Aの特徴 = argmax{ score(query_vector, review_vector) }
review_vector ∈ 車Aの全レビュー
P19 試したこと(4)
クラスタリングによる代表的な意見の抽出とレビュー連結/Clustering & Concatenating Review Texts
- 「K個の代表的なレビューを見つけて連結しよう。1車種の特徴はせいぜい3つ(K=3)程度でいいだろう」
- 結果:レビューの少ない不人気車種が上位を占めてしまう場合、感覚と合わない
P20 試したこと(5)
クラスタリングとレビュー連結(その2)/Clustering & Concatenating Review Texts (Part II)
- 「ある程度レビュー数 R がある車種に限定しよう」
- 結果:現在(2023年3月29日)デモで公開しているモデル
P21 試したこと(6)
全レビューを連結して文書要約/Concatenating Reviews & Summarizing
- 「BERTのトークン数制限を解決しながら全ての意見を取り入れたい」
- (問題1)要約しすぎ!
- "家の近所に買い物など、短距離のチョイ乗りなら十分役目ははたせますが. プライスに見合った価値はあるし、個性的な車好きには強くお薦め出来るが、日本車的な気軽さを求める人にはお薦めしない。" → "日本の車好きにはお薦めしない。"
- (問題2)意味が違ってきている!
- "小回りが良い感じですね、あまり見掛けないですねかわいくて乗り心地もそこそこ。燃費がやたらといいです 軽トラックもありますが同じくらいです。ボディサイズがコンパクトで取り回ししやすく運転しやすかったです。パワーも不足感がなく十分に楽しめました。" → "軽トラックで運転しやすかった。"
- (問題3)多数意見が無視される!
- "やっぱり 古い 。燃費がやたらといいです 軽トラックもありますが同じくらいです 。古いのでかっこがわるいです。" → "燃費がやたらと良い。"
P22 まとめ/考察(1)
- ユーザーレビューのデータ分布は均一ではない。
- レビューのない不人気車種はそもそもこの方法では検索対象にならない。
- データによって使い方を調整する必要がある。
- 今回の車レビューデータでは
- 単純平均はうまくいかなかった。
- 多数の意見をいかに取り込むかが難しい。
- 愛車に対する熱い想いがときどき見られる。
- ただし、やってみて失敗から学べることは多々ある。(無駄な試行は一度もなかった)
P23 まとめ/考察(2)
- セマンティックサーチの優位性は相変わらず有効。
- (例)シノニム定義なしで「かわいい」「カワイイ」「可愛い」が検索できる。
- といってもそこまで万能ではない。
- (例)「日本一周をしたい」と検索してもおそらくダメで、「長時間運転しても疲れない車」とユーザー側で読み替えて検索する必要がある。
- ユーザーレビューデータから商品の特徴ベクトルを作成することで、ユーザーに新しい検索機会を提供できるだけでなく、メーカー側も学びを得られる。
- いろいろ試したいが時間がなかった。
- セマンティックサーチモデル自体のファインチューニング
- ハイパーパラメーター探索(K, R, similarityFunction, …)
- Re-ranking (人気車種を上位表示等)
P24 Q&Aアンケート