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

異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築MILI-LLC
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCMayara Fernandes
 
Office アドイン ハンズオン
Office アドイン ハンズオンOffice アドイン ハンズオン
Office アドイン ハンズオンkinuasa
 
Java-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfJava-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfYoshio Terada
 
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)オラクルエンジニア通信
 
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
 
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PC Cluster Consortium
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
MySQLからPostgreSQLへのマイグレーションのハマリ所
MySQLからPostgreSQLへのマイグレーションのハマリ所MySQLからPostgreSQLへのマイグレーションのハマリ所
MySQLからPostgreSQLへのマイグレーションのハマリ所Makoto Kaga
 
セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5Takahiro Kubo
 
zozo bigquery policy tag usage
zozo bigquery policy tag usagezozo bigquery policy tag usage
zozo bigquery policy tag usageKeisukeTaniguchi2
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集Hiroshi Ohnuki
 
ハンドメイドNfcの作り方
ハンドメイドNfcの作り方ハンドメイドNfcの作り方
ハンドメイドNfcの作り方Yasuhiro Ohsaka
 
Sports director performance appraisal
Sports director performance appraisalSports director performance appraisal
Sports director performance appraisalannahudson050
 
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理Hirofumi Ota
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring土岐 孝平
 

What's hot (20)

異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
Azure Event Grid 事始め
Azure Event Grid 事始めAzure Event Grid 事始め
Azure Event Grid 事始め
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
 
Office アドイン ハンズオン
Office アドイン ハンズオンOffice アドイン ハンズオン
Office アドイン ハンズオン
 
Java-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfJava-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdf
 
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
 
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
 
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
MySQLからPostgreSQLへのマイグレーションのハマリ所
MySQLからPostgreSQLへのマイグレーションのハマリ所MySQLからPostgreSQLへのマイグレーションのハマリ所
MySQLからPostgreSQLへのマイグレーションのハマリ所
 
セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5
 
zozo bigquery policy tag usage
zozo bigquery policy tag usagezozo bigquery policy tag usage
zozo bigquery policy tag usage
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集
 
ハンドメイドNfcの作り方
ハンドメイドNfcの作り方ハンドメイドNfcの作り方
ハンドメイドNfcの作り方
 
Sports director performance appraisal
Sports director performance appraisalSports director performance appraisal
Sports director performance appraisal
 
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理
ファイルサーバーの棚卸から考える SharePoint Online を使ったファイル管理
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 

Viewers also liked

OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronKoji Sekiguchi
 
Benchmarking Solr Performance
Benchmarking Solr PerformanceBenchmarking Solr Performance
Benchmarking Solr PerformanceLucidworks
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessShinsuke Sugaya
 
第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例Ken Hirose
 
Benchmarking Solr Performance at Scale
Benchmarking Solr Performance at ScaleBenchmarking Solr Performance at Scale
Benchmarking Solr Performance at Scalethelabdude
 
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 ...Amazon Web Services Japan
 
形態素解析の過去・現在・未来
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来Preferred Networks
 
はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会Noritsugu Suzuki
 

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回

オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門Jun Ohtani
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうEsehara Shigeo
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
Introduction of tango! (jp)
Introduction of tango! (jp)Introduction of tango! (jp)
Introduction of tango! (jp)Yohei Yasukawa
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Jun Ohtani
 
演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみよう演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみようTakashi Ishio
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニングMunenori Sugimura
 
RSpecのここがすごい!
RSpecのここがすごい!RSpecのここがすごい!
RSpecのここがすごい!mitim
 
Proof summit2014mizar
Proof summit2014mizarProof summit2014mizar
Proof summit2014mizarAlcor80UMa
 
形態素解析について
形態素解析について形態素解析について
形態素解析についてtomowata
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1Kenta Hattori
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索Akio Ishida
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 

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
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (12)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

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