第17回lucene/solr勉強会 #solrjp – apache lucene...

62
ヤフー株式会社 大須賀 17Lucene/Solr勉強会 #SolrJP Lucene/Solrでの形態素解析の課題とN-bestの提案 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Upload: yahoo

Post on 10-Jan-2017

13.212 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

ヤフー株式会社大須賀 稔

第17回 Lucene/Solr勉強会 #SolrJPLucene/Solrでの形態素解析の課題とN-bestの提案

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 2: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

自己紹介

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 3: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

大須賀 稔 (おおすか みのる)

ヤフー株式会社   CTO室 / Solr黒帯

Apacheソフトウェア財団    ManifoldCFプロジェクト       コミッター / PMCメンバー   Solrプロジェクト      コントリビューター

[改訂新版] Apache Solr入門 (技術評論社)    共著者

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 4: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

アナライザの仕組み

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 5: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

アナライザの仕組み

アナライザー

トークナイザ

文字フィルタ

トークンフィルタ

I came from Japan.

i came from japan.

i came from japan

文字単位での正規化処理を行う

文章を単語に分かち書き

不要な単語の除去や単語の正規化処理など

i came japan

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 6: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

日本語の文章を単語に分割する方法

1. 形態素解析

日本語辞書を用いて、文書を単語に分割する。

2. N-gram

機械的に、ある文字数(N)単位で、1文字ずつずらしながら単語として分割する。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 7: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素解析による分割アナライザー

トークナイザ日本語辞書

文字フィルタ

トークンフィルタ

私はニンジンを1本だけ買った

私はニンジンを1本だけ買った

私 は ニンジン を 1 本 だけ 買っ

私 ニンジン 1 本 買う人参

半角片仮名、全角数字などの正規化処理など

日本語辞書を参照しながら文章を単語に分かち書き

検索に不要な単語の除去、類義語への展開など

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 8: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-gramによる分割

アナライザー

トークナイザ

文字フィルタ

私はニンジンを1本だけ買った

私はニンジンを1本だけ買った

私は はニ

半角片仮名、全角数字などの正規化処理など

2-gram(Bi-gram)で分割

ニン ンジ ンを を1

1本 本だ だけ け買 買っ った

ジン

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 9: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素解析とN-gramの比較

• 現在は、形態素解析による分割が一般的。

• N-gramは、形態素解析と併用して、      検索漏れがないようにする目的で利用される。

長所 短所

形態素解析• インデックスサイズが小さい• 検索実行時の処理が速い• 検索結果にノイズが少ない

• インデックス作成に時間がかかる• 辞書が必要• 検索漏れが発生する

N-gram• インデックスの作成が速い• 辞書を必要としない• 検索漏れがない

• インデックスサイズが大きい• 検索実行時の処理が遅い• 検索結果にノイズが多い

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 10: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

検索エンジンの性能評価

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 11: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

性能評価のための3つの指標

1. 適合率: Precision

正確性を表す指標。

2. 再現率: Recall

網羅性を表す指標。

3. F値: F-mesure

適合率、再現率の総合的な指標。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 12: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

適合率 : Precision

検索結果のドキュメント中(N)に、どれだけ正解

ドキュメント(R)を含んでいるかという正確性の指標。

Precision = RN

RN C

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

= 25100

= 0.25

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 13: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

再現率 : Recall

検索結果としての正解ドキュメント(C)が、

どれだけ検索できているかという網羅性の指標。

Recall = RC

RN C

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

= 25100

= 0.25

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 14: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

F値 : F-measure

適合率、再現率の総合的な評価に用いられる。

F-measure = 2・Precision・RecallPrecision + Recall = R

(N + C)12

RN C

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

= 0.25

= 25

(100 + 100)12

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 15: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

検索エンジンの課題

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 16: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素解析とN-gramの課題

現在は、形態素解析による分割が一般的。

N-gramは、形態素解析と併用して、      検索漏れがないようにする目的で利用される。

長所 短所

形態素解析• インデックスサイズが小さい• 検索実行時の処理が速い• 検索結果にノイズが少ない

• インデックス作成に時間がかかる• 辞書が必要• 検索漏れが発生する

N-gram• インデックスの作成が速い• 辞書を必要としない• 検索漏れがない

