Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
Report
Koji Sekiguchi
Follow
RONDHUIT Co.,Ltd. - Founder & CEO at RONDHUIT Co.,Ltd.
Feb. 8, 2017
•
0 likes
2 likes
×
Be the first to like this
Show More
•
3,279 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Nlp4 l intro-20150513
Koji Sekiguchi
Lucene/Solr Revolution2015参加レポート
Yahoo!デベロッパーネットワーク
ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)
Ikki Ohmukai
「ふわっと関連検索」のこれまでとこれから
Masao Takaku
Brain Profile Ppt 01 10
IIR
高久研究室の紹介(2016年度)
Masao Takaku
研究室紹介:高久研究室
Masao Takaku
つながる目録、つながるサービス@図書館総合展(2015.11.12)
Ikki Ohmukai
1
of
25
Top clipped slide
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
Feb. 8, 2017
•
0 likes
2 likes
×
Be the first to like this
Show More
•
3,279 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Internet
普段検索エンジンを使っていて何気なく感じている問題点を明確にし、それをSolrの各種ツールさらにはNLP4Lを適用することで解決する手順を平易に解説。
Koji Sekiguchi
Follow
RONDHUIT Co.,Ltd. - Founder & CEO at RONDHUIT Co.,Ltd.
Advertisement
Advertisement
Advertisement
Recommended
Solr から使う OpenNLP の日本語固有表現抽出
Koji Sekiguchi
3.7K views
•
14 slides
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
3.9K views
•
39 slides
Learning-to-Rank meetup Vol. 1
Koji Sekiguchi
2.7K views
•
24 slides
20180725 Learning To Rank meetup
Yasufumi Mizoguchi
1.6K views
•
18 slides
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
9.8K views
•
30 slides
Lucene/Solr Revolution 2016 参加レポート
Shinpei Nakata
5.3K views
•
52 slides
More Related Content
Viewers also liked
(20)
Nlp4 l intro-20150513
Koji Sekiguchi
•
7.6K views
Lucene/Solr Revolution2015参加レポート
Yahoo!デベロッパーネットワーク
•
11.3K views
ビジネスで使えるオープンデータの技術@ビジネス活用のためのオープンデータセミナー(2016.01.22)
Ikki Ohmukai
•
1.9K views
「ふわっと関連検索」のこれまでとこれから
Masao Takaku
•
1.5K views
Brain Profile Ppt 01 10
IIR
•
919 views
高久研究室の紹介(2016年度)
Masao Takaku
•
416 views
研究室紹介:高久研究室
Masao Takaku
•
1.4K views
つながる目録、つながるサービス@図書館総合展(2015.11.12)
Ikki Ohmukai
•
3.2K views
solr勉強会資料
Atsushi Takayasu
•
6.3K views
Information retrieval model
Yuku Takahashi
•
3.6K views
生命科学・農学研究のための情報検索の基礎
Takeru Nakazato
•
1.1K views
情報検索の基礎(11章)
Katsuki Tanaka
•
1.5K views
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
Yahoo!デベロッパーネットワーク
•
19.1K views
おとなのテキストマイニング
Munenori Sugimura
•
3.2K views
パケットジェネレータipgenから見るnetmap
furandon_pig
•
5.5K views
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Shunsuke Kozawa
•
15K views
情報検索のためのユーザモデル
kt.mako
•
3.6K views
elasticsearchソースコードを読みはじめてみた
furandon_pig
•
7.6K views
Learning to Rank in Solr: Presented by Michael Nilsson & Diego Ceccarelli, Bl...
Lucidworks
•
29.7K views
「人工知能」をあなたのビジネスで活用するには
Takahiro Kubo
•
31.9K views
Similar to NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
(20)
ビッグデータ関連Oss動向調査とニーズ分析
Yukio Yoshida
•
2.9K views
図書館でAPIをスルメのように 味わうには
Takanori Hayashi
•
4.3K views
ライフエンジンを支える検索エンジンの作り方
Chiaki Hatanaka
•
1.1K views
オープンデータとSPARQLでビジュアライズ
uedayou
•
2K views
100622 学術情報セミナー
Shuhei Otani
•
506 views
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
貴史 小川
•
2K views
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
貴史 小川
•
4.5K views
一年目がWatsonを調べてみた Discovery編
Jin Hirokawa
•
2.8K views
Code4Lib 2013参加報告
Masao Takaku
•
1.3K views
全文検索入門
antibayesian 俺がS式だ
•
3.9K views
Social Literacy
伸夫 森本
•
1K views
顧客価値って奥深いですね
Takuya Kawabe
•
651 views
日経テレコンスクール 営業コーステキスト(サンプル)
Digital BtoB Unit, Nikkei Inc.
•
308 views
機械学習ビジネス研究会(未踏研究会)
Tokoroten Nakayama
•
9.6K views
OSSで「脱下請け」のススメ ~OSC Tokyo 2014/Spring 講演資料~
Yuichi Terada
•
2.3K views
【No.1】社会貢献活動団体の人材獲得戦略(調査報告書1)
etic_sal
•
474 views
アプリケーションを管理するノーツデータベースについて
健補 萩原
•
129 views
KCI PROFILE 2021-10-07
陽平 山口
•
386 views
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
Yoji Kiyota
•
875 views
AmazonESを利用した学会論文検索システム
Yuki Takahashi
•
184 views
Advertisement
More from Koji Sekiguchi
(20)
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
Koji Sekiguchi
•
22 views
Lucene 6819-good-bye-index-time-boost
Koji Sekiguchi
•
2.1K views
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
Koji Sekiguchi
•
3.6K views
An Introduction to NLP4L
Koji Sekiguchi
•
3.7K views
コーパス学習による Apache Solr の徹底活用
Koji Sekiguchi
•
5.2K views
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
•
3.3K views
情報検索におけるランキング計算の紹介
Koji Sekiguchi
•
3.1K views
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
Koji Sekiguchi
•
2.6K views
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Koji Sekiguchi
•
1.8K views
Html noise reduction
Koji Sekiguchi
•
2.2K views
Lucene terms extraction
Koji Sekiguchi
•
8.4K views
Visualize terms network in Lucene index
Koji Sekiguchi
•
2.3K views
WikipediaからのSolr用類義語辞書の自動生成
Koji Sekiguchi
•
12.6K views
HMM viterbi
Koji Sekiguchi
•
15.2K views
NLP x Lucene/Solr
Koji Sekiguchi
•
2.5K views
OpenNLP - MEM and Perceptron
Koji Sekiguchi
•
5.1K views
自然言語処理における機械学習による曖昧性解消入門
Koji Sekiguchi
•
8.9K views
Similarity functions in Lucene 4.0
Koji Sekiguchi
•
8.5K views
Pre rondhuit-naming-story
Koji Sekiguchi
•
6.2K views
Lu solr32 34-20110912
Koji Sekiguchi
•
3.2K views
Recently uploaded
(20)
#学位证靠谱办LU文凭证书全套
buxvunsvjiujzternetk
•
2 views
★可查可存档〖制作艾德菲大学文凭证书毕业证〗
fgfg45
•
2 views
#买马尔堡大学文凭证书
gtkihfesnkiubridge
•
2 views
a定制U of T学士硕士文凭学历证书认证
wahin56033
•
3 views
#办奥本大学文凭学位证书《制作国外毕业证》
carat56269m
•
3 views
#全套原版1:1精仿Curtin学位证成绩单
b6f0190421d1rma
•
2 views
#办卡尔顿大学文凭学位证书
joxide9153lumar
•
2 views
☀️《UOW毕业证仿真》
fvgvgfg
•
2 views
ALGYANでChatGPTとの旅
Jingun Jung
•
115 views
☀️《SMU毕业证仿真》
jjkjkijk
•
2 views
☀️《USC毕业证仿真》
fvgvgfg
•
2 views
#专业办证《莱比锡大学毕业证学位证原版精仿》
ee61223771acdrman
•
2 views
留学回国,认证无忧添加qq威信【634068167】(WITT)塔拉纳基西部理工学院毕业证成绩单#新西兰文凭#成绩单信封#大学offer#学生卡#留信留才...
MelissaNewmanbgueas
•
3 views
#专业办证《基尔大学毕业证学位证原版精仿》
ee61223771acdrman
•
1 view
☀️【伊利诺伊理工学院毕业证成绩单留学生首选】
2125nuh
•
2 views
#学位证靠谱办Quebec文凭证书全套
76p522i4nqmocom
•
2 views
揭秘美国留学:如何获得加州州立大学波莫纳分校毕业证?
hzdcyty
•
2 views
#学历学位认证【明尼苏达大学克鲁克斯顿分校文凭成绩单定制】
sobotos779szdf
•
2 views
#买莱比锡大学文凭证书
gtkihfesnkiubridge
•
2 views
#学历学位认证【堪萨斯大学文凭成绩单定制】
sobotos779szdf
•
2 views
Advertisement
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
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!
Editor's Notes
情報検索システムを改善するために、ビッグデータをどのように活用できるか、というお話をしたい。
Big Data 関連では、大学院で自然言語処理を学び、ロンウイットで機械学習のトレーニングコースの講師を勤めている。
設立当初より情報検索を専門に行ってきた。具体的にはOSSの検索エンジンライブラリであるApache Luceneベースの検索エンジンSolrやElasticsearchなどの導入コンサルティング、製品開発、サポートサービス、トレーニングコースを提供している。トレーニングコース受講者はのべ800名に達する。 Solrをかついでいる日本企業は無数にあるが、情報検索専業であるのでどこよりも検索システムを真剣に考えている自負がある。「より良い検索システムを提供する」をモットーに活動している。 ところで、「良い検索システム」とはなんだろうか。それは「欲しいものがすぐ見つかる」システムであるといえる。 しかしその前に、情報検索システムとはなにか、考えてみよう。
情報検索システムの目的は、大量の情報の中からユーザの要求を満たす情報を見つけ出すことである。検索対象となる情報は自然言語で書かれた文書とする。ユーザからの情報要求はキーワードで表現されたクエリ。 ECサイト:商品検索。 企業内検索:ファイルサーバやDBなどに保存されている文書を横断的に検索。 書誌検索:図書館などで、タイトル、著者名だけではなく、文献の概要や本文も含めた検索。 情報検索システムの特徴を、システムを運用する側から考えてみたい。それは導入後に継続的なメンテナンスが必要、ということである。なぜかというと、事業の発展に伴い文書量が増えたり、ユーザニーズが変化したり多様化したりすることでマーケットが変化するため。 もちろんこれは情報検索システムに限った話ではなく、他の業務システムにもあてはまることではある。しかし情報検索システムではこのことが多分に顕著に現れると情報検索業界に10年間携わってきた経験から感じている。利用時にユーザのemotionalな部分が入り込むから・・・かもしれない。 継続的なメンテナンスが必要なのはちょっと面倒そう?なくても業務は回せるが、あると大変便利なシステム。Googleのように検索できる。業務効率が大幅にアップ(企業内検索)。ユーザ利便性の向上(ECサイト)。
我々は「よい検索システム」とは「ユーザが欲しいと思った情報をすばやく見つけられるシステム」と考えている。なお、探す対象が「情報」だと漠然としているのでこれ以降は「文書」と呼ぶことにする。「文書」は、Webページ検索であれば「Webページ」、ECサイトであれば「商品」に相当する。 「ユーザが欲しいと思った文書をすばやく見つけられる」というところをもう少しかみ砕いて言うと「網羅的かつ必要な文書のみ提供する」ということになる。「網羅的」というのは「ユーザが欲しいと思った文書はもれなく返す」ということであり、「素早く見つける」ためには「ユーザが欲しい文書のみ返す」、つまり「ユーザが欲しくない文書は返さない」ということになる。 この「必要かつ十分」な文書を返す検索システムを提供する、というのは実は結構実現が難しい。なぜなら「網羅性」の達成と必要なものだけを返すという「正確性」は、トレードオフの関係にあるため。 これは上のような「ベン図」を描くと理解しやすい。上の図で、右の円が「ユーザが欲しいと考えている文書集合」であり、左の円は「検索システムが返す文書集合」を表す。このように描くと領域A、B、Cができ、この領域の大きさを使って検索エンジンの性能指標である「再現率(recall)」と「精度(precision)」を計算できるが、今日は平易な言葉で説明したいので、この話はしない。詳しく知りたい方は、YouTubeで私の過去の講演を検索していただきたい。 ここで左の円の大きさは「網羅性」を表す。このとき、左の円がカバーしきれない領域Cができてしまうが、これを検索漏れと呼ぶ。領域Cは「ユーザが欲しいと思っているが検索システムが返せなかった文書集合」ということである。ユーザとしてはこの領域は当然のことながら小さくなくては困る。一方で、領域Aを検索誤りと呼ぶ。領域Aは「ユーザが欲しくないのに検索システムが返してしまう文書集合」ということである。この領域Aが大きいと、ユーザはたくさんの検索ヒットの中から自分が探したい文書を見つけるのが大変になるので、やはりユーザとしてはこの領域も小さくして欲しい。 したがって、領域AもCも小さくしたいのであるが、そのためには左の円がこの大きさを保ったまま、右に移動してくれるとよい。しかし、検索システムをこのようにチューニングすることは不可能である。可能なチューニングは、左の円を大きくしたり、小さくしたりすることである。
たとえば、「網羅性」を高めるために、左の円を大きくなるようにチューニングすると、ユーザが欲しい文書はほぼ返せるようになる。しかし、領域Aが増えてしまうので、探しにくくなってしまう。 逆に「正確性」を高めるために、左の円を小さくなるようにチューニングすると、ユーザが欲しくない文書はほぼ返さなくなり探しやすさは高まるが、領域Cが増えてしまうので、ユーザが欲しい文書を十分返せなくなる。 これが検索システムでよく知られている「網羅性」と「正確性」のトレードオフ問題である。(正確には、再現率(recall)と精度(precision)と呼ばれるが、ここではこの言葉を用いない) ユーザとしては両方とも欲しいが、両方同時に実現するのは不可能である。しかし我々は「より良い検索システムを提供する」をモットーに活動しているので、この問題を解決する必要がある。
我々はこのトレードオフ問題を解決するには、このような解決手順を踏むことにしている。 まずは、何はともあれ、「網羅性」を高める方向で検索システムをチューニングする。ユーザが欲しい文書を返せないと話にならないからである。 すると、先ほどのロジックから、「正確性」が低下する、つまり、多くの検索ヒットの中から目当ての文書を探すのが難しい状態となる。 これを解決するのに、2つの方法がある。1つは、漸次的に不要な文書を取り除く方法、もう一つは、ランキングが適切になるようにチューニングすることである。ここで「ランキング」とは、検索結果表示ページにおける、文書の表示順のことを指す。 このプロセスを一つずつ説明しよう。
検索の網羅性を高める具体的な方法の例を示す。 この表のうち、いくつかは日本語独特なものだが、英語など、日本語以外の言語でも類似の網羅性を高める方法が考えられる。 (以下、それぞれを簡単に説明) 以上のように、「網羅性」を高めると、「正確性」が低下するので、次に低下してしまった「正確性」を高めるプロセスを説明する。一つ目のプロセスは、漸次的に不要文書を取り除く、である。
「漸次的な不要文書の除去」の方法について、具体的なWebサイトでの検索を想定して説明しよう。パッケージツアーの販売サイトを考える。 ハワイに行きたいと考えているユーザがパッケージツアーの販売サイトで「ハワイ」と入力する。そのとき、ユーザはこの円で示されるような文書集合が返ってくることを期待している。 しかし、網羅性が高められた検索システムはもっとたくさんのパッケージツアー(文書)を返してくる。そこで画面の右側などを見ると、「予算で絞り込む」というリンクがあるので、自分の予算に照らし合わせてリンクをクリックすると絞り込み検索が実施され、返ってくるツアーの数を絞り込むことができる。さらに別のリンクである「出発地で絞り込む」という絞り込みリンクもあるので、自分の条件に合った出発空港をクリックすると、さらにシステムから返ってくるツアーの数が小さくなる。 このように漸次的に不要文書を取り除くことで、高い網羅性を担保しつつ、正確性も高めることができ、ユーザは望む文書をすばやく探し当てることができるようになる。
ただし、「漸次的な不要文書の除去」の方策をとるには、検索対象文書がこのように「構造」を持っている必要がある。 このような構造を持っていない、「非構造化文書」に対しては、「漸次的な不要文書の除去」の方法を適用することはできない。
「網羅性」を高めることで低下してしまった「正確性」を高める二つ目のプロセスは、「ランキングチューニング」である。ここで「ランキング」とは、検索結果表示ページにおける、文書の表示順のことを指す。 こちらの図は「ランキングチューニング」を行う前である。数字は各文書の表示順(ランキング)を示す。ユーザが最初に目にする文書は、ユーザが望まない文書となってしまっている。ユーザが欲しい文書は、50位、100位、500位など、下位に押しやられている。
一方、ランキングが適切にチューニングされた場合、このようになる。ユーザが最初に目にする文書が、まさにユーザが望んでいる文書となっている。 この状態は、「網羅性」が高く、「正確性」は相変わらず低いままだが、ユーザ視点で見れば非常に優秀な検索エンジンと言える。つまり、ランキングが適切にチューニングできれば、低い正確性をカバーできることがわかる。
以上、検索システムにまつわる網羅性と正確性のトレードオフの問題を解決する手順を示した。次に、それぞれの項目に対応するSolrのツールを具体的に見ていこう。 「網羅性を高めるようにチューニング」するには、SolrのSynonymFilterを適用する。 「漸次的に不要な文書を取り除く」には、Solrのファセットを使った絞り込み検索を行う。 「ランキングチューニング」するには、Solrの検索において、検索時やインデクシング時にフィールドの重みを適切に調整したり、関数クエリを用いたりすることに相当する。 このように、それぞれの問題解決項目には、Solrにてそれぞれツールが用意されている。しかしながら、いざ実際に使おうとすると、それはそれで問題が出てくる。
Solrのツールを使おうとしたときに生じる問題。 「SynonymFilter」を使うには、シノニムが定義された辞書ファイル(テキストファイル)が必要である。これを人手で設定するのは大変だ。 「ファセットを使った絞り込み検索」を行うには、検索対象文書が構造化されていないといけない。しかし、世の中の全ての文書が構造化されているわけではない。非構造化文書には適用できない。 「フィールドの重みを適切に調整」するには、Solrに詳しい技術者が、デバッグ情報を見ながら重みを微調整したりしないといけないので大変。またランキングのチューニングを重み調整だけでやるのは実質的に不可能。「あちらを立てるとこちらが立たず」という状態に陥り、全体的に最適なランキングにすることは経験上できない。仮にその時点で最適と考えられるチューニングをやったとしても、検索システムが扱う文書は増え続けるのが通常であり、何かしら自律的にチューニングされるしくみが必要である。
そこで、これらの人手作業を軽減し、より良い検索システムを手に入れるためのOSSのツールであるNLP4Lを紹介する。 NLP4Lは弊社を含むベンダー数社でGithub上で共同開発しているオープンソースソフトウェアである。 機械学習や自然言語処理のテクニックを用い、Luceneベースの検索システムの使い勝手をより良くするためのものである。 充実した英語と日本語のマニュアルがある。 NLP4L-DICTとNLP4L-LTRの2大モジュールが統合されたGUIベースのプラットフォームである。 NLP4L-DICTでは特に、コーパス、すなわち企業が保有する文書データベースを入力として受け取り、シノニム辞書や専門用語辞書などの各種辞書を自動生成する。NLP4Lでは「機械学習や自然言語処理は完璧ではない」という前提に立っているので、自動生成された辞書はSolrなどの検索システムにデプロイされる前に、Validateプログラムや人手で確認・編集され、最後にデプロイボタンクリックで、Solrにデプロイされるしくみになっている。人手による編集の際、過去に行った同じ編集をもう一度行わなくてもすむように、編集内容はデータベースに記憶され、次回の辞書生成時に編集は自動適用される(リプレイ機能と呼ばれる)。 Wikipediaのような、一般的で誰でも入手可能なコーパスを処理対象にすることもできるが、それぞれの企業が保有するコーパスを用いることで、より業務ドメインに特化した辞書構築が可能となる。
前述の各問題点について、NLP4Lがどのようなツールを提供して問題解決をしているか、見てみよう。 (各項目を簡単に紹介) 最初に情報検索システムの特徴として導入後に継続的なメンテナンスが必要である旨述べた。したがって、「自律的」であることがここでのポイント。 AIがもてはやされる昨今、AIの一技術である機械学習は「完璧」ではないので100%自律的であることを保証するものではないが、かなりの省力化に貢献できる。
ここでLTRの一般的なフレームワークを示す。 (各コンポーネントについて簡単に紹介) モデルの学習アルゴリズムには、Pointwise、Pairwise、Listwiseのアプローチがあることが知られているが、NLP4L-LTRはこれらのアプローチに依存しないフレームワークとなっている。
NLP4LはLTRのフレームワークのうち、必要な全てのコンポーネントをカバーしている。 (NLP4LによるLTRコンポーネントのサポートについて簡単に説明) LTRは教師あり学習なので、教師データがなければいけない。NLP4LはLTR用の教師データを作成するのに、2つの方法をサポートしている。(次ページ)
LTR用の教師データを作成する方法の1つめは、アノテーションGUIである。「どのクエリはどの文書がどの程度関連度があるか」について、ユーザが人手で星をつける作業を行う。そのためのGUIが提供される。このGUIは「どのクエリについてどの文書がどの程度関連度があるか」という星印をつけていくのでPointwiseのデータを作成していることになるが、NLP4L-LTRにて擬似的にPairwiseデータに変換してRankingSVMなどのPairwiseアプローチを取るランキング学習アルゴリズムを実行できる。 2つめは、アクセスログ(NLP4Lでは特別にインプレッションログと呼んでいる)から関連度(上述と同じ「どのクエリはどの文書がどの程度関連度があるか」ということ)情報を自動生成する「クリックモデル」である。 NLP4Lでは独立クリックモデル(Independent Click Model)と非独立クリックモデル(Dependent Click Model)をサポートしている。
こちらは、NLP4L-LTRがサポートする、インプレッションログのサンプルである。 データは2件ある。1つめは「iphone」というクエリが発行されたクエリセッションで、インプレッション(表示された文書)がdocAからdocEの5件あり、そのうちのdocAとdocCがクリックされたことを示す。 2つめは同じく「iphone」というクエリが発行されたクエリセッションで、インプレッションがdocAからdocEの5件あり、その中でクリックされた文書がなかったことを示す。
(時間があれば、NLP4L-DICTとNLP4L-LTRのデモを実施。)
SolrにNLP4Lを組み合わせたシステムはこのようになる。 (おおまかな流れ、参照関係について説明) 「自律的」というのがここでもキーワードになる。 100%メンテナンスフリーを保証するものではないが、かなりの省力化を達成できる。
NLP4Lプロジェクトの今後の計画を示す。 評価プログラム NLP4L-LTRにおいて、MAP(Mean Average Precision)、DCG(Discounted Cumulative Gain)、NDCG(Normalized DCG)などによる評価プログラムを追加したい。
問題解決の方法 まず網羅性を高めて、低下した正確性を改善するのに2つの方法があることを示した。また、これらの問題解決のために、Solrには対応するツールがあることを示した。ただし、Solrの各ツールはメンテするのに手間がかかることもわかった。 そこで問題解決を自動化するために、(Solrに加えて)NLP4Lを導入し、企業に眠っている資産であるコーパスとクリックログ(NLP4Lではインプレッションログと呼び区別している)を活用しよう、という提案を行った。
Advertisement