Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 42 Ad

More Related Content

More from LIFULL Co., Ltd. (20)

Recently uploaded (20)

Advertisement

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

  1. 1. 住まい探しにおける 対話AIの自然言語解析技術 AI戦略室 データサイエンスG 新卒 丸山拓海
  2. 2. AI戦略室 データサイエンスG データサイエンスエンジニア 丸山 拓海 まるやま たくみ 2020年3月 長岡技術科学大学大学院 電気電子情報工学専攻 卒業 2020年4月〜 LIFULL 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. 3. はじめに... ※ 辞書作りがメインの作業なので 「機械学習」の話は ほとんどありません 😖💦
  4. 4. はじめに... 「対話形式の住まい探し(検索)」 ができたらいいな 🤗
  5. 5. 現在の検索形式 対話AIによる検索 (のイメージ) 東京です. できれば, 自然豊かな ところがいいです. 賃貸と購入どちらで お探しでしょうか? 賃貸です エリアはお決まりで しょうか?
  6. 6. 対話AIによる検索 (のイメージ) 東京です. できれば, 自然豊かな ところがいいです. 賃貸と購入どちらで お探しでしょうか? 賃貸です エリアはお決まりで しょうか? 現在形式では表現しにくい項目 e.g.) 自然豊かなところ, 海の近く, 〇〇駅に10分か××駅に15分くらい, ... 現在の検索形式で入力可能な項目 e.g.) エリア, 間取り, 家賃, ...
  7. 7. 対話AIによる検索 (のイメージ) 東京です. できれば, 自然豊かな ところがいいです. 賃貸と購入どちらで お探しでしょうか? 賃貸です エリアはお決まりで しょうか? 現在形式では表現しにくい項目 e.g.) 自然豊かなところ, 海の近く, 〇〇駅に10分か××駅に15分くらい, ... 現在の検索形式で入力可能な項目 e.g.) エリア, 間取り, 家賃, ... 自然言語入力で、 検索条件の幅が広がる! 解析の難易度も上がる😭
  8. 8. “ことば”で検索するために 何が必要なのか...?
  9. 9. “ことば”で検索するために... 人間の発話(自然言語) → 機械で解釈可能な形式 の変換が必要!
  10. 10. 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000
  11. 11. 難しさはどんなところに?
  12. 12. 課題1: 同じ意味でも表現は様々! ・「バス・トイレ別」, 「お風呂とトイレが別れている」, ... → こだわり条件: バス・トイレ別 ・「車1台持っているんですよね」「駐車場ってあります?」, … → こだわり条件: 駐車場 ・「東京へのアクセスがいい」 → 東京都? 東京駅? ・「中央区で探しているんですけど」 → どこの中央区? ・「八万の物件ってありますか?」 → 八万(地名)? 家賃が八万ってこと? 課題2: 言葉には「曖昧さ」がある! 難しさはどんなところに?
  13. 13. 課題3: 単語やフレーズ同士の関係性を捉える必要がある! ・「宅配ボックスは要らないけど、オートロックと女性限定は欲しい」 キーワード抽出: 難しさはどんなところに? こだわり条件 宅配ボックス オートロック 女性限定 嗜好 要らない 欲しい ?
  14. 14. 難しさはどんなところに? 課題2: 言葉には「曖昧さ」がある! 課題1: 同じ意味でも表現は様々! 課題3: 単語やフレーズ同士の関係性を捉える必要がある!
  15. 15. 解析方法
  16. 16. 解析方法 ルールベース
  17. 17. 解析方法 ルールベース お手製辞書を作って, 辞書引きする
  18. 18. 解析方法 ルールベース お手製辞書を作って, 辞書引きする だけの素朴な方法 🙇♂️
  19. 19. 解析方法 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」
  20. 20. 具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?
  21. 21. 具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 ・お手製辞書を検索するだけ! 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper キーワード 意味カテゴリ バス・トイレ別 kodawari キーワード 類義語・フレーズ バス・トイレ別 バスとトイレが別れている キーワード辞書 言い換え辞書 課題1: 同じ意味でも表現は様々! ・キーワード辞書に加えて、言い換え辞書を利用 → 表現の揺れを吸収 ・「バス・トイレ別」と「バスとトイレが別れている」 は同じ意味であることを言い換え辞書で定義 辞書は合計で, 12,000エントリ (手作業, 地名+駅名は自動)
  22. 22. 具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出, 意味カテゴリを付与 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?
  23. 23. 具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper 曖昧さを許容できる仕組み. 「駅名(station)」か「地名(area)」のどちらか! 課題2: 言葉の「曖昧さ」がある! 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?
  24. 24. 具体的な解析手順 Step1: キーワード・キーフレーズ抽出 ・検索条件に当てはまるようなキーワード・キーフレーズを抽出 ・お手製辞書を検索するだけ! キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper ちなみに... 東京駅 station 東京都 area 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 曖昧さを許容できる仕組み. 「駅名(station)」か「地名(area)」のどちらか! 課題2: 言葉の「曖昧さ」がある!
  25. 25. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」
  26. 26. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」
  27. 27. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time kodawari rent upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 Step1
  28. 28. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time kodawari rent upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境 こだわり条件 家賃の上限値 Step1 Step2: 規則の適用
  29. 29. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?kodawari 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね?こだわり条件
  30. 30. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境
  31. 31. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area distance 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境
  32. 32. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? rent upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 家賃の上限値
  33. 33. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? rent_upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 家賃の上限値
  34. 34. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time kodawari rent upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境 こだわり条件 家賃の上限値
  35. 35. 具体的な解析手順 Step2: キーワードを”一定の規則”に基づいて結合・グループ化 例えば... ・(transportation, time) → distance ・(rent, upper) → rent_upper ・kodawari → こだわり条件 ・(station || area || building, distance) → 「物件の周辺環境」 ・rent_upper → 「家賃の上限値」 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time kodawari rent upper 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 物件の周辺環境 こだわり条件 家賃の上限値 課題3: 単語・フレーズ同士の関係性を捉える! 独自に定義した関係性の規則によって、キーワードを組み合わせる !
  36. 36. 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? station || area transportation time kodawari rent upper Step1: キーワード抽出 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000 Step2: キーワード同士 規則に基づいて 結合
  37. 37. 評価
  38. 38. 評価 ▶︎ 対象データ ・住まいの窓口対話ログ: 100発話 (手作業で検索条件をアノテーション) 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000
  39. 39. 評価 ▶︎ 評価尺度: Precision / Recall / F1-Score ・Entity-Level: 解析器が抽出したキーワードが正解データとどのくらい一致しているか? → Step1までの評価 ・Instruction-Level: 解析器が出力した検索条件が正解データとどのくらい一致しているか? → Step1 + Step2の評価 「東京まで電車で30分以内で バスとトイレが別れている 家賃7万円以下の物件」 ってありますかね? キーワード・キーフレーズ 意味カテゴリ 東京 station || area 電車 transportation 30分以内 time バスとトイレが別れている kodawari 家賃7万円 rent 以下 upper 周辺環境 所要時間 交通手段 東京 30分以内 電車 こだわり条件 バス・トイレ別 連続値条件 最小値 最大値 家賃 - 70,000
  40. 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. 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. 42. まとめ ・対話形式の検索を行うための自然言語解析技術 ・辞書引きするだけのシンプルな手法 ・キーワード抽出:80%, 検索条件: 50% の性能

×