SlideShare uma empresa Scribd logo
1 de 25
NLP4L~情報検索における性能改善
のためのコーパスの活用とランキン
グ学習
株式会社ロンウイット 関口宏司
@kojisays
自己紹介
株式会社ロンウイット 創業者兼社長
Apache Lucene/Solr コミッター
書籍執筆&監修
Apache Lucene/Solr, Ant, etc.
Twitter: @kojisays
ロンウイットについて
2006年設立
情報検索の専門企業
Lucene/Solr/ES
コンサルティング、製品開発、サポート、教育
「より良い検索システムを提供する」
→ 欲しいものがすぐ見つかる
情報検索システム
目的
大量の情報の中からユーザの要求を満たす情報を見つけ出す。
使用例
ECサイト、企業内検索、書誌検索
(システム運用側から見た)特徴
事業の発展に伴い文書量が増大。マーケットの変化。
→ 継続的なメンテナンスが必要
良い検索システムとは
網羅的かつ必要な情報(文書)のみ提供
必要かつ十分
ユーザが欲しい文書は漏れなく返し、かつ、欲
しくない文書は返さない
実は結構実現が難しい
トレードオフの関係
ユーザが欲しい文書集合
検索システムが返す文書集合
A B C
検索のトレードオフ問題
網羅的に検索できるようにチューニングすると
余分な文書を返さないようにチューニングすると
ユーザが欲しい文書集合検索システムが返す文書集合
ユーザが欲しい文書集合検索システムが返す文書集合
A B C
A B C
解決手順
網羅性を高めるよう
にチューニング
漸次的に不要な
文書を取り除く
ランキング
チューニング
検索の網羅性を高める(例
)
文字の正規化
半角全角/"カード"<->"カード"
新旧漢字/"慶應"<->"慶応"
同義語
類義語
同義語/"ピンポン"<->"卓球"
類義語/"言う"<->"話す"
頭文字略語
省略語
頭文字略語/"WHO"<->"World Health Org"
省略語/"木村拓哉"<->"キムタク"
外来語
"interface"<->"インターフェイス"<->"インタフェ
ース"
漢字送り仮名
"引っ越し"<->"引越し"<->"引越"
"受け付け"<->"受付け"<->"受付"
漸次的な不要文書の除去
q=ハワイ
予算で絞り込む
10〜15万円
出発地で絞り込む
羽田空港
構造化文書
ツアー名 価格 空港
ハワイオアフ島
ダイヤモンドヘッド
28万円 成田空港
ハワイワイキキ
ビーチ3泊5日
13万円 羽田空港
ランキングチューニング前
1
2
3
50
100
500
ランキングチューニング後
1
2
3
解決のためのSolrツール
網羅性を高めるよう
にチューニング
漸次的に不要な
文書を取り除く
ランキング
チューニング
SynonymFilter
ファセットを使った
絞り込み検索
フィールドの重みを
適切に調整
フィールドの重みを
適切に調整
ファセットを使った
絞り込み検索
SynonymFilter
新たな問題
手動によるシノニム辞書
の設定が大変
非構造化文書には使えない
人手による重み調整が大変。
全体最適チューニングは重み
調整だけでは不可能
NLP4Lのご紹介
検索をより良くするためのOSS
NLP for Lucene
GUIベースで使いやすい
2大機能(モジュール)
NLP4L-DICT
企業が保有する文書データベース(コーパス)から各種辞書を自
動生成。自動生成した辞書を編集するGUIが付属、人手で編集し、
検証プログラムで内容を検証後、ボタンクリックでSolrにデプロイ
NLP4L-LTR より良いランキングを提供するための、ランキング学習(
Learning-to-Rank)モジュール。
https://github.com/NLP4L
フィールドの重みを
適切に調整
人手による重み調整が大変。
全体最適チューニングは重み
調整だけでは不可能
ファセットを使った
絞り込み検索
SynonymFilter
NLP4Lによるソリューション例
手動によるシノニム辞書
の設定が大変
非構造化文書には使えない
Acronym Extractor
Loanword Extractor(TBD)
Named Entity Extractor
Keyphrase Extractor
ランキング学習
自律的
LTRのフレームワーク
17
クエリ1
文書a1
文書b1
:
ランキング1
クエリ2
文書a2
文書b2
:
ランキング2
クエリn
文書an
文書bn
:
ランキングn
・・・
モデル
クエリx
文書ax
文書bx
:
ランキング?
クエリx
文書ax
文書bx
:
ランキング
推定値
学習データ
モデルの
学習
ランキング
システム
NLP4LによるLTRサポー
ト
18
Solr
クエリ1
文書a1
文書b1
:
ランキング1
クエリ2
文書a2
文書b2
:
ランキング2
クエリn
文書an
文書bn
:
ランキングn
・・・
NLP4L
ランキング学習
モデル
クエリx
文書ax
文書bx
:
ランキング?
クエリx
文書ax
文書bx
:
ランキング
推定値
NLP4Lによる教師データ作成
NLP4L
リランキング
NLP4L
特徴抽出
NLP4Lによる
特徴抽出
LTRの教師データ作成
NLP4Lは以下の2つをサポート
アノテーションGUI
クリックモデル
独立クリック
モデル(ICM)
1検索セッションに付き1クリックという強い前提を置い
ているカスケードモデルに対し、位置バイアスを考慮せ
ずに複数クリックを扱えるようにしたモデル。
非独立クリック
モデル(DCM)
位置バイアスを考慮した上で複数クリックを扱えるよう
にしたモデル。
クリックモデル向け
インプレッションログ
{
data: [
{ query="iPhone",
impressions=[ "docA", "docB", "docC", "docD", "docE
clicks=[ "docA", "docC" ]
},
{ query="iPhone",
impressions=[ "docA", "docB", "docC", "docD", "docE
clicks=[ ]
}
]
}
NLP4Lデモ
NLP4L-DICT
NLP4L-LTR
Solr+NLP4Lによる検索システ
ム
Solr
Web
App
インプレッション
ログ
NLP4L-LTR
NLP4L-DICT
LTR
モデル
辞書
テキストDB
デプロイ
デプロイ
メンテナンス
クロール
参照
特徴抽出
参照
自律的
今後の計画
評価プログラム
GUI改善(メモリ消費)
ランキング学習アルゴリズムの追加
ランキング学習向け特徴の追加 etc.
まとめ
情報検索の課題(問題点の整理)
問題解決の方法
問題解決の自動化のために
ビッグデータの活用
コーパス(辞書生成)
インプレッションログ(ランキング学習)
ご清聴ありがとうございました。
Thank you!

Mais conteúdo relacionado

Mais procurados

MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用
CROOZ, inc.
 
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
Hibino Hisashi
 

Mais procurados (20)

[入門編] はじめてのIoT!Azureのサービスを使ってIoTのデータを取得しよう
[入門編] はじめてのIoT!Azureのサービスを使ってIoTのデータを取得しよう[入門編] はじめてのIoT!Azureのサービスを使ってIoTのデータを取得しよう
[入門編] はじめてのIoT!Azureのサービスを使ってIoTのデータを取得しよう
 
BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編
 
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
NGSI によるデータ・モデリング - FIWARE WednesdayWebinarsNGSI によるデータ・モデリング - FIWARE WednesdayWebinars
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
 
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御
 
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
 
CARTOって何?CARTOでできること
CARTOって何?CARTOでできることCARTOって何?CARTOでできること
CARTOって何?CARTOでできること
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
 
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
Part 4: Power Platform 概説 (製造リファレンス・アーキテクチャ勉強会)
Part 4: Power Platform 概説 (製造リファレンス・アーキテクチャ勉強会)Part 4: Power Platform 概説 (製造リファレンス・アーキテクチャ勉強会)
Part 4: Power Platform 概説 (製造リファレンス・アーキテクチャ勉強会)
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用
 
アプリケーション開発者のためのAzure Databricks入門
アプリケーション開発者のためのAzure Databricks入門アプリケーション開発者のためのAzure Databricks入門
アプリケーション開発者のためのAzure Databricks入門
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
 
IT企業のジャーマネ視点から Power Apps 導入など
IT企業のジャーマネ視点から Power Apps 導入などIT企業のジャーマネ視点から Power Apps 導入など
IT企業のジャーマネ視点から Power Apps 導入など
 
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
 
AWS Summit Seoul 2023 | 실시간 CDC 데이터 처리! Modern Transactional Data Lake 구축하기
AWS Summit Seoul 2023 | 실시간 CDC 데이터 처리! Modern Transactional Data Lake 구축하기AWS Summit Seoul 2023 | 실시간 CDC 데이터 처리! Modern Transactional Data Lake 구축하기
AWS Summit Seoul 2023 | 실시간 CDC 데이터 처리! Modern Transactional Data Lake 구축하기
 

Destaque

情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
 
「ふわっと関連検索」のこれまでとこれから
「ふわっと関連検索」のこれまでとこれから「ふわっと関連検索」のこれまでとこれから
「ふわっと関連検索」のこれまでとこれから
Masao Takaku
 
Brain Profile Ppt 01 10
Brain Profile Ppt 01 10Brain Profile Ppt 01 10
Brain Profile Ppt 01 10
IIR
 
情報検索の基礎(11章)
情報検索の基礎(11章)情報検索の基礎(11章)
情報検索の基礎(11章)
Katsuki Tanaka
 

Destaque (20)

Nlp4 l intro-20150513
Nlp4 l intro-20150513Nlp4 l intro-20150513
Nlp4 l intro-20150513
 
Lucene/Solr Revolution2015参加レポート
Lucene/Solr Revolution2015参加レポートLucene/Solr Revolution2015参加レポート
Lucene/Solr Revolution2015参加レポート
 
ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)
ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)
ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)
 
