【Ltech#11】住まい探しにおける対話AIの自然言語解析技術

1.1K Views

October 29, 20

スライド概要

2020/10/29 Ltech#11 不動産領域のAI活用最前線 〜初完全リモート開催〜
AI戦略室データサイエンスグループ 丸山拓海

profile-image

LIFULL HOME'Sを運営する株式会社LIFULLのアカウントです。 LIFULLが主催するエンジニア向けイベント「Ltech」等で公開されたスライド等をこちらで共有しております。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

住まい探しにおける 対話AIの自然言語解析技術 AI戦略室 データサイエンスG 新卒 丸山拓海

2.

経歴 2020年3月 長岡技術科学大学大学院 電気電子情報工学専攻 卒業 2020年4月〜 LIFULL AI戦略室 データサイエンスG 新卒入社 研究: 自然言語処理 (テキスト平易化) ● AI戦略室 データサイエンスG データサイエンスエンジニア まるやま 丸山 ● たくみ 拓海 ● Takumi Maruyama and Kazuhide Yamamoto. Extremely Low Resource Simplification with Pre-trained Transformer Language Model. Proceedings of the International Conference on Asian Language Processing (IALP 2019), Best Paper Award, pp.53-58 (2019.11) Takumi Maruyama and Kazuhide Yamamoto. Lexical Substitution is Practical for Rare Word Simplification. The 32nd Pacific Asia Conference on Language, Information and Computation (PACLIC 32), pp.437-446 (2018.12) … etc.

3.

はじめに... ※ 辞書作りがメインの作業なので 「機械学習」の話は ほとんどありません 😖💦

4.

はじめに... 「対話形式の住まい探し(検索)」 ができたらいいな 🤗

5.

現在の検索形式 対話AIによる検索 (のイメージ) 賃貸と購入どちらで お探しでしょうか? 賃貸です エリアはお決まりで しょうか? 東京です. できれば, 自然豊かな ところがいいです.

6.

対話AIによる検索 (のイメージ) 賃貸と購入どちらで お探しでしょうか? 現在の検索形式で入力可能な項目 e.g.) エリア, 間取り, 家賃, ... 賃貸です エリアはお決まりで しょうか? 現在形式では表現しにくい項目 e.g.) 自然豊かなところ, 海の近く, 〇〇駅に10分か××駅に15分くらい, ... 東京です. できれば, 自然豊かな ところがいいです.

7.

自然言語入力で、 検索条件の幅が広がる! 対話AIによる検索 (のイメージ) 賃貸と購入どちらで お探しでしょうか? 現在の検索形式で入力可能な項目 e.g.) エリア, 間取り, 家賃, ... 賃貸です エリアはお決まりで しょうか? 現在形式では表現しにくい項目 e.g.) 自然豊かなところ, 海の近く, 〇〇駅に10分か××駅に15分くらい, ... 解析の難易度も上がる😭 東京です. できれば, 自然豊かな ところがいいです.

8.

“ことば”で検索するために 何が必要なのか...?

9.

“ことば”で検索するために... 人間の発話(自然言語) → 機械で解釈可能な形式 の変換が必要!

10.

「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000

11.

難しさはどんなところに?

12.

難しさはどんなところに? 課題1: 同じ意味でも表現は様々! ・「バス・トイレ別」, 「お風呂とトイレが別れている」, ... → こだわり条件: バス・トイレ別 ・「車1台持っているんですよね」「駐車場ってあります?」, … → こ だわり条件: 駐車場 課題2: 言葉には「曖昧さ」がある! ・「東京へのアクセスがいい」 ・「中央区で探しているんですけど」 ・「八万の物件ってありますか?」 → 東京都? 東京駅? → どこの中央区? → 八万(地名)? 家賃が八万ってこと?

13.

難しさはどんなところに? 課題3: 単語やフレーズ同士の関係性を捉える必要がある! ・「宅配ボックスは要らないけど、オートロックと女性限定は欲しい」 キ ーワード抽出: こだわり条件 嗜好 宅配ボックス オートロック 女性限定 ? 要らない 欲しい

14.

難しさはどんなところに? 課題1: 同じ意味でも表現は様々! 課題2: 言葉には「曖昧さ」がある! 課題3: 単語やフレーズ同士の関係性を捉える必要がある!

15.

解析方法

16.

解析方法 ルールベース

17.

解析方法 ルールベース お手製辞書を作って, 辞書引きする

18.

解析方法 ルールベース お手製辞書を作って, 辞書引きする だけの素朴な方法 🙇‍♂️

19.

解析方法 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」

20.

具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper

21.

