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

林部祐太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.