情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
 
「ふわっと関連検索」のこれまでとこれから
「ふわっと関連検索」のこれまでとこれから「ふわっと関連検索」のこれまでとこれから
「ふわっと関連検索」のこれまでとこれから
 
Brain Profile Ppt 01 10
Brain Profile Ppt 01 10Brain Profile Ppt 01 10
Brain Profile Ppt 01 10
 
高久研究室の紹介(2016年度)
高久研究室の紹介(2016年度)高久研究室の紹介(2016年度)
高久研究室の紹介(2016年度)
 
研究室紹介:高久研究室
研究室紹介:高久研究室研究室紹介:高久研究室
研究室紹介:高久研究室
 
つながる目録、つながるサービス@図書館総合展(2015.11.12)
つながる目録、つながるサービス@図書館総合展(2015.11.12)つながる目録、つながるサービス@図書館総合展(2015.11.12)
つながる目録、つながるサービス@図書館総合展(2015.11.12)
 
solr勉強会資料
solr勉強会資料solr勉強会資料
solr勉強会資料
 
Information retrieval model
Information retrieval modelInformation retrieval model
Information retrieval model
 
生命科学・農学研究のための情報検索の基礎
生命科学・農学研究のための情報検索の基礎生命科学・農学研究のための情報検索の基礎
生命科学・農学研究のための情報検索の基礎
 