具体的な解析手順 Step1: キーワード・キーフレーズ抽出 課題1: 同じ意味でも表現は様々! ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 キーワード辞書 ・お手製辞書を検索するだけ! ・キーワード辞書に加えて、言い換え辞書を利用 キーワード バス・トイレ別 意味カテゴリ kodawari 「東京まで電車で30分以内で 言い換え辞書 バスとトイレが別れている キーワード 類義語・フレーズ 家賃7万円以下の物件」 ってありますかね? バス・トイレ別 バスとトイレが別れている 辞書は合計で, 12,000エントリ (手作業, 地名+駅名は自動) → 表現の揺れを吸収 キーワード・キーフレーズ 意味カテゴリ ・「バス・トイレ別」と「バスとトイレが別れている」 東京 station || area は同じ意味であることを言い換え辞書で定義 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper

22.

具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper

23.

具体的な解析手順 Step1: キーワード・キーフレーズ抽出 課題2: 言葉の「曖昧さ」がある! 曖昧さを許容できる仕組み. 「駅名(station)」か「地名(area)」のどちらか! ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper

24.

具体的な解析手順 Step1: キーワード・キーフレーズ抽出 課題2: 言葉の「曖昧さ」がある! 曖昧さを許容できる仕組み. 「駅名(station)」か「地名(area)」のどちらか! ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 意味カテゴリ 東京 station || area 電車 ちなみに... transportation 30分以内 東京駅 time station バスとトイレが別れている 東京都 kodawari area 家賃7万円 rent 以下 upper

25.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」

26.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」

27.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper transportation station || area time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? rent upper Step1 ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」

28.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 transportation station || area 物件の周辺環境 time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? rent 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? こだわり条件 家賃の上限値 upper Step1 Step2: 規則の適用

29.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? こだわり条件

30.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 transportation station || area time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?

31.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper station || area distance 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 物件の周辺環境 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?

32.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? rent upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 家賃の上限値

33.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 家賃の上限値

34.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 transportation station || area time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? rent upper 物件の周辺環境 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? こだわり条件 家賃の上限値

35.

具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 課題3: 単語・フレーズ同士の関係性を捉える! 独自に定義した関係性の規則によって、キーワードを組み合わせる ! 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 transportation station || area time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? rent upper 物件の周辺環境 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? こだわり条件 家賃の上限値

36.

「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? Step1: キーワード抽出 transportation station || area time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 kodawari ってありますかね? rent upper 周辺環境 所要時間 交通手段 東京 30分以内 電車 Step2: キーワード同士 規則に基づいて 結合 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000

37.

評価

38.

評価 ▶︎ 対象データ ・住まいの窓口対話ログ: 100発話 (手作業で検索条件をアノテーション) 周辺環境 所要時間 交通手段 東京 30分以内 電車 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000

39.

評価 ▶︎ 評価尺度: Precision / Recall / F1-Score ・Entity-Level: 解析器が抽出したキーワードが正解データとどのくらい一致しているか? → Step1までの評価 ・Instruction-Level: 解析器が出力した検索条件が正解データとどのくらい一致しているか? → Step1 + Step2の評価 キーワード・キーフレーズ 東京 「東 京まで電車で30分以内で バスとトイレが別れている 家 賃 7万円以下の物件」 ってありますかね? 意味カテゴリ station || area 電車 transportation 30分以内 time バスとトイレが別れている kodaw ari 家賃7万円 rent 以下 upper 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000

40.

評価 Entity-Level Instruction-Level Precision Recall F1-Score Precision Recall F1-Score 80.90 79.12 80.00 59.69 48.73 53.66 ルールベースのシンプルな方法でも、 かなり解析できる!

41.

解析結果例 自然言語文 ペットと一緒に住めて、駐車場有、3LDK以上で 宜しくお願いします. 解析結果 { 'operator': 'AND', 'instructions': [ {'binary': [{'column': 'feature_info', 'value': 'ペット相談可'}, {'column': 'feature_info', 'value': '駐車場あり'}], 'continuous': [{'column': 'layout', 'lower': '3LDK'}]}] } 徒歩20分圏内に山がある静かな街がいいな. { 'operator': 'AND', 'instructions': [ {'categorical': [{'column': 'feeling', 'value': '静か'}], 'around': [{'column': 'around', 'value': '山', 'upper': 20.0, 'unit': '徒歩/分'}]}] } 宅配ボックスは要らないけど、オートロックと 女性限定は欲しい. { 'operator': 'AND', 'instructions': [{'binary': [ {'column': 'feature_info', 'value': '宅配ボックス', 'preference': 'redundant'}, {'column': 'feature_info', 'value': 'オートロック', 'preference': 'want'}, {'column': 'feature_info', 'value': '女性限定', 'preference': 'want'}]}] }

42.

まとめ ・対話形式の検索を行うための自然言語解析技術 ・辞書引きするだけのシンプルな手法 ・キーワード抽出:80%, 検索条件: 50% の性能