Your SlideShare is downloading. ×
0
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

LUCENE-5252 NGramSynonymTokenizer

694

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
694
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. LUCENE-5252 NGramSynonymTokenizer   関⼝口宏司@ロンウイット  
  • 2. What's  NGramSynonymTokenizer?   •  Tokenizerレベルでシノニム展開する NGramTokenizer   – minGramSize==maxGramSizeに限定   •  LuceneのFSTをシノニム辞書として利⽤用   •  現⾏行行のNGramTokenizer+SynonymFilter の動作に苦しめられる多くの⽇日本⼈人/⽇日 本語ユーザの救世主となる!?   – Lucene/Solr,  ElasticSearch   Copyright  (c)  2013  RONDHUIT   2  
  • 3. 現⾏行行NGram+Synonymの問題点   •  Nより短いシノニム設定ができない   •  ソースキーワードがシノニム展開された とき、トークン数が異なると正しいオフ セットが設定できない   •  シノニム設定することでかえって再現率 を低下させてしまうパターンが存在する   – シノニム辞書:東京,  とうきょう   – ⽂文書:東京駅   – クエリ:東京駅   Copyright  (c)  2013  RONDHUIT   3  
  • 4. NGramSynonymTokenizerによる解決   •  NGramSynonymTokenizerがシノニム辞 書を読み込み、FSTに保持   •  n-gram分割する前に辞書登録された⽂文字 列があるか調べ、あればその部分はn- gram分割しない   •  辞書登録された⽂文字列の前後は、次のよ うに平⾏行行四辺形を描くようにトークンを ⽣生成する   – シノニム辞書:東京,  とうきょう   – ⼊入⼒力力⽂文:明⽇日東京駅へ   Copyright  (c)  2013  RONDHUIT   4   明⽇日    東京                      駅        ⽇日    とうきょう    駅へ   青字はposi%onIncrements=0で出力
  • 5. FSTによるシノニム辞書実装   •  現⾏行行のSynonymMapを流⽤用   Copyright  (c)  2013  RONDHUIT   5   aa,  a2   aaa,  a3   aaaa  =>  a4   2 a a a a 3 :最終状態   FST<BytesRef>   出⼒力力の型   IntsRef   INPUT_TYPE.BYTE4   ユニコードコードポイント   [5  0  1]   [5  2  3]   [3  4]   [5  0  1]   [5  2  3]   words  :  BytesRefHash   ord  BytesRef   --------------------   0  aa   1  a2   2  aaa   3  a3   4  a4   SynonymMap   下図の出⼒力力:   *  [M  N]にて、M=(N.length)  <<  1  +  1   *  Nはwordsにおけるordの配列  
  • 6. アルゴリズム   Copyright  (c)  2013  RONDHUIT   6   PriorityQueue<MyToken>   明⽇日東京駅へ⾏行行く。   鎧を着けて。   Reader   明⽇日東京駅へ⾏行行く。   getNextBlock()   明⽇日{東京|とうきょう}駅へ⾏行行く。   consultDictionary()   明⽇日    駅   ⽇日    駅へ   東京    へ⾏行行   とうきょう  ⾏行行く      く。   tokenizeWholeBlock()   getNextUniqueToken()  
  • 7. schema.xml   Copyright  (c)  2013  RONDHUIT   7   indexMode="true"  :  平⾏行行四辺形出⼒力力を⾏行行う   indexMode="false"  :  平⾏行行四辺形出⼒力力を⾏行行わない  

×