情報検索の基礎(11章)
情報検索の基礎(11章)情報検索の基礎(11章)
情報検索の基礎(11章)
 
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
Lucene/Solr Revolution 2016 参加レポート
Lucene/Solr Revolution 2016 参加レポートLucene/Solr Revolution 2016 参加レポート
Lucene/Solr Revolution 2016 参加レポート
 
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapパケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
 
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
 
情報検索のためのユーザモデル
情報検索のためのユーザモデル情報検索のためのユーザモデル
情報検索のためのユーザモデル
 
elasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたelasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみた
 

Semelhante a NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習

ライフエンジンを支える検索エンジンの作り方
ライフエンジンを支える検索エンジンの作り方ライフエンジンを支える検索エンジンの作り方
ライフエンジンを支える検索エンジンの作り方
Chiaki Hatanaka
 
100622 学術情報セミナー
100622 学術情報セミナー100622 学術情報セミナー
100622 学術情報セミナー
Shuhei Otani
 
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
貴史 小川
 
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
貴史 小川
 
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
etic_sal
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
Yoji Kiyota
 

Semelhante a NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習 (20)

Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1
 
ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
 
ライフエンジンを支える検索エンジンの作り方
ライフエンジンを支える検索エンジンの作り方ライフエンジンを支える検索エンジンの作り方
ライフエンジンを支える検索エンジンの作り方
 
オープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズオープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズ
 
100622 学術情報セミナー
100622 学術情報セミナー100622 学術情報セミナー
100622 学術情報セミナー
 
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
 
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
 
一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編
 
Code4Lib 2013参加報告
Code4Lib 2013参加報告Code4Lib 2013参加報告
Code4Lib 2013参加報告
 
全文検索入門
全文検索入門全文検索入門
全文検索入門
 
Social Literacy
Social LiteracySocial Literacy
Social Literacy
 
顧客価値って奥深いですね
顧客価値って奥深いですね顧客価値って奥深いですね
顧客価値って奥深いですね
 
日経テレコンスクール 営業コーステキスト(サンプル)
日経テレコンスクール 営業コーステキスト(サンプル)日経テレコンスクール 営業コーステキスト(サンプル)
日経テレコンスクール 営業コーステキスト(サンプル)
 
機械学習ビジネス研究会(未踏研究会)
機械学習ビジネス研究会(未踏研究会)機械学習ビジネス研究会(未踏研究会)
機械学習ビジネス研究会(未踏研究会)
 
OSSで「脱下請け」のススメ ~OSC Tokyo 2014/Spring 講演資料~
OSSで「脱下請け」のススメ ~OSC Tokyo 2014/Spring 講演資料~OSSで「脱下請け」のススメ ~OSC Tokyo 2014/Spring 講演資料~
OSSで「脱下請け」のススメ ~OSC Tokyo 2014/Spring 講演資料~
 
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
 
アプリケーションを管理するノーツデータベースについて
アプリケーションを管理するノーツデータベースについてアプリケーションを管理するノーツデータベースについて
アプリケーションを管理するノーツデータベースについて
 
KCI PROFILE 2021-10-07
KCI PROFILE 2021-10-07KCI PROFILE 2021-10-07
KCI PROFILE 2021-10-07
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
 

Mais de Koji Sekiguchi

LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
Koji Sekiguchi
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
Koji Sekiguchi
 
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョンLuceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Koji Sekiguchi
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extraction
Koji Sekiguchi
 
Visualize terms network in Lucene index
Visualize terms network in Lucene indexVisualize terms network in Lucene index
Visualize terms network in Lucene index
Koji Sekiguchi
 
WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成
Koji Sekiguchi
 
OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
Koji Sekiguchi
 
自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門
Koji Sekiguchi
 
Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0
Koji Sekiguchi
 
Pre rondhuit-naming-story
Pre rondhuit-naming-storyPre rondhuit-naming-story
Pre rondhuit-naming-story
Koji Sekiguchi
 

Mais de Koji Sekiguchi (20)

20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
 
Lucene 6819-good-bye-index-time-boost
Lucene 6819-good-bye-index-time-boostLucene 6819-good-bye-index-time-boost
Lucene 6819-good-bye-index-time-boost
 
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
 
An Introduction to NLP4L
An Introduction to NLP4LAn Introduction to NLP4L
An Introduction to NLP4L
 
コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用
 
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
 
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョンLuceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
 
Html noise reduction
Html noise reductionHtml noise reduction
Html noise reduction
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extraction
 
Visualize terms network in Lucene index
Visualize terms network in Lucene indexVisualize terms network in Lucene index
Visualize terms network in Lucene index
 
WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成
 
HMM viterbi
HMM viterbiHMM viterbi
HMM viterbi
 
