SlideShare a Scribd company logo
1 of 32
@johtani
u  所属:㈱シーマーク
u  氏名:大谷 純

u  twitter:@johtani

u  ブログ:
    http://johtani.jugem.jp

u  「Apache Solr入門」
     の著者の一人
u  lucene-gosenのcommitter
u    Solrのインデックスについて

u    形態素解析について

u    lucene-gosenの機能

u    デモ
u    Solrのインデックスについて

u    形態素解析について

u    lucene-gosenの機能

u    デモ
u    Solr:Lucene(全文検索ライブラリ)を活用した検
      索エンジンサーバ

u    ApacheプロジェクトのOSS

u    Javaで実装

u    検索補助のためのツールがいっぱい

u    転置インデックス方式による全文検索
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
u    単語に区切るにはスペースで区切ればいい。
                  This is a pen.	




        This	
   is	
   a     pen	
   .	

u    じゃあ、日本語は???
u    Lucene/Solrのインデックスについて

u    形態素解析について

u    lucene-gosenの機能

u    デモ
u    Lucene/Solrで最初から使えるのはN-gram
      CJKTokenizer、NGramTokenizer


u    N-gramとはN(≧1)文字ずつ単語にすること
                         サザエはワカメの姉	


                                              N=2で単語分割	


        サザ	
   ザエ	
   エは	
   はワ	
   ワカ	
   カメ	
   メの	
   の姉
u    メリット
      u    辞書が不要=流行語に強い


u    デメリット
      u  「カメ」で検索して「ワカメ」もヒット
          意味のある単位で区切っているわけではないの
          でノイズが多くなる
      u  単語数が多い
u    形態素:意味のある最小単位の文字列

u    形態素(単語)に文章を分割し、品詞情報(動
      詞、名詞など)を付与すること=形態素解析

u    大量コーパスから学習した言語モデルを元に
      している辞書を利用して確率的にもっともらし
      い単語の分割を出力できる
u    メリット
      u  意味のある単語が出現
      u  品詞情報を活用可能

          (名詞だけ取り出すとか可能)

u    デメリット
      u  辞書に載っていない単語を抽出しにくい
      u  辞書のメンテナンスコストあり
u    JUMAN
      - 京大で開発。独自辞書。付加情報が豊富。

u    ChaSen(茶筅)
      - JUMANを元に開発。IPA辞書。コスト推定機能付き。

u    MeCab(和布蕪)
      - ChaSenを元に開発。IPA辞書。コスト推定機能付き。未知語処
      理が外部ファイル定義。日本で最も利用されている形態素解析器

u    KyTea(キューティー)
      - 京大で開発。MeCabなどとは異なる仕組み
      (※ごめんなさい、勉強不足で仕組みはわかってないです。)
u    Sen : MeCabのJava移植版
      →現在、バイナリ版はダウンロード出来ない

u    GoSen : Senの後継
      →現在、サイトがない

u    cmecab-java : MeCabのJNIバインディング
      →ダウンロード可能(ただし、MeCabも必要)

u    Kuromoji
      →ATILIKA社作成。LuceneにContributeされた。
u    Lucene/Solrのインデックスについて

u    形態素解析について

u    lucene-gosenの機能

u    デモ
u    Sen→GoSen→lucene-gosen(現在)

u    Lucene/SolrのコミッターRobert Muirさんが
      GoSenを引き取りメンテナンス開始

u    Google Codeのプロジェクトとして公開
      http://code.google.com/p/lucene-gosen/
u    LGPLライセンス

u    Lucene/Solr(3.x以上)ですぐに利用可能

u    jarファイルに辞書も内包

u    ipadic、NAIST JDicの2つの辞書を選択可

u    カスタム辞書を追加できる

u    LuceneのAttributeベースのToken解析
PSVitaを買ってしまって、とても眠いです。	

                                    入力文をTokenに分解	


PSVita	
 を      買っ	
   て	
 しまっ	
 て	
 、	
   とても	
   眠い	
 です	
 。	


                                    Tokenの変換・削除、追加	


   PSVita	
 を   買っ	
   て	
 しまっ	
 て	
 、	
   とても	
   眠い	
 です	
 。	




   PSVita	
 を   買っ	
   て	
 しまっ	
 て	
       とても	
   眠い	
 です
u    schema.xml設定例:
      <fieldType name=”text_ja_morph” class=”solr.TextField”
      positionIncrementGap=”100”
      autoGeneratePhraseQueries=”false>
      <analyzer>
       <tokenizer class=”solr.JapaneseTokenizerFactory” />
      </analyzer>
      </fieldType>


u    辞書内包のjarを利用している場合はこれだ
      け
u    単語(Token)を「品詞」(POS)により「合成」
      (composite)する機能。

u    Tokenizerに与えられた設定の品詞情報をも
      とに単語をくっつけて1つの単語にする

u    schema.xml設定例:
      <tokenizer class=”solr.JapaneseTokenizerFactory”
        compositePOS=”設定ファイル名”/>
u    設定ファイル記述内容:
       連結品詞名	
 構成品詞名1	
 構成品詞名2	
 ...	
 構成品詞名n	

 - 連結品詞名:合成後に出力されるTokenの品詞名
 - 構成品詞名:合成したい品詞名
          (スペース区切りで複数指定可能)


u    設定ファイル例:	
       名詞-数	
 	
 
       未知語	
 記号-アルファベット
u    外部の辞書を指定可能(jar内包の辞書以外
      が利用可能)

u    複数の辞書を利用可能(同一Solr内部で異
      なる辞書を設定可能)

u    schema.xml設定例:
      <tokenizer class=”solr.JapaneseTokenizerFactory”
      dictionaryDir=”辞書ディレクトリ”/>