• インデックスサイズが大きい• 検索実行時の処理が遅い• 検索結果にノイズが多い

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 17: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素解析による検索漏れの例

表層 品詞 ・・・・・・ ・・・ ・・・

ショルダーバッグ 名詞 ・・・・・・ ・・・ ・・・

日本語辞書 トークナイザ

革のショルダーバッグ

ショルダーバッグ革

新しいバッグが欲しいな

ユーザ

バッグ

文章を単語に分かち書き

「バッグ」では検索できない

×

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 18: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-gramによる検索ノイズの例

トークナイザ

東京都港区赤坂

2-gram(Bi-gram)で分割

東京 京都 都港 港区 区赤 赤坂

京都へ旅行に行きたいな

ユーザ

京都

「京都」で検索できてしまう×京都

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 19: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

いかに検索漏れ、および検索ノイズを減らすかが課題。

検索エンジンの課題

RN C

検索漏れ検索ノイズ

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 20: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素解析の仕組み

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 21: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素とは

形態素とは、言語学の用語で、意味を持つ最小の単位のこと。ある言語において、それ以上分解しては意味をなさなくなるところまで分解して抽出された、音素のまとまり。

赤坂でランチを食べて元気になった

赤坂名詞

で助詞

ランチ名詞

を助詞食べ

動詞

て助詞

元気名詞

に助詞

なっ動詞

た助詞

赤名詞

坂名詞

になっ動詞

元名詞

気名詞

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 22: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

形態素辞書

表層 品詞 ・・・ コスト赤坂 名詞 - 4赤 名詞 - 3坂 名詞 - 7で 助詞 - 5

ランチ 名詞 - 5を 助詞 - 3食べ 動詞 - 7て 助詞 - 5元気 名詞 - 3元 名詞 - 5気 名詞 - 6

になっ 動詞 - 10に 助詞 - 4なっ 動詞 - 5た 助詞 - 5

名詞 助詞 動詞 ・・・名詞 1 4 20 -助詞 3 6 6 -動詞 7 3 19 -: - - - -

形態素辞書 接続コスト表

右側

左側

※ 形態素辞書、接続コスト表は簡略化しています

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 23: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

連接コスト

エンジニアになった

エンジニア名詞

に助詞

なっ動詞

た助詞

になっ動詞

3

64

合計13

合計23

BOS EOS

繋がりやすいコスト小

繋がりやすいコスト小

繋がりやすいコスト小

20 3繋がりにくいコスト大 繋がりやすい

コスト小

エンジニア名詞

に助詞

なっ動詞

た助詞

合計13

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 24: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

単語生起コスト

カードローンの

カー名詞

の助詞

合計37

ドローン名詞

カード名詞

合計 19

ローン名詞

2

BOS EOS

1

繋がりやすい

1

繋がりやすい

4繋がりやすい

4

出現しやすいコスト小 6 6

出現しやすいコスト小

6出現しやすいコスト小

出現しにくいコスト大

24

カード名詞

ローン名詞

の助詞

合計 19

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 25: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

連接コスト、単語生起コストの合計が小さいものが、                 より良い形態素の並びである。

形態素解析の仕組み

赤坂でランチを食べて元気になった

赤坂名詞

で助詞

ランチ名詞

を助詞

食べ動詞

て助詞

に助詞

なっ動詞

た助詞

になっ動詞

元名詞

気名詞

BOS EOS

赤名詞

坂名詞

元気名詞

4

3 7

5 5 3 7 5

3

5 6

10

4 5

54

1 43 4 6 3

3

3

1 4 6

34

320

20

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 26: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

いかに検索漏れ、および検索ノイズを減らすかが課題。

検索エンジンの課題

RN C

検索漏れ検索ノイズ

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 27: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-gramの併用による解決

革のショルダーバッグ

ショルダーバッグ革

新しいバッグが欲しいな ユーザ

q=field_ma:バッグ OR field_ng:バッグ

革の のシ ショ ョル ルダバッ ッグ

バッグ

バッ ッグ○×field_ma (形態素解析)

field_ng (N-gram)

ーバダー バッ ッグ

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 28: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-gramの併用による課題

検索漏れを大きく改善できるが、検索ノイズが大量に発生する恐れがある。

意味のない単語で無駄なインデックス領域を消費。