NLP x Lucene/Solr
NLP x Lucene/SolrNLP x Lucene/Solr
NLP x Lucene/Solr
 
OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
 
自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門
 
Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0
 
Pre rondhuit-naming-story
Pre rondhuit-naming-storyPre rondhuit-naming-story
Pre rondhuit-naming-story
 
Lu solr32 34-20110912
Lu solr32 34-20110912Lu solr32 34-20110912
Lu solr32 34-20110912
 

NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習

Notas do Editor

  1. 情報検索システムを改善するために、ビッグデータをどのように活用できるか、というお話をしたい。
  2. Big Data 関連では、大学院で自然言語処理を学び、ロンウイットで機械学習のトレーニングコースの講師を勤めている。
  3. 設立当初より情報検索を専門に行ってきた。具体的にはOSSの検索エンジンライブラリであるApache Luceneベースの検索エンジンSolrやElasticsearchなどの導入コンサルティング、製品開発、サポートサービス、トレーニングコースを提供している。トレーニングコース受講者はのべ800名に達する。 Solrをかついでいる日本企業は無数にあるが、情報検索専業であるのでどこよりも検索システムを真剣に考えている自負がある。「より良い検索システムを提供する」をモットーに活動している。 ところで、「良い検索システム」とはなんだろうか。それは「欲しいものがすぐ見つかる」システムであるといえる。 しかしその前に、情報検索システムとはなにか、考えてみよう。
  4. 情報検索システムの目的は、大量の情報の中からユーザの要求を満たす情報を見つけ出すことである。検索対象となる情報は自然言語で書かれた文書とする。ユーザからの情報要求はキーワードで表現されたクエリ。 ECサイト:商品検索。 企業内検索:ファイルサーバやDBなどに保存されている文書を横断的に検索。 書誌検索:図書館などで、タイトル、著者名だけではなく、文献の概要や本文も含めた検索。 情報検索システムの特徴を、システムを運用する側から考えてみたい。それは導入後に継続的なメンテナンスが必要、ということである。なぜかというと、事業の発展に伴い文書量が増えたり、ユーザニーズが変化したり多様化したりすることでマーケットが変化するため。 もちろんこれは情報検索システムに限った話ではなく、他の業務システムにもあてはまることではある。しかし情報検索システムではこのことが多分に顕著に現れると情報検索業界に10年間携わってきた経験から感じている。利用時にユーザのemotionalな部分が入り込むから・・・かもしれない。 継続的なメンテナンスが必要なのはちょっと面倒そう?なくても業務は回せるが、あると大変便利なシステム。Googleのように検索できる。業務効率が大幅にアップ(企業内検索)。ユーザ利便性の向上(ECサイト)。
  5. 我々は「よい検索システム」とは「ユーザが欲しいと思った情報をすばやく見つけられるシステム」と考えている。なお、探す対象が「情報」だと漠然としているのでこれ以降は「文書」と呼ぶことにする。「文書」は、Webページ検索であれば「Webページ」、ECサイトであれば「商品」に相当する。 「ユーザが欲しいと思った文書をすばやく見つけられる」というところをもう少しかみ砕いて言うと「網羅的かつ必要な文書のみ提供する」ということになる。「網羅的」というのは「ユーザが欲しいと思った文書はもれなく返す」ということであり、「素早く見つける」ためには「ユーザが欲しい文書のみ返す」、つまり「ユーザが欲しくない文書は返さない」ということになる。 この「必要かつ十分」な文書を返す検索システムを提供する、というのは実は結構実現が難しい。なぜなら「網羅性」の達成と必要なものだけを返すという「正確性」は、トレードオフの関係にあるため。 これは上のような「ベン図」を描くと理解しやすい。上の図で、右の円が「ユーザが欲しいと考えている文書集合」であり、左の円は「検索システムが返す文書集合」を表す。このように描くと領域A、B、Cができ、この領域の大きさを使って検索エンジンの性能指標である「再現率(recall)」と「精度(precision)」を計算できるが、今日は平易な言葉で説明したいので、この話はしない。詳しく知りたい方は、YouTubeで私の過去の講演を検索していただきたい。 ここで左の円の大きさは「網羅性」を表す。このとき、左の円がカバーしきれない領域Cができてしまうが、これを検索漏れと呼ぶ。領域Cは「ユーザが欲しいと思っているが検索システムが返せなかった文書集合」ということである。ユーザとしてはこの領域は当然のことながら小さくなくては困る。一方で、領域Aを検索誤りと呼ぶ。領域Aは「ユーザが欲しくないのに検索システムが返してしまう文書集合」ということである。この領域Aが大きいと、ユーザはたくさんの検索ヒットの中から自分が探したい文書を見つけるのが大変になるので、やはりユーザとしてはこの領域も小さくして欲しい。 したがって、領域AもCも小さくしたいのであるが、そのためには左の円がこの大きさを保ったまま、右に移動してくれるとよい。しかし、検索システムをこのようにチューニングすることは不可能である。可能なチューニングは、左の円を大きくしたり、小さくしたりすることである。
  6. たとえば、「網羅性」を高めるために、左の円を大きくなるようにチューニングすると、ユーザが欲しい文書はほぼ返せるようになる。しかし、領域Aが増えてしまうので、探しにくくなってしまう。 逆に「正確性」を高めるために、左の円を小さくなるようにチューニングすると、ユーザが欲しくない文書はほぼ返さなくなり探しやすさは高まるが、領域Cが増えてしまうので、ユーザが欲しい文書を十分返せなくなる。 これが検索システムでよく知られている「網羅性」と「正確性」のトレードオフ問題である。(正確には、再現率(recall)と精度(precision)と呼ばれるが、ここではこの言葉を用いない) ユーザとしては両方とも欲しいが、両方同時に実現するのは不可能である。しかし我々は「より良い検索システムを提供する」をモットーに活動しているので、この問題を解決する必要がある。
  7. 我々はこのトレードオフ問題を解決するには、このような解決手順を踏むことにしている。 まずは、何はともあれ、「網羅性」を高める方向で検索システムをチューニングする。ユーザが欲しい文書を返せないと話にならないからである。 すると、先ほどのロジックから、「正確性」が低下する、つまり、多くの検索ヒットの中から目当ての文書を探すのが難しい状態となる。 これを解決するのに、2つの方法がある。1つは、漸次的に不要な文書を取り除く方法、もう一つは、ランキングが適切になるようにチューニングすることである。ここで「ランキング」とは、検索結果表示ページにおける、文書の表示順のことを指す。 このプロセスを一つずつ説明しよう。
  8. 検索の網羅性を高める具体的な方法の例を示す。 この表のうち、いくつかは日本語独特なものだが、英語など、日本語以外の言語でも類似の網羅性を高める方法が考えられる。 (以下、それぞれを簡単に説明) 以上のように、「網羅性」を高めると、「正確性」が低下するので、次に低下してしまった「正確性」を高めるプロセスを説明する。一つ目のプロセスは、漸次的に不要文書を取り除く、である。
  9. 「漸次的な不要文書の除去」の方法について、具体的なWebサイトでの検索を想定して説明しよう。パッケージツアーの販売サイトを考える。 ハワイに行きたいと考えているユーザがパッケージツアーの販売サイトで「ハワイ」と入力する。そのとき、ユーザはこの円で示されるような文書集合が返ってくることを期待している。 しかし、網羅性が高められた検索システムはもっとたくさんのパッケージツアー(文書)を返してくる。そこで画面の右側などを見ると、「予算で絞り込む」というリンクがあるので、自分の予算に照らし合わせてリンクをクリックすると絞り込み検索が実施され、返ってくるツアーの数を絞り込むことができる。さらに別のリンクである「出発地で絞り込む」という絞り込みリンクもあるので、自分の条件に合った出発空港をクリックすると、さらにシステムから返ってくるツアーの数が小さくなる。 このように漸次的に不要文書を取り除くことで、高い網羅性を担保しつつ、正確性も高めることができ、ユーザは望む文書をすばやく探し当てることができるようになる。
  10. ただし、「漸次的な不要文書の除去」の方策をとるには、検索対象文書がこのように「構造」を持っている必要がある。 このような構造を持っていない、「非構造化文書」に対しては、「漸次的な不要文書の除去」の方法を適用することはできない。
  11. 「網羅性」を高めることで低下してしまった「正確性」を高める二つ目のプロセスは、「ランキングチューニング」である。ここで「ランキング」とは、検索結果表示ページにおける、文書の表示順のことを指す。 こちらの図は「ランキングチューニング」を行う前である。数字は各文書の表示順(ランキング)を示す。ユーザが最初に目にする文書は、ユーザが望まない文書となってしまっている。ユーザが欲しい文書は、50位、100位、500位など、下位に押しやられている。
  12. 一方、ランキングが適切にチューニングされた場合、このようになる。ユーザが最初に目にする文書が、まさにユーザが望んでいる文書となっている。 この状態は、「網羅性」が高く、「正確性」は相変わらず低いままだが、ユーザ視点で見れば非常に優秀な検索エンジンと言える。つまり、ランキングが適切にチューニングできれば、低い正確性をカバーできることがわかる。
  13. 以上、検索システムにまつわる網羅性と正確性のトレードオフの問題を解決する手順を示した。次に、それぞれの項目に対応するSolrのツールを具体的に見ていこう。 「網羅性を高めるようにチューニング」するには、SolrのSynonymFilterを適用する。 「漸次的に不要な文書を取り除く」には、Solrのファセットを使った絞り込み検索を行う。 「ランキングチューニング」するには、Solrの検索において、検索時やインデクシング時にフィールドの重みを適切に調整したり、関数クエリを用いたりすることに相当する。 このように、それぞれの問題解決項目には、Solrにてそれぞれツールが用意されている。しかしながら、いざ実際に使おうとすると、それはそれで問題が出てくる。
  14. Solrのツールを使おうとしたときに生じる問題。 「SynonymFilter」を使うには、シノニムが定義された辞書ファイル(テキストファイル)が必要である。これを人手で設定するのは大変だ。 「ファセットを使った絞り込み検索」を行うには、検索対象文書が構造化されていないといけない。しかし、世の中の全ての文書が構造化されているわけではない。非構造化文書には適用できない。 「フィールドの重みを適切に調整」するには、Solrに詳しい技術者が、デバッグ情報を見ながら重みを微調整したりしないといけないので大変。またランキングのチューニングを重み調整だけでやるのは実質的に不可能。「あちらを立てるとこちらが立たず」という状態に陥り、全体的に最適なランキングにすることは経験上できない。仮にその時点で最適と考えられるチューニングをやったとしても、検索システムが扱う文書は増え続けるのが通常であり、何かしら自律的にチューニングされるしくみが必要である。
  15. そこで、これらの人手作業を軽減し、より良い検索システムを手に入れるためのOSSのツールであるNLP4Lを紹介する。 NLP4Lは弊社を含むベンダー数社でGithub上で共同開発しているオープンソースソフトウェアである。 機械学習や自然言語処理のテクニックを用い、Luceneベースの検索システムの使い勝手をより良くするためのものである。 充実した英語と日本語のマニュアルがある。 NLP4L-DICTとNLP4L-LTRの2大モジュールが統合されたGUIベースのプラットフォームである。 NLP4L-DICTでは特に、コーパス、すなわち企業が保有する文書データベースを入力として受け取り、シノニム辞書や専門用語辞書などの各種辞書を自動生成する。NLP4Lでは「機械学習や自然言語処理は完璧ではない」という前提に立っているので、自動生成された辞書はSolrなどの検索システムにデプロイされる前に、Validateプログラムや人手で確認・編集され、最後にデプロイボタンクリックで、Solrにデプロイされるしくみになっている。人手による編集の際、過去に行った同じ編集をもう一度行わなくてもすむように、編集内容はデータベースに記憶され、次回の辞書生成時に編集は自動適用される(リプレイ機能と呼ばれる)。 Wikipediaのような、一般的で誰でも入手可能なコーパスを処理対象にすることもできるが、それぞれの企業が保有するコーパスを用いることで、より業務ドメインに特化した辞書構築が可能となる。
  16. 前述の各問題点について、NLP4Lがどのようなツールを提供して問題解決をしているか、見てみよう。 (各項目を簡単に紹介) 最初に情報検索システムの特徴として導入後に継続的なメンテナンスが必要である旨述べた。したがって、「自律的」であることがここでのポイント。 AIがもてはやされる昨今、AIの一技術である機械学習は「完璧」ではないので100%自律的であることを保証するものではないが、かなりの省力化に貢献できる。
  17. ここでLTRの一般的なフレームワークを示す。 (各コンポーネントについて簡単に紹介) モデルの学習アルゴリズムには、Pointwise、Pairwise、Listwiseのアプローチがあることが知られているが、NLP4L-LTRはこれらのアプローチに依存しないフレームワークとなっている。
  18. NLP4LはLTRのフレームワークのうち、必要な全てのコンポーネントをカバーしている。 (NLP4LによるLTRコンポーネントのサポートについて簡単に説明) LTRは教師あり学習なので、教師データがなければいけない。NLP4LはLTR用の教師データを作成するのに、2つの方法をサポートしている。(次ページ)
  19. LTR用の教師データを作成する方法の1つめは、アノテーションGUIである。「どのクエリはどの文書がどの程度関連度があるか」について、ユーザが人手で星をつける作業を行う。そのためのGUIが提供される。このGUIは「どのクエリについてどの文書がどの程度関連度があるか」という星印をつけていくのでPointwiseのデータを作成していることになるが、NLP4L-LTRにて擬似的にPairwiseデータに変換してRankingSVMなどのPairwiseアプローチを取るランキング学習アルゴリズムを実行できる。 2つめは、アクセスログ(NLP4Lでは特別にインプレッションログと呼んでいる)から関連度(上述と同じ「どのクエリはどの文書がどの程度関連度があるか」ということ)情報を自動生成する「クリックモデル」である。 NLP4Lでは独立クリックモデル(Independent Click Model)と非独立クリックモデル(Dependent Click Model)をサポートしている。
  20. こちらは、NLP4L-LTRがサポートする、インプレッションログのサンプルである。 データは2件ある。1つめは「iphone」というクエリが発行されたクエリセッションで、インプレッション(表示された文書)がdocAからdocEの5件あり、そのうちのdocAとdocCがクリックされたことを示す。 2つめは同じく「iphone」というクエリが発行されたクエリセッションで、インプレッションがdocAからdocEの5件あり、その中でクリックされた文書がなかったことを示す。
  21. (時間があれば、NLP4L-DICTとNLP4L-LTRのデモを実施。)
  22. SolrにNLP4Lを組み合わせたシステムはこのようになる。 (おおまかな流れ、参照関係について説明) 「自律的」というのがここでもキーワードになる。 100%メンテナンスフリーを保証するものではないが、かなりの省力化を達成できる。
  23. NLP4Lプロジェクトの今後の計画を示す。 評価プログラム NLP4L-LTRにおいて、MAP(Mean Average Precision)、DCG(Discounted Cumulative Gain)、NDCG(Normalized DCG)などによる評価プログラムを追加したい。
  24. 問題解決の方法 まず網羅性を高めて、低下した正確性を改善するのに2つの方法があることを示した。また、これらの問題解決のために、Solrには対応するツールがあることを示した。ただし、Solrの各ツールはメンテするのに手間がかかることもわかった。 そこで問題解決を自動化するために、(Solrに加えて)NLP4Lを導入し、企業に眠っている資産であるコーパスとクリックログ(NLP4Lではインプレッションログと呼び区別している)を活用しよう、という提案を行った。