u    Tokenizerが出力したTokenを操作(追加・
      削除・増幅など)するためのフィルタ

u    複数のフィルタを設定した順に適用可能
Filter名	
                          概要	
JapaneseWidthFilter	
              全角のASCII文字を半角に、半角カタカ
                                   ナを全角にするフィルタ	
JapanesePunctuationFilter	
        区切り文字、記号などを除外するフィルタ	
JapanesePartOfSpeechStopFilter	
   設定ファイルに記載した品詞に該当する
                                   Tokenを除外するフィルタ	
JapanesePartOfSpeechKeepFilter	
   設定ファイルに記載した品詞に該当する
                                   Token"以外"を除去フィルタ	
JapaneseBasicFormFilter	
          Tokenを基本形に変換するフィルタ	
JapaneseKatakanaStemFilter	
       カタカナの長音(ー)の正規化フィルタ
u    全角のASCII文字を半角に、半角カタカナを全
      角にするフィルタ
      ※lucene-gosenのTokenizer以外でも利用可能


u    schema.xml設定:
      <filter class="solr.JapaneseWidthFilterFactory"/>


u    例:
      「Computer」 → 「Computer」
      「コンピュータ」  → 「コンピュータ」
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
u    設定ファイルに記載した品詞に該当するTokenを除外するフィルタ

u    schama.xml設定:
      <filter class=“solr.JapanesePartOfSpeechStopFilterFactory”
        tags="設定ファイル" enablePositionIncrements="true"/>


u    設定ファイル例:
           感動詞
           フィラー
           記号-句点
           記号-読点	

u    例:
      「えーと、おはよう。トム・クルーズ」 → 「トム」「・」「クルーズ」
u    設定ファイルに記載した品詞に該当するToken以外を除外する
      フィルタ

u    schama.xml設定:
      <filter class=“solr.JapanesePartOfSpeechKeepFilterFactory”
        tags="設定ファイル" enablePositionIncrements="true"/>


u    設定ファイル例:
           感動詞
           フィラー
           記号-句点
           記号-読点	

u    例:
      「えーと、おはよう。トム・クルーズ」
         → 「えーと」「、」「おはよう」「。」
u    Tokenを基本形に変換するフィルタ

u    schema.xml設定例:
      <filter class="solr.JapaneseBasicFormFilterFactory"/>


u    例:
      「悲しきトム・クルーズ」
         →「悲しい」「トム」「・」「クルーズ」
u  カタカナの長音(ー)の正規化フィルタ。
u  4文字以上のカタカナのみの文字列の最後の長
    音(ー)を除去した文字列に変換
      ※lucene-gosenのTokenizer以外でも利用可能


u    設定例:
      <filter class="solr.JapaneseKatakanaStemFilterFactory"/>


u    例:
      「コピー」 → 「コピー」
      「コンピューター」 → 「コンピュータ」
u  Apache Solr入門
u  MeCabのわかりやすい資料:
    http://www.jtpa.org/files/MeCab.pdf
u  IPA品詞体系一覧:
    http://www.unixuser.org/~euske/doc/
    postag/#chasen

More Related Content

What's hot

何をどう学ぶか?
何をどう学ぶか?何をどう学ぶか?
何をどう学ぶか?
nishio
 
Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
Ayumu Itou
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
 

What's hot (20)

30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
 
Session管理とRailsのcookie store
Session管理とRailsのcookie storeSession管理とRailsのcookie store
Session管理とRailsのcookie store
 
何をどう学ぶか?
何をどう学ぶか?何をどう学ぶか?
何をどう学ぶか?
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
 
WebP入門
WebP入門WebP入門
WebP入門
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
Deflate
DeflateDeflate
Deflate
 
ZFSでストレージ
ZFSでストレージZFSでストレージ
ZFSでストレージ
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
ゲーム開発環境の自動化
ゲーム開発環境の自動化ゲーム開発環境の自動化
ゲーム開発環境の自動化
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
 

Viewers also liked

OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
Koji Sekiguchi
 
形態素解析の過去・現在・未来
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来
Preferred Networks
 

Viewers also liked (10)

UIMAウマー
UIMAウマーUIMAウマー
UIMAウマー
 
OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
 
Benchmarking Solr Performance
Benchmarking Solr PerformanceBenchmarking Solr Performance
Benchmarking Solr Performance
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例
 
Benchmarking Solr Performance at Scale
Benchmarking Solr Performance at ScaleBenchmarking Solr Performance at Scale
Benchmarking Solr Performance at Scale
 
High Performance Solr
High Performance SolrHigh Performance Solr
High Performance Solr
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
 
形態素解析の過去・現在・未来
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来
 
はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会
 

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

Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
Esehara Shigeo
 
Introduction of tango! (jp)
Introduction of tango! (jp)Introduction of tango! (jp)
Introduction of tango! (jp)
Yohei Yasukawa
 
形態素解析について
形態素解析について形態素解析について
形態素解析について
tomowata
 

Similar to Lucene gosenの紹介 solr勉強会第7回 (20)

オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
 
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Introduction of tango! (jp)
Introduction of tango! (jp)Introduction of tango! (jp)
Introduction of tango! (jp)
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
 
Perl io layer
Perl io layerPerl io layer
Perl io layer
 
演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみよう演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみよう
 
全文検索入門
全文検索入門全文検索入門
全文検索入門
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
RSpecのここがすごい!
RSpecのここがすごい!RSpecのここがすごい!
RSpecのここがすごい!
 
Proof summit2014mizar
Proof summit2014mizarProof summit2014mizar
Proof summit2014mizar
 
形態素解析について
形態素解析について形態素解析について
形態素解析について
 
LDA入門
LDA入門LDA入門
LDA入門
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 

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

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