RN C

検索漏れ

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

検索ノイズ

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 29: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

辞書の登録による解決

トークナイザ

革のトートバッグ

トート革

新しいバッグが欲しいな ユーザ バッグ

文章を単語に分かち書き

「バッグ」で検索できるの

表層 品詞 ・・・トート 名詞 ・・・・・・ ・・・ ・・・

バッグ

○日本語辞書

ユーザ辞書

日本語辞書 トークナイザ

革のトートバッグ

トートバッグ革文章を単語に分かち書き

「バッグ」で検索できない×

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 30: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

辞書の登録による課題

全ての単語を登録しきれない。

辞書登録による意図しない単語の分割がされ、検索ノイズが発生することもある。

RN C

検索漏れ

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

検索ノイズ

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 31: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

JapaneseTokenizerのモード設定による解決

1. normalモード

• 登録されている辞書の単語で分割する。

2. searchモード (デフォルト)

• normalモードと同様に単語に分割を行うが、辞書に登録されている単語の複合語で分割可能である場合、さらに細かく分割し、複合語も出力する。

3. extendedモード

• searchモードと同様に複合語の処理を行うが、複合語は出力しない。また、辞書に登録ない未知語をUni-gram(1-gram)でトークナイズする。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 32: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

JapaneseTokenizerのモードの使用羽田空港オリジナルトートバッグ

羽田空港

normalモード

searchモード

オリジナルトートバッグ

羽田空港 空港

オリジナル

羽田

extendedモード

空港 ト羽田 ー ト バ ッ グ

トートバッグオリジナルトートバッグ

オリジナルCopyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 33: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

JapaneseTokenizerのモード設定による課題

searchモード、extendedモードを使用することで手軽に再現率を向上させることが可能だが、全ての問題を解決できない。

RN C

検索漏れ

N 検索結果のドキュメントR 検索できた正解ドキュメントC 検索結果としての正解ドキュメント

検索ノイズ

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 34: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

JapaneseTokenizerの課題

• 形態素解析によって出力される単語は、連接コスト、単語生起コストを基に最適と思われる単語に分割されるが、意図しない分割がされる場合がある。

• 最良と思われる、1つの形態素の連結パターンしか出力できないため、複数の解釈が可能な文字列には対応できない。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 35: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

意図しない分割をされる例

または

外国人参政権↓

外国 / 人 / 参政 / 権Voting rights for foreign residents.

外国 / 人参 / 政権The Carrot Administration of a foreign country.

Carrot ?Some rights reserved by MDGovpics

Some rights reserved by Max Braun

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 36: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

「外国人参政権」の例

外国人参政権

外国

normalモード

人参 政権

外国

searchモード

人参 政権

外国

extendedモード

人参 政権

人 参政 権

期待する

が出力されない

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 37: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

複数の解釈が可能な例

こちら / は / 社長 / 室 / 長谷川 / です

または

こちら / は / 社長 / 室長 / 谷川 / です

こちらは社長室長谷川です

This is Hasegawa, member of President’s Office.

This is Tanigawa, executive secretary of President’s Office.

長谷川です谷川です

Some rights reserved by A ONE-MAN ARMY RETURNS TO NO-MANS' LAND

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 38: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

「こちらは社長室長谷川です」の例

こちらは社長室長谷川です

こちら

normalモード

社長 長谷川

searchモード

extendedモード

は 室

ですこちら 社長 長谷川は 室 長谷 川

ですこちら 社長は 室 長谷 川

期待していない

が出力される

長谷 川

です

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 39: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

searchモード、extendedモードの課題

社長室長谷川

社長名詞

室名詞

長谷川名詞

長谷名詞

川名詞

BOS EOS

社長名詞

室名詞

長谷川名詞

谷川名詞

BOS EOS室長名詞

複合語の分割が可能な場合のみ

できること

複数の分割候補の出力はできない

できないこと

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 40: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの提案

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 41: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-best

こちらは社長室長谷川です

こちら名詞

は助詞

社長名詞

室助詞

長谷川名詞

BOS EOS社名詞

長名詞

です助動詞

室長名詞

谷川名詞

長谷名詞

川名詞

谷名詞

長名詞

5 4

5

7

6

4

8 9

8

1110 117 10

