Lucene gosenの紹介 solr勉強会第7回

12,614 views

Published on

lucene-gosen の紹介資料

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

No Downloads
Views
Total views
12,614
On SlideShare
0
From Embeds
0
Number of Embeds
2,313
Actions
Shares
0
Downloads
0
Comments
0
Likes
21
Embeds 0
No embeds

No notes for slide

Lucene gosenの紹介 solr勉強会第7回

  1. 1. @johtani
  2. 2. u  所属:㈱シーマークu  氏名:大谷 純u  twitter:@johtaniu  ブログ: http://johtani.jugem.jpu  「Apache Solr入門」  の著者の一人u  lucene-gosenのcommitter
  3. 3. u  Solrのインデックスについてu  形態素解析についてu  lucene-gosenの機能u  デモ
  4. 4. u  Solrのインデックスについてu  形態素解析についてu  lucene-gosenの機能u  デモ
  5. 5. u  Solr:Lucene(全文検索ライブラリ)を活用した検 索エンジンサーバu  ApacheプロジェクトのOSSu  Javaで実装u  検索補助のためのツールがいっぱいu  転置インデックス方式による全文検索
  6. 6. 1 カツオはサザエの弟 対象とする文章(ドキュメント)に 2 サザエはワカメの姉 IDを付与 カツオ 1 は 1 サザエ 1 の 1 弟 1 文章を単語に分割し、サザエ 2 は 2 ワカメ 2 の 2 姉 2 単語:ドキュメントIDと整理 の 1 2 ワカメ 2 単語をキー、ドキュメントIDの は 1 2 弟 1 配列を値とする表を作成   = カツオ 1 姉 2 転置インデックス サザエ 1 2
  7. 7. u  単語に区切るにはスペースで区切ればいい。 This is a pen. This is a pen . u  じゃあ、日本語は???
  8. 8. u  Lucene/Solrのインデックスについてu  形態素解析についてu  lucene-gosenの機能u  デモ
  9. 9. u  Lucene/Solrで最初から使えるのはN-gram CJKTokenizer、NGramTokenizeru  N-gramとはN(≧1)文字ずつ単語にすること サザエはワカメの姉 N=2で単語分割 サザ ザエ エは はワ ワカ カメ メの の姉
  10. 10. u  メリット u  辞書が不要=流行語に強いu  デメリット u  「カメ」で検索して「ワカメ」もヒット 意味のある単位で区切っているわけではないの でノイズが多くなる u  単語数が多い
  11. 11. u  形態素:意味のある最小単位の文字列u  形態素(単語)に文章を分割し、品詞情報(動 詞、名詞など)を付与すること=形態素解析u  大量コーパスから学習した言語モデルを元に している辞書を利用して確率的にもっともらし い単語の分割を出力できる
  12. 12. u  メリット u  意味のある単語が出現 u  品詞情報を活用可能 (名詞だけ取り出すとか可能)u  デメリット u  辞書に載っていない単語を抽出しにくい u  辞書のメンテナンスコストあり
  13. 13. u  JUMAN - 京大で開発。独自辞書。付加情報が豊富。u  ChaSen(茶筅) - JUMANを元に開発。IPA辞書。コスト推定機能付き。u  MeCab(和布蕪) - ChaSenを元に開発。IPA辞書。コスト推定機能付き。未知語処 理が外部ファイル定義。日本で最も利用されている形態素解析器u  KyTea(キューティー) - 京大で開発。MeCabなどとは異なる仕組み (※ごめんなさい、勉強不足で仕組みはわかってないです。)
  14. 14. u  Sen : MeCabのJava移植版 →現在、バイナリ版はダウンロード出来ないu  GoSen : Senの後継 →現在、サイトがないu  cmecab-java : MeCabのJNIバインディング →ダウンロード可能(ただし、MeCabも必要)u  Kuromoji →ATILIKA社作成。LuceneにContributeされた。
  15. 15. u  Lucene/Solrのインデックスについてu  形態素解析についてu  lucene-gosenの機能u  デモ
  16. 16. u  Sen→GoSen→lucene-gosen(現在)u  Lucene/SolrのコミッターRobert Muirさんが GoSenを引き取りメンテナンス開始u  Google Codeのプロジェクトとして公開 http://code.google.com/p/lucene-gosen/
  17. 17. u  LGPLライセンスu  Lucene/Solr(3.x以上)ですぐに利用可能u  jarファイルに辞書も内包u  ipadic、NAIST JDicの2つの辞書を選択可u  カスタム辞書を追加できるu  LuceneのAttributeベースのToken解析
  18. 18. PSVitaを買ってしまって、とても眠いです。 入力文をTokenに分解 PSVita を 買っ て しまっ て 、 とても 眠い です 。 Tokenの変換・削除、追加 PSVita を 買っ て しまっ て 、 とても 眠い です 。 PSVita を 買っ て しまっ て とても 眠い です
  19. 19. u  schema.xml設定例: <fieldType name=”text_ja_morph” class=”solr.TextField” positionIncrementGap=”100” autoGeneratePhraseQueries=”false> <analyzer> <tokenizer class=”solr.JapaneseTokenizerFactory” /> </analyzer> </fieldType>u  辞書内包のjarを利用している場合はこれだ け
  20. 20. u  単語(Token)を「品詞」(POS)により「合成」 (composite)する機能。u  Tokenizerに与えられた設定の品詞情報をも とに単語をくっつけて1つの単語にするu  schema.xml設定例: <tokenizer class=”solr.JapaneseTokenizerFactory” compositePOS=”設定ファイル名”/>
  21. 21. u  設定ファイル記述内容: 連結品詞名 構成品詞名1 構成品詞名2 ... 構成品詞名n  - 連結品詞名:合成後に出力されるTokenの品詞名 - 構成品詞名:合成したい品詞名          (スペース区切りで複数指定可能)u  設定ファイル例: 名詞-数 未知語 記号-アルファベット
  22. 22. u  外部の辞書を指定可能(jar内包の辞書以外 が利用可能)u  複数の辞書を利用可能(同一Solr内部で異 なる辞書を設定可能)u  schema.xml設定例: <tokenizer class=”solr.JapaneseTokenizerFactory” dictionaryDir=”辞書ディレクトリ”/>
  23. 23. u  Tokenizerが出力したTokenを操作(追加・ 削除・増幅など)するためのフィルタu  複数のフィルタを設定した順に適用可能
  24. 24. Filter名 概要 JapaneseWidthFilter 全角のASCII文字を半角に、半角カタカ ナを全角にするフィルタ JapanesePunctuationFilter 区切り文字、記号などを除外するフィルタ JapanesePartOfSpeechStopFilter 設定ファイルに記載した品詞に該当する Tokenを除外するフィルタ JapanesePartOfSpeechKeepFilter 設定ファイルに記載した品詞に該当する Token"以外"を除去フィルタ JapaneseBasicFormFilter Tokenを基本形に変換するフィルタ JapaneseKatakanaStemFilter カタカナの長音(ー)の正規化フィルタ
  25. 25. u  全角のASCII文字を半角に、半角カタカナを全 角にするフィルタ ※lucene-gosenのTokenizer以外でも利用可能u  schema.xml設定: <filter class="solr.JapaneseWidthFilterFactory"/>u  例: 「Computer」 → 「Computer」 「コンピュータ」  → 「コンピュータ」
  26. 26. u  区切り文字、記号などを除外するフィルタ ※lucene-gosenのTokenizer以外でも利用可能u  schema.xml設定: <filter class="solr.JapanesePunctuationFilterFactory" enablePositionIncrements="true"/>u  例: 「Wi-fi」 → 「Wi」「-」「fi」 → 「Wi」「fi」 「トム・クルーズ」 → 「トム」「・」「クルーズ」 → 「トム」「クルーズ」※JavaのCharacterクラスの以下の定数に相当する文字が除外対象となります。SPACE_SEPARATOR、LINE_SEPARATOR、PARAGRAPH_SEPARATOR、CONTROL、FORMAT、DASH_PUNCTUATION、START_PUNCTUATION、END_PUNCTUATION、CONNECTOR_PUNCTUATION、OTHER_PUNCTUATION、MATH_SYMBOL、CURRENCY_SYMBOL、MODIFIER_SYMBOL、OTHER_SYMBOL、INITIAL_QUOTE_PUNCTUATION、FINAL_QUOTE_PUNCTUATION
  27. 27. u  設定ファイルに記載した品詞に該当するTokenを除外するフィルタu  schama.xml設定: <filter class=“solr.JapanesePartOfSpeechStopFilterFactory”   tags="設定ファイル" enablePositionIncrements="true"/>u  設定ファイル例: 感動詞 フィラー 記号-句点 記号-読点 u  例: 「えーと、おはよう。トム・クルーズ」 → 「トム」「・」「クルーズ」
  28. 28. u  設定ファイルに記載した品詞に該当するToken以外を除外する フィルタu  schama.xml設定: <filter class=“solr.JapanesePartOfSpeechKeepFilterFactory”   tags="設定ファイル" enablePositionIncrements="true"/>u  設定ファイル例: 感動詞 フィラー 記号-句点 記号-読点 u  例: 「えーと、おはよう。トム・クルーズ」    → 「えーと」「、」「おはよう」「。」
  29. 29. u  Tokenを基本形に変換するフィルタu  schema.xml設定例: <filter class="solr.JapaneseBasicFormFilterFactory"/>u  例: 「悲しきトム・クルーズ」    →「悲しい」「トム」「・」「クルーズ」
  30. 30. u  カタカナの長音(ー)の正規化フィルタ。u  4文字以上のカタカナのみの文字列の最後の長 音(ー)を除去した文字列に変換 ※lucene-gosenのTokenizer以外でも利用可能u  設定例: <filter class="solr.JapaneseKatakanaStemFilterFactory"/>u  例: 「コピー」 → 「コピー」 「コンピューター」 → 「コンピュータ」
  31. 31. u  Apache Solr入門u  MeCabのわかりやすい資料: http://www.jtpa.org/files/MeCab.pdfu  IPA品詞体系一覧: http://www.unixuser.org/~euske/doc/ postag/#chasen

×