Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン関口宏司@ロンウイット
共起単語の分析と検索• 分析 – Luceneインデックス I を分析し、ある単語と共起する単語を探して別のイン   デックス I* に登録 – term position vectorを用いる• 検索(サジェスチョン) – Luceneインデ...
アーキテクチャ                                                                 /update?                                          ...
アルゴリズム(CooccurFinder)                             ① 調査対象フィールドの                             すべての単語を調べるループ      調査対象フィールドの辞書...
CooccurSuggesterComponent           http://localhost:8983/solr/cooccur/cooccur?q=地震&rows=0                                ...
コーパスによる共起単語の違い            独女通信            スポーツウォッチ                       トピックニュース仕事     風土,右手,ミオ,徴兵,エリナ,    ブルドーザー,ナゴヤドー セ...
参考文献• High Frequency Terms/Phrases at the Index Level, Suri Babu B,  https://issues.apache.org/jira/browse/LUCENE-474• liv...
Upcoming SlideShare
Loading in …5
×

Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン

1,444 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,444
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン

  1. 1. Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン関口宏司@ロンウイット
  2. 2. 共起単語の分析と検索• 分析 – Luceneインデックス I を分析し、ある単語と共起する単語を探して別のイン デックス I* に登録 – term position vectorを用いる• 検索(サジェスチョン) – Luceneインデックス I にてある単語 t が検索されたとき、I* を t で検索して t と共起する単語一覧を返す – SolrのSearchComponentとして実装 Copyright (c) 2013 RONDHUIT 2
  3. 3. アーキテクチャ /update? index=分析対象インデックス I のパス search("TPP") SearchComponent 共起分析対象 インデックス I CooccurMakerRequestHandler/cooccur?build=true 共起分析結果登録/cooccur?reload=true QueryComponent (内) (外)/cooccur?q=TPP 共起分析 findCoincidental CooccurSuggesterComponent Terms build, reload register CooccurFinder 共起分析結果 共起分析を行う インデックス I* getSuggestions("TPP") findCoincidental (外) Terms (内) 共起分析結果登録 (外) CooccurSuggesterListener 共起単語検索 CooccurIndexManager (サジェスチョン) newSearcher Solr内部インデックスを分析、 イベント 結果を外部インデックスに登録。 build, reload 登録した外部インデックスから共起単語を検索 Copyright (c) 2013 RONDHUIT 3
  4. 4. アルゴリズム(CooccurFinder) ① 調査対象フィールドの すべての単語を調べるループ 調査対象フィールドの辞書 ② 当該単語を含むdocIdを ① 東京 1, 2, 5, … 順に調べるループ 大阪 1, 3, 4, … ③ 当該docIdについての ④ 当該単語「東京」をサーチ term position vector(TPV)を取得 神奈川 4, 5, 7, … String[] 江東区 足立区 北区 北砂 東京 千葉 ⑥ 埼玉 当該単語「東京」以外の単語の位置が、 ⑤ BitSetを用意し、当該単語「東京」の位置を : ⑤で保存しておいた位置と近い場合 TPVから調べた結果のビットを立てる (slop以内)は「共起」している ② としてインデックスに保存 0 1 1 0 0 ・・・ 1TermsEnum DocsEnum 「東京」と共起する「江東区」のスコアは、次のように算出され、 インデックス時ブースト値として記録される 東京 江東区 a c b 性能のための最適化 •①のループでは、docFreq/numDocsが0.02〜10%(デフォルト)の単語のみ処理を行う(例:1万件のインデックスで、docFreqが2件から100件まで) •②のループでは、maxDocsToAnalyzeまで(デフォルト1000)で打ち切る(最後の方のドキュメントが調査されない) •⑤のBitSetは長さMAX_TERMS_PER_DOC(デフォルト1万)までしか用意しない •すべての単語について、ストップワードの調査を行い、登録されているストップワードの場合は処理をスキップする Copyright (c) 2013 RONDHUIT 4
  5. 5. CooccurSuggesterComponent http://localhost:8983/solr/cooccur/cooccur?q=地震&rows=0 livedoorニュースコーパスでの例 Copyright (c) 2013 RONDHUIT 5
  6. 6. コーパスによる共起単語の違い 独女通信 スポーツウォッチ トピックニュース仕事 風土,右手,ミオ,徴兵,エリナ, ブルドーザー,ナゴヤドー セキュリティー,祝日,雑 温厚,デコーレーションケー ム,すれ違い,城島,ローサ, 用,ゴシップ,試食,接待,土 キ,東南アジア,雑談,凶悪 道場,シニア,修行,ディレク 日,仕事場,土木,両立 ター,転職韓国 緊迫,リメイク,リトル,シフト チュヨン,SBS,東亜,IOC, 起源,ハンギョレ,万歳,セ チェンジ,徴兵,歯並び,上陸, 日報,地団駄,チェ,ガン レッソ大阪,ポッ キリスト,教徒,美男 ヒ,UAE,TV プ,DKBnews,戦犯,捕鯨, 本籍,さりげサッカー リーグ,カクカクシカジカ,駅 キリンカップ,グローバル, キリンチャレンジカップ 伝,種目,JFL,スポーツバー,F プロサッカーリーグ,アス サッカー,チャレンジ,キ IFA,ワールドカップ,観戦, リートファン,復権,傑作,船 リン,ワールドカップ,自 連盟 越,集計,明彦,健生 負,ガボン,セネガル,イデ イリー,聖地,英寿 livedoorニュースコーパスでの例 Copyright (c) 2013 RONDHUIT 6
  7. 7. 参考文献• High Frequency Terms/Phrases at the Index Level, Suri Babu B, https://issues.apache.org/jira/browse/LUCENE-474• livedoorニュースコーパス, http://www.rondhuit.com/download.html#ldcc Copyright (c) 2013 RONDHUIT 7

×