4 3

3

1 1

1

1 4 3

3

3

1 1

4

41

1 1

1

4複数の解釈が可能なテキスト対応したい

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 42: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実装

目的

• 解釈によって異なる複数のパターンでの分割、複合語の分割を可能にし、再現率の向上を目指す。

• N-bestといってもNを直接指定するのではなく、ベストパスからのコスト値の差を指定することで、無理のある分割がされないようにする。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 43: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実装

ゴール

• JapaneseTokenizerにN-best機能を追加する。

• normal、search、extendedの各モードとの併用を可能とする。

• N-best出力のコスト閾値を直接指定、または例文から求め指定可能にする。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 44: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実装仕様

• nbestCost、nbestExamplesパラメータの設定でN-best出力を制御する。

• 0 < nbestCostならN-bestを出力する。nbestCostはN-best出力として許容される最大のコスト差分(allowable cost difference for N-best)を示す。

• 適切なコスト差分を求めるために、nbestExamplesで例文を指定できる。

• 例文からコスト差分を求めることができれば、例文からのコスト差分と直接指定のコスト差分のうち大きな値が有効にする。

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 45: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

サンプル schema.xml

N-bestの実装

<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer type=“index"> ... <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal" nbestCost="2000" nbestExamples="/社長室長谷川-長谷川/社長室長谷川-谷川/" /> ... </analyzer> <analyzer type="query"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal" /> ... </analyzer> </fieldType>

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 46: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実行確認

normalモード

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 47: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実行確認

normalモードかつnbestCost=2000

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 48: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実行確認

normalモードでは「デジタル一眼レフ」は「一眼レフ」で検索できない

×一致

一致しない

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 49: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの実行確認

normalモードかつnbestCost=2000で「デジタル一眼レフ」が「一眼レフ」で検索できる

一致

一致

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 50: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの評価• 評価用データ

• Wikipediaダンプから取得したタイトル (1,541,544タイトル)

• 評価方法

• nbestCostを0から5000まで1000毎に変化させ、 評価用データからトークンを出力

• 出力されたトークンの差分を目視で確認し、 Good、Neutral、Badの3段階でジャッジ

アンパサンド 言語 日本語 地理学 EU (曖昧さ回避) 国の一覧 SandBox パリ ヨーロッパ …

Good : 良い Neutral : 中立 Bad : 悪い

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 51: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの評価

nbestCost 総トークン数総トークン数

nbestCost=0比総出力文字数

総出力文字数nbestCost=0比

N-best出現タイトル数

N-best出現タイトル数/全タイトル比

0 5,362,695 1.000 12,401,591 1.000 0 0

1,000 5,509,840 1.027 12,761,015 1.029 94,950 0.0616

2,000 5,677,682 1.059 13,222,013 1.066 187,636 0.1217

3,000 5,878.931 1.096 13,695,738 1.104 281,788 0.1828

4,000 6,168,215 1.150 14,198,753 1.145 392,367 0.2545

5,000 6,557,197 1.224 14,796,834 1.193 511,730 0.3320

nbestCost N-best出力差分出現タイトル数

N-best出力差分出現タイトル比

ジャッジ数 ジャッジ比

0 0 0 0 0

0 - 1,000 94,950 0.0616 300 0.003160

1,000 - 2,000 100,452 0.0652 300 0.002987

2,000 - 3,000 109,397 0.0710 300 0.002742

3,000 - 4,000 140,501 0.0911 300 0.002135

4,000 - 5,000 180,897 0.1173 300 0.001658

※JapaneseTokenizerのnormalモードで評価

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 52: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの評価指標 - Good

• 複合語が正しい単語で区切られるtitle nbestCost=0 nbestCost=1000

ヒルマン・ミンクス ヒルマン / ・ / ミン / クス ヒルマン / ・ / ミン / ミンクス / クス

岡山県道69号西大寺備前線(おかやまけんどう69ごう さいだいじびぜんせん)

岡山 / 県 / 道 / 69 / 号 / 西大寺 / 備前 / 線 岡山 / 県 / 県道 / 道 / 69 / 号 / 西大寺 / 備前 / 線

ドラッグマスターファイル ドラッグマスターファイル ドラッグ / マスター / ファイル

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 53: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの評価指標 - Neutral

