# 宿トピックの整理と自動分類の試み

林部祐太IIstván Varga
株式会社リクルート Megagon Labs, Tokyo, Japan
\{hayashibe, istvan\}@megagon.ai

## 概要

宿探し対話の自動応答に用いる知識整備として， ツリー構造での宿に関するトピックの整理に取り組 んだ.トピック数（ノード数）は 791 個で，平均約 8 個のトピック例文をアノテーションした.また，発話の解釈結果をツリーにマッピングして自動応答 に活用することを想定し，ツリーへの自動分類にも 取り組んだ. 自動分類には，トピック数が非常に多 いが学習事例が非常に少ないという制約においても 頑健に動くよう，類似度に基づく手法を用いた。

## 1 はじめに

宿を探しているカスタマーへの接客にて，オぺ レータは宿トピックに関する知識を用いて応対す る。例えば次のような応対である。

・要望が抽象的であれば，具体的な要件を例示し て提案する（詳細化）:

カスタマー「自然豊かな所に止まりたい」

すか？」

・要望に該当する候補が多すぎれば，絞り込むた めに関連した追加の要望を聞く（要望追加）:

カスタマー「マグロを夕食に食べたい」

オオペレータ「お食事はバイキングがお好 みですか？それとも部屋食がよろしいでしょ うか？」

・要望に該当する候補がなければ，関連した代替 となる要件を例示して提案する（代替提案）：

カスタマー「マグロとか食べられる宿はありま すかね」

オペレータ「そのエリアでは，マグロをお出 している宿はありませんが，サーモンの有名な 宿があります.いかがでしょうか？」

これらは

・「自然」に関するトピックには「海」や「山」な

## どがある

・食事に関係するトピックには「バイキング」や 「部屋食」といった食事の形式に関するトピッ クがある

・「マグロ」の兄弟トピックに「サーモン」がある などといったような，宿トピックに関する知識に基 づいて行われる.

我々はこのような応対ができる対話システムの 構築を目指しており，本研究では宿トピックに関す る知識の整理と，発話のトピック自動分類に取り 組む.

## 2 関連研究

特定ドメインのトピックの整理を半自動で行った 研究として，レストランレビューサイト Yelp に投稿されている和食，イタリアンなどといったレスト ランのカテゴリのレビューごとに, Latent Dirichlet Allocation (LDA)[1] を適用し, 単語クラスタリング を行った研究 [2] がある. Reschke らは得られたク ラスタをサブカテゴリとみなし，人手でクラスタト ピックをアノテーションした. 我々は経験による分類を反映させるため，自動クラスタリングは用いず 完全に人手で整理する。

宿ドメインでは，次のようなトピックの分類で 研究が行われている. Pontik らは SemEval-2016 Task 5 の宿のレビューの感情分析で 7 つのアスペクト (hotel, rooms, room amenities, facilities, service, location, food\&drinks)を用いた [3]. Fukumoto らは7つのア スペクト（サービス，風呂，部屋，食事，立地，設備・アメニティ, 総合) で宿のレビューを分類した [4]. 安藤らは「商品の絶対的事実」「売り手の要望」「買い手の購入理由」など 23 項目で宿のレビューを 分類した [5]. 我々はこれらの分類を参考にしつつ,詳細化などの応対に使えるように，複数階層をもつ 体系でトピックを整理する。
表 1 宿トピックとトピック例文の例

## 3 宿トピックツリーとトピック自動分類モデルの試作

## 3.1 宿トピックツリーの設計

先行研究の分類を参考にしつつ，旅行情報サイト じゃらん net ${ }^{1)}$ に掲載されている宿レビューを観察 しながら，宿に関するトピックを手作業にてッリー 構造で整理することにした，以下そのツリーを「宿 トピックツリー」または単に「ツリー」とよぶ. そ して，根の子を Level 1，その子を Level 2，...といっ たようによび，“Level 1> Level 2” といった表記でト ピックを表す.

また, Level 1 と Level 2 はトピックの大分類・中分類を表すこととし, 具体的なトピックは Level 3 以下で表すこととする．例えば「そばアレルギー」 に関するトピックは，「食事>アレルギー>そば」と いう表記で表す。

Level 1 のトピックは，「立地，景色，宿タイプ，ス タッフ，設備・サービス，インターネット，駐車場，風呂, 食事, セキュリティ, 備品, ベッド，部屋， ユニバーサルデザイン，值段，子ども，雾囲気，リ ゾート」の計 18 個とする.ツリー全体でトピック は計 791 個あり，節トピックは 166 個，葉トピック は 625 個である. トピックの例を表 1 に，分布を表 2 に示す。

## 3.2 学習用トピック例文の作成

自動分類器の学習のため，トピックに該当する発話文やレビュー文の例（以下，トピック例文とよ ぶ）を作成した。例を表 1 に示す. トピック例文は 計 6,198 文で，平均約 8 文作成した.


## 3.3 トピック自動分類モデルの設計

宿トピック数は 791 と非常に多いが，学習事例数 はトピックあたり平均約 8 個と非常に少ない. そ のため，事前学習モデルに Softmax 層を追加して fine-tune する一般的な方法ではうまく動かない. そ こで，類似度に基づく分類手法を用いる。

まず，トピック例文と入力を SentenceTransform$\mathrm{ers}^{2)}$ [6] でベクトル化し，各トピック例文と入力の コサイン類似度を求める. 次に，トピックごとにコ サイン類似度の平均値を求め，それを入力に対する トピックのスコアとする。そして，閾値 $t$ を超える トピックのうち最も高いスコアをもつトピックを入力に対する予測トピックとする．ただし，間値を超 えるトピックが無ければどのトピックにも該当しな いとする。

## 4 トピック自動分類実験

## 4.1 実験準備

## 事前学習モデルの準備

事前学習モデルにはじゃらん net に掲載されて いる宿レビューを使って学習した $\mathrm{BERT}^{3}$ を用い る. BERT のトークナイザーは語彙サイズを 8,000 となるようして学習した SentencePiece ${ }^{4)}$ [7]を用い る. BERT のパラメータは公式サイトで公開され ているモデル BERT-Base と同じように，バッチサ イズは 512, Attention heads の数は 12, レイヤ数は 12，隠れレイヤ数は 12 とした。TPUを用いて 150 万ステップ学習し, Masked token prediction の精度は 66.5, Next sentence prediction の精度は 94.8 となった.

## Sentence Transformers の学習とスコア計算の高速化

Sentence Transformers の学習は事前学習モデルと トピック例文を fine-tune することで行う．損失関数 は同じトピックをもつ事例は近く，異なるトピック をもつ事例は遠くなるようなべクトルを得られる BatchAllTripletLoss[8]を用いる。学習は，バッチ サイズ 128 , エポック数 5 で行った.

処理の高速化のために，事前にトピック例文はべ クトル化しておく．また，スコア計算は簡略化し，

2) https://www.sbert.net/

3) https://github.com/google-research/bert

4) https://github.com/google/sentencepiece
表 3 テスト事例の予測結果. 予測トピックで括弧書きのものはスコアが閾値未満のため，該当トピックなしとする.

 &  & 食事>食材>海鮮 & 0.706 \\

表 4 自動分類実験の精度

表 5 自動分類実験の予測トピックごとの精度

高速近傍探索ソフトウェア $\mathrm{NGT}^{5}$ を使って 50 個の 近傍トピック例文とのコサイン類似度のみを利用し て求める.

5) https://github.com/yahoojapan/NGT

## 4.2 開発データと評価データ

現在開発している対話システムでは，カスタマー の発話から省略されている言葉を補い，発話文を要望ごとに簡潔に解釈した解釈文を生成し，それを 使って検索や返答を生成する。例えば，「それがい いですが，海鮮は出ますか？」といった発話文に対 して「朝食はバイキングを希望する。朝食バイキン グに海鮮が出るか知りたい。」といったような解釈文を作成する。そこで，解釈文に作成したトピック を自動分類して活用することを想定して実験する.宿探しの対話にそのような解釈文がアノテーション されたコーパス [9] のうち 1,443 文の解釈文 ${ }^{6)}$ に対し てトピックをアノテーションした. このうち 688 文 を自動分類器のパラメータ開発に， 755 文を評価に 用いる.

開発用データにおいて，予測が正解であるとき7） と不正解であるときのスコアの平均はそれぞれ 0.746 と 0.580 であった. そこで，閾値 $t$ は平均の 0.663 とする.

## 4.3 自動分類実験結果

途中の Level まで一致していれば正解としたとき の精度を表 4 に示した ${ }^{8)}$. Level 1 のみの一致で評価 した場合の F1 は 49.1 である. 閾値未満はすべてト

6）論文中では「要約文」とよんでいる

7）1つの文に複数のトピックがアノテーションされている場合は，1つでも該当する場合「正解」とする

8）本論文では TP, TN, FP, FN はそれぞれ True Positive，True Negative，False Positive，False Negative の略とする

ピック無しとしているため FN が多くなり，Recall が 36.9 と低くなったと考えられる. Level 2 のみの 一致で評価した場合の F1 は44.9である. Level 1 の それと比較すると 4.2 ポイント低く，より詳細なト ピックを予測するのは難しいことが分かる．予測ト ピックが完全に一致している場合のみ正解としたと きの F1 は44.0であった。

表 5 には予測のトピックごとの精度を示した.「総数」はそのトピックが正解にある事例の総数を 示す9). FN は「立地」，「値段」，「部屋」で比較的多 いことが分かる.

予測の例を表 3 に示す。まず，\#1 から\#3 は TP の 事例である.「海鮮」や「海の景色」の表現は学習事例に存在するが，「海産物」や「オーシャン」といっ た表現は学習事例には存在しない.しかしながら， ベクトルの類似度に基づくスコアにより適切に類似度を計算し，正しくトピックを予測できている。\#4 は TN の事例で，どの学習事例とも類似しないこと から，正しく該当トピックなしと予測できている。

\#5 と\#6 は FP の事例である. \#5 は食事の値段と いう点では正しいが，高めの值段で良いという入力 に対して逆のトピックを予測していため間違ってい る. \#6 も食事の酒という点では正しいが，ビールに 関する入力ではないので間違っている.

\#7 から\#9 は FN の事例である。７と＃8 は最もス コアが高い予測トピックであっても間違っている事例である。９９は閾値の設定によっては TP となった 事例である。

## 5 考察・今後の課題

本論文での実験をもとに考察し，トピックッリー の改善すべき点と自動分類手法の改善すべき点につ いて述べる.

## 5.1 トピックッリーの改善

今回の試作では，1つのトピックの親は必ず 1 つ となるようなツリー構造でトピックを整理したが，複数の親が考えられるトピックは存在する. 例え ば，「沖縄そば」は「麺類」の子としたが，「郷土料理」の子とも考えられる. このようなトピックが存在するので，複数の親をもつことを許すなど，異な る構造を検討する必要がある。

また，トピックの網羅性を上げるため，実際の対

9）1つの文に複数のトピックが付与されうるので「総数」の 和は文の総数とは一致しない。話に適用し，実用上問題となるトピックが不足して いないかを確認する必要もある.

## 5.2 自動分類の改善

自動分類の精度向上には，まず学習用データを改善することが必要である．学習に用いた例文は実際 の発話をもとに作ってはいないため, 学習と評価に 用いたデータの種類が異なる.これを揃えることで 精度の改善が見込める．ただし，すべてのトピック に対してアノテーションするのはコストが高いた め，間違いやすいトピックに対してに集中して事例 を追加するのが効果的だと考える.

次に，抜本的な精度改善のためにはモデルのアー キテクチャを改良することも必要である．現在のモ デルでは「食事」トピックと「食事>値段」トピック のように親子関係があっても, BatchAllTripletLoss を用いているのでそれぞれに属すトピックは距離を とるように学習されている。これが\# 5 や\#6 のよう な途中の Level までは正解しているが FP となって いる事例の誤りの原因と考える。そこで，これを考慮に入れた損失関数へ置き換えることで改良できる と考える。

また，ベクトルの分布の偏りが小さくなるような 粒度の粗いトピックの分類には類似度に基づくス コアではうまく働かないのも問題であると考える.「立地」や「部屋」でFNが多かったのはそれらの粒度が他のトピックと比べて粗いためだと考えられ る.そのため，類似度に基づくスコアとは別のスコ アも用いることで FNを減らし，精度の改善ができ ると考える。

## 6 おわりに

本研究では宿探しの対話システム構築のために,宿トピックに関する知識の整理と，発話のトピック 自動分類に取り組んだ。トピック数は非常に多い一方で学習事例は非常に少ない中，類似度に基づいた 分類手法を用いた。

今後は作成したトピックツリーや自動分類器自体 の改善はもちろん，対話システムに組み込んだ応用 にも取り組んでいきたい。

謝辞アノテーションを行っていただき，多くの示唆に富んだご意見をくださった山下華代氏に感謝し ます。また，有益な助言していただいた大阪大学の 荒瀬由紀准教授に感謝します。

## 参考文献

[1] David M Blei, Andrew Y Ng, et al. Latent Dirichlet Allocation. The Journal of Machine Learning Research, Vol. 3, pp. 993-1022, 2003.

[2] Kevin Reschke, Adam Vogel, et al. Generating Recommendation Dialogs by Extracting Information from User Reviews. In $A C L$, pp. 499-504, 2013.

[3] Maria Pontiki, Dimitris Galanis, et al. SemEval-2016 Task 5: Aspect Based Sentiment Analysis. In Proceedings of the 10th International Workshop on Semantic Evaluation, pp. 19-30, 2016.

[4] Fumiyo Fukumoto, Hiroki Sugiyama, et al. Incorporating Guest Preferences into Collaborative Filtering for Hotel Recommendation. In Proceedings of 6th International Joint Conference on Knowledge Discovery, Knowledge Enginnering and Knowledge Management, pp. 22-30, 2014.

[5] 安藤まや, 関根聡. レビューには何が書かれていて、読み手は何を読んでいるのか? 言語処理学会年次大会, pp. 884-887, 2014

[6] Nils Reimers and Iryna Gurevych. Sentence-BERT: Sentence embeddings using Siamese BERT-Networks. In EMNLP, pp. 3982-3992, 2019.

[7] Taku Kudo. Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates. In $A C L$, pp. 66-75, 2018.

[8] Alexander Hermans, Lucas Beyer, et al. In defense of the triplet loss for person re-identification. CoRR, Vol. abs/1703.07737, , 2017.

[9] 林部祐太. 要約付き宿検索対話コーパス. 言語処理学会年次大会, pp. 340-344, 2021.
 林部祐太IIstván Varga 株式会社リクルート Megagon Labs, Tokyo, Japan \{hayashibe, istvan\}@megagon.ai  