SlideShare a Scribd company logo
1 of 7
Luceneインデックス
の共起単語分析と
Solrによる共起単語
サジェスチョン
関口宏司@ロンウイット
共起単語の分析と検索
• 分析
 – Luceneインデックス I を分析し、ある単語と共起する単語を探して別のイン
   デックス I* に登録
 – term position vectorを用いる

• 検索(サジェスチョン)
 – Luceneインデックス I にてある単語 t が検索されたとき、I* を t で検索して
   t と共起する単語一覧を返す
 – SolrのSearchComponentとして実装




                               Copyright (c) 2013 RONDHUIT   2
アーキテクチャ                                                                 /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
アルゴリズム(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 ・・・    1
TermsEnum       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
CooccurSuggesterComponent


           http://localhost:8983/solr/cooccur/cooccur?q=地震&rows=0




                                         livedoorニュースコーパスでの例
                      Copyright (c) 2013 RONDHUIT              5
コーパスによる共起単語の違い
            独女通信            スポーツウォッチ                       トピックニュース
仕事     風土,右手,ミオ,徴兵,エリナ,    ブルドーザー,ナゴヤドー セキュリティー,祝日,雑
       温厚,デコーレーションケー       ム,すれ違い,城島,ローサ, 用,ゴシップ,試食,接待,土
       キ,東南アジア,雑談,凶悪       道場,シニア,修行,ディレク 日,仕事場,土木,両立
                           ター,転職
韓国     緊迫,リメイク,リトル,シフト チュヨン,SBS,東亜,IOC,                   起源,ハンギョレ,万歳,セ
       チェンジ,徴兵,歯並び,上陸, 日報,地団駄,チェ,ガン                       レッソ大阪,ポッ
       キリスト,教徒,美男      ヒ,UAE,TV                           プ,DKBnews,戦犯,捕鯨,
                                                          本籍,さりげ
サッカー   リーグ,カクカクシカジカ,駅      キリンカップ,グローバル,                  キリンチャレンジカップ
       伝,種目,JFL,スポーツバー,F   プロサッカーリーグ,アス                   サッカー,チャレンジ,キ
       IFA,ワールドカップ,観戦,     リートファン,復権,傑作,船                 リン,ワールドカップ,自
       連盟                  越,集計,明彦,健生                     負,ガボン,セネガル,イデ
                                                          イリー,聖地,英寿




                                               livedoorニュースコーパスでの例
                            Copyright (c) 2013 RONDHUIT                  6
参考文献
• 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

More Related Content

What's hot (7)

R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについてAndroidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
 
XPagesで検索してみよう
XPagesで検索してみようXPagesで検索してみよう
XPagesで検索してみよう
 
Boost Tour 1.53.0
Boost Tour 1.53.0Boost Tour 1.53.0
Boost Tour 1.53.0
 
Abstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminarAbstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminar
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
 

Viewers also liked

Certificate of degree(MSc)
Certificate of degree(MSc)Certificate of degree(MSc)
Certificate of degree(MSc)
Ruslan Into
 
FPGA Architecture Presentation
FPGA Architecture PresentationFPGA Architecture Presentation
FPGA Architecture Presentation
omutukuda
 

Viewers also liked (17)

logoDEFhos5x5rgb
logoDEFhos5x5rgblogoDEFhos5x5rgb
logoDEFhos5x5rgb
 
Yhte2017_eskelinen
Yhte2017_eskelinenYhte2017_eskelinen
Yhte2017_eskelinen
 
Kitab istisqa
Kitab istisqaKitab istisqa
Kitab istisqa
 
Certificate of degree(MSc)
Certificate of degree(MSc)Certificate of degree(MSc)
Certificate of degree(MSc)
 
Yhte2017_makkonen_sharetribe
Yhte2017_makkonen_sharetribeYhte2017_makkonen_sharetribe
Yhte2017_makkonen_sharetribe
 
Bebé a bordo
Bebé a bordoBebé a bordo
Bebé a bordo
 
User Reviews: Your Best Kept Content Marketing Secret
User Reviews: Your Best Kept Content Marketing SecretUser Reviews: Your Best Kept Content Marketing Secret
User Reviews: Your Best Kept Content Marketing Secret
 
LAK13 Tutorial Social Network Analysis 4 Learning Analytics
LAK13 Tutorial Social Network Analysis 4 Learning AnalyticsLAK13 Tutorial Social Network Analysis 4 Learning Analytics
LAK13 Tutorial Social Network Analysis 4 Learning Analytics
 
Knowlywood: Mining Activity Knowledge from Hollywood Narratives
Knowlywood: Mining Activity Knowledge from Hollywood NarrativesKnowlywood: Mining Activity Knowledge from Hollywood Narratives
Knowlywood: Mining Activity Knowledge from Hollywood Narratives
 
DrRekhaShukla_PhDWork
DrRekhaShukla_PhDWorkDrRekhaShukla_PhDWork
DrRekhaShukla_PhDWork
 
4141
41414141
4141
 
Reflecting on the Diverse Innovations and Impacts prompted by an OER project
Reflecting on the Diverse Innovations and Impacts prompted by an OER projectReflecting on the Diverse Innovations and Impacts prompted by an OER project
Reflecting on the Diverse Innovations and Impacts prompted by an OER project
 
Revista cdi nr.7 din 2016
Revista cdi nr.7 din 2016Revista cdi nr.7 din 2016
Revista cdi nr.7 din 2016
 
Taiteesta tuotteeksi eli käsityöläiset, muusikot ja taiteilijat somessa
Taiteesta tuotteeksi eli käsityöläiset, muusikot ja taiteilijat somessaTaiteesta tuotteeksi eli käsityöläiset, muusikot ja taiteilijat somessa
Taiteesta tuotteeksi eli käsityöläiset, muusikot ja taiteilijat somessa
 
FPGA Architecture Presentation
FPGA Architecture PresentationFPGA Architecture Presentation
FPGA Architecture Presentation
 
Web Browsers
Web BrowsersWeb Browsers
Web Browsers
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 

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

蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング
genroku
 
OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法
Open Source Software Association of Japan
 
Infosta実習 発表ver
Infosta実習 発表verInfosta実習 発表ver
Infosta実習 発表ver
skdmai
 
スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類
Yahoo!デベロッパーネットワーク
 
Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
Takahiko Ito
 

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

蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング
 
Elasticsearchの基本動作まとめ
Elasticsearchの基本動作まとめElasticsearchの基本動作まとめ
Elasticsearchの基本動作まとめ
 
Javaで書いたBOW分析APIをSwaggerから.Netで読み込んでみる
Javaで書いたBOW分析APIをSwaggerから.Netで読み込んでみるJavaで書いたBOW分析APIをSwaggerから.Netで読み込んでみる
Javaで書いたBOW分析APIをSwaggerから.Netで読み込んでみる
 
mysqlftppc 紹介
mysqlftppc 紹介mysqlftppc 紹介
mysqlftppc 紹介
 
self made Fulltext search first_step
self made Fulltext search first_stepself made Fulltext search first_step
self made Fulltext search first_step
 
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
 
Spock's world
Spock's worldSpock's world
Spock's world
 
OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法OSS ソースコードサーチツールの効能、有効活用方法
OSS ソースコードサーチツールの効能、有効活用方法
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
 
Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5
 
機械学習を用いたWeb上の産学連携関連文書の抽出
機械学習を用いたWeb上の産学連携関連文書の抽出機械学習を用いたWeb上の産学連携関連文書の抽出
機械学習を用いたWeb上の産学連携関連文書の抽出
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
Infosta実習 発表ver
Infosta実習 発表verInfosta実習 発表ver
Infosta実習 発表ver
 
スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
 

More from Koji Sekiguchi

情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
 
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
Koji Sekiguchi
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
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
 

More from Koji Sekiguchi (20)

20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
 
Solr から使う OpenNLP の日本語固有表現抽出
Solr から使う OpenNLP の日本語固有表現抽出Solr から使う OpenNLP の日本語固有表現抽出
Solr から使う OpenNLP の日本語固有表現抽出
 
Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1
 
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
 
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
NLP4L - 情報検索における性能改善のためのコーパスの活用とランキング学習
 
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
 
Nlp4 l intro-20150513
Nlp4 l intro-20150513Nlp4 l intro-20150513
Nlp4 l intro-20150513
 
コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用
 
情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
 
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
 
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
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

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

  • 2. 共起単語の分析と検索 • 分析 – Luceneインデックス I を分析し、ある単語と共起する単語を探して別のイン デックス I* に登録 – term position vectorを用いる • 検索(サジェスチョン) – Luceneインデックス I にてある単語 t が検索されたとき、I* を t で検索して t と共起する単語一覧を返す – SolrのSearchComponentとして実装 Copyright (c) 2013 RONDHUIT 2
  • 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. アルゴリズム(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 ・・・ 1 TermsEnum 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. CooccurSuggesterComponent http://localhost:8983/solr/cooccur/cooccur?q=地震&rows=0 livedoorニュースコーパスでの例 Copyright (c) 2013 RONDHUIT 5
  • 6. コーパスによる共起単語の違い 独女通信 スポーツウォッチ トピックニュース 仕事 風土,右手,ミオ,徴兵,エリナ, ブルドーザー,ナゴヤドー セキュリティー,祝日,雑 温厚,デコーレーションケー ム,すれ違い,城島,ローサ, 用,ゴシップ,試食,接待,土 キ,東南アジア,雑談,凶悪 道場,シニア,修行,ディレク 日,仕事場,土木,両立 ター,転職 韓国 緊迫,リメイク,リトル,シフト チュヨン,SBS,東亜,IOC, 起源,ハンギョレ,万歳,セ チェンジ,徴兵,歯並び,上陸, 日報,地団駄,チェ,ガン レッソ大阪,ポッ キリスト,教徒,美男 ヒ,UAE,TV プ,DKBnews,戦犯,捕鯨, 本籍,さりげ サッカー リーグ,カクカクシカジカ,駅 キリンカップ,グローバル, キリンチャレンジカップ 伝,種目,JFL,スポーツバー,F プロサッカーリーグ,アス サッカー,チャレンジ,キ IFA,ワールドカップ,観戦, リートファン,復権,傑作,船 リン,ワールドカップ,自 連盟 越,集計,明彦,健生 負,ガボン,セネガル,イデ イリー,聖地,英寿 livedoorニュースコーパスでの例 Copyright (c) 2013 RONDHUIT 6
  • 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