• どちらも誤解析

• 元の結果でも問題ない

title nbestCost=0 nbestCost=1000

鈴木里一郎(すずき さといちろう)

鈴木 / 里 / 一郎 鈴木 / 里 / 一 / 一郎 / 郎

あしたまにあーな あし / たま / に / あー / な あし / たま / たまに / に / あー / な

title nbestCost=0 nbestCost=1000

山田温泉(やまだおんせん)

山田 / 温泉 山田 / 山田温泉 / 温泉

フィルムアウト フィルム / アウト フィルム / フィルムアウト / アウト

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 54: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestの評価指標 - Bad

• ノイズが発生するtitle nbestCost=0 nbestCost=1000

ジャン・ピエール・ランパル ジャン / ・ / ピエール / ・ / ランパル ジャン / ・ / ピエール / ・ / ラン / ランパル / パル

供御職(くごしょく)

供御 / 職 供 / 供御 / 御職 / 職

市川市立高谷中学校(いちかわしりつ こうやちゅうがっこう)

市川 / 市立 / 高谷 / 中学校 市川 / 市立 / 高 / 高谷 / 谷中 / 中学校 / 学校

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 55: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

nbestCostの値の変更前と変更後で、出力に変化が見られたタイトル300件を無作為に抽出して評価。

N-bestの評価結果

nbestCost ジャッジ数 Good Neutral Bad (Good - Bad) / 3000 - 1,000 300 190 30 80 0.37

1,000 - 2,000 300 133 82 85 0.162,000 - 3,000 300 109 60 131 -0.073,000 - 4,000 300 95 34 171 -0.254,000 - 5,000 300 87 48 165 -0.26

-0.150

0.150.3

0.450.6

0 1000 2000 3000 4000 5000

+0.37

+0.16

-0.07

-0.25-0.26

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 56: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

• N-gramとの併用よりも意味のある単語でより細かく分割が可能。

• 複数の解釈が可能な文字列への対応が可能。

N-bestの比較とまとめ長所 短所

形態素解析

非N-best• インデックスサイズが小さい• 検索実行時の処理が速い• 検索結果にノイズが少ない

• インデックス作成に時間がかかる• 辞書が必要• 検索漏れが発生する

N-best• N-gramよりインデックスサイズが小さい• N-gramより検索結果のノイズが少ない• N-gramより検索漏れが多い

• 非N-bestよりインデックスサイズが大きい• 非N-bestより検索結果のノイズが多い• 非N-bestより検索漏れが少ない

N-gram• インデックスの作成が速い• 辞書を必要としない• 検索漏れがない

• インデックスサイズが大きい• 検索実行時の処理が遅い• 検索結果にノイズが多い

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 57: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

Yahoo! JAPAN より皆さまへ

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 58: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

Apache Lucene/Solrの形態素解析の課題を解決したい!

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 59: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestパッチ

LUCENE-6837 https://issues.apache.org/jira/browse/LUCENE-6837

via

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 60: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestパッチの適用# パッチのダウンロード $ curl -L -O https://issues.apache.org/jira/secure/attachment/12766268/LUCENE-6837.patch

# Lucene/Solrのtrunkチェックアウト$ svn co http://svn.apache.org/repos/asf/lucene/dev/trunk lucene-solr

# パッチの適用$ cd lucene-solr$ patch -p0 -E < ../LUCENE-6837.patch

# ivyセットアップ$ ant ivy-bootstrap

# コンパイル $ ant compile

# テスト$ ant test

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 61: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

N-bestパッチの適用 (続き)# Solrパッケージ作成$ cd solr$ ant create-package

# Solrパケージの展開$ cd ../../$ tar zxvf lucene-solr/solr/package/solr-6.0.0-SNAPSHOT.tgz

# サンプルコレクションの準備$ cp -r server/solr/configsets/sample_techproducts_configs server/solr/nbest_sample$ echo "name=nbest_sample" > server/solr/nbest_sample/core.properties$ vi server/solr/nbest_sample/conf/schema.xml

# Solrの起動$ ./bin/solr start -p 8983 -s server/solr

<fieldType name="text_ja_normal_nbest_2000" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer> <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal" nbestCost="2000"/> </analyzer> </fieldType>

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.

Page 62: 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved.