SlideShare a Scribd company logo
2021年3月17日
Hongsub Shin
SAP
Apache Solr検索エンジンにおける日本語Indexing
処理の理解
SAP Inside Track 2021
TOKYO
2
名前: Hongsub Shin
会社: SAP
部門: SAP Customer Experience
役割: Senior Technology Consultant
参加目的:ハンズオン講師、ネットワーキング
Hongsub Shin
SAP Community
のプロファイルを画
像コピー
3
参加者にセッション前質問
1. SAP Commerce Cloud導入プロジェクトにおいてApache Solr検索エンジンの検索品質改善(ヒット率ア
ップなど)のための対策を実施した経験はありますか?
1. 経験が豊富にある
2. 経験したことはあるが、多くはない
3. 経験・機会なし
2. 言語類型論による言語の分類には「膠着語(こうちゃくご)」と呼ばれる分類があります。次のうち、膠
着語に分類される言語はどの言語でしょうか?
1. ドイツ語
2. 日本語
3. 英語
4. 韓国語
4
1. SAP Commerce Cloudの商品検索
2. Apache SolrのIndexing処理における日本語解析
3. SAP Commerce CloudのApache Solr日本語検索改善
4. Wrap Up
Apache Solr検索エンジンにおける日本語Indexing処理の理解
5
SAP Commerce Cloudの商品検索
SAP Commerce Cloudではストアフロント及びBackofficeの商品検索にApache Solr検索エンジインが利用
されています。商品検索のカスタマイズ及び検索品質向上にはApache Solr検索エンジンに対する知識が必要
です。
Product
SAP Commerce Type System Apache Solr Index
Extract Transform Load
Backofficeの商品検索
ストアフロントの商品検索
6
本セッションの内容
 お客様の悩み
 日本語フリーワード検索で商品がヒットしない
 日本語フリーワード検索結果に意図しない商品が表示される
本セッションでは以下の内容を皆様にお伝えします。
• Apache Solr検索における日本語Indexing処理の内容
• 日本語検索の品質向上のための第1ステップ
※ 本日の説明はSAP Commerce 2005バージョン及びApache Solr 8.4バージョンをベースに行います。
7
1. SAP Commerce Cloudの商品検索
2. Apache SolrのIndexing処理における日本語解析
3. SAP Commerce CloudのApache Solr日本語検索改善
4. Wrap Up
Apache Solr検索エンジンにおける日本語Indexing処理の理解
8
Apache SolrのIndexing処理における日本語解析
検索エンジンにおける日本語文章のIndexingは日本語の言語学的特性により「形態素分析」による解析が必
要です。Apache Solrでは辞書ベースの形態素分析ライブラリの「Kuromoji」を利用して日本語文書を解析
・Tokenizingを行います。
 日本語の言語学的特性
• 膠着語(こうちゃくご、英: agglutinative language)の特性を持つ
• 単語に「接頭辞」「接尾辞」などの形態素が付着することで、文章の中での文法関係を示す
• 文章の中で単語の区切りが難しい
• 文章の中で意味のある単語を抽出するためには「形態素分析」が必要
• Apache Solrでは「Kuromoji」日本語解析ライブラリが使われる
9
Apache Solrの日本語解析モジュール
Apache Solrに含まれている「Kuromoji」日本語解析ライブラリは「辞書」を利用して単語を抽出する
TokenzerとTokenizing後のフィルターリング・加工を実施するための複数のFilterで構成されます。
 JapaneseTokenizer
• 辞書(単語とその品詞のリスト)を利用して文章の中から単語の一覧を抽出
• 辞書の種類
• 標準辞書:Kuromojiに標準で内蔵している辞書
• ユーザー辞書:ユーザーのカスタム辞書(設定でカスタム辞書ファイルを指定可能)
 Filter
• Tokenizerが抽出した単語一覧の各単語を対象に後処理を実施
10
Apache Solrの日本語解析モジュール(フィルター)
Apache SolrのKuromoji形態素分析ライブラリは以下のフィルターを提供します。
Filter 機能 フィルター適用例 SAP Commerce
標準利用
JapaneseIterationMarkCharFilter 「踊り字」で略された単語を元の状態に変換 時々 → 時時 ×
JapaneseBaseFormFilter 活用によって語尾変化された単語を元の形に
変換
描き → 描く ○
JapanesePartOfSpeechStopFilter 単語の品詞で「使わない品詞設定」された単
語を除外
・助動詞は除外する設定の場合
描きます:描く(動詞)+ます(助動詞)
→ 「ます」はIndexing対処から除外
○
JapaneseKatakanaStemFilter カタカナ単語が長音記号(ー)で終わる、か
つ単語の長さが指定された長さ以上の場合、
最後の長音記号を削除
・長さ指定が「4」の場合
コヒー → コヒー
サーバー → サーバ
○
JapaneseReadingFormFilter 単語の表現を読み方(カタカナ・ローマ字)
に変換
寿司 → スシ
寿司 → sushi
×
JapaneseNumberFilter 日本語の数字表現(漢数字)をアラビア数字
表現に変更
ー○○○ → 1000 ×
11
SAP Commerce CloudのApache Solr Index Schema定義
SAP Commerceの場合、各フィルドタイプに対する言語解析設定は「schema.xml」ファイルで定義されて
います。他言語対応が必要なテキスト文章がIndexingされるデータタイプについては対応する各言語別に解
析で使われるTokenizerやFilterが設定されています。
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" />
<filter class="solr.JapaneseBaseFormFilterFactory" />
…
</analyzer>
<analyzer type="query">
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" />
<filter class="solr.JapaneseBaseFormFilterFactory" />
…
</analyzer>
</fieldType>
日本語テキストフィールド(text_ja型)の設定例
 使用されるオーぺレーション(Indexing, Query文)毎に定義されています
• 「analyzer type=“index”」:Indexing処理に利用される解析ルール設定
• 「analyzer type=“query”」:Query処理に(検索語処理)利用される解析ルール設定
12
SAP Commerce Cloudの日本語Solr Indexフィールド型定義
SAP CommerceのApache Solr Schema定義における日本語解析ルール定義は以下となります。
処理順 Tokenizer / Filter 日本語専用
区分
機能
1 JapaneseTokenizer 日本語専用 「踊り字」で略された単語を元の状態に変換
2 JapaneseBaseFormFilter 日本語専用 活用によって語尾変化された単語を元の形に変換
3 JapanesePartOfSpeechStopFilter 日本語専用 単語の品詞で「使わない品詞設定」された単語を除外
4 CJKWidthFilter 汎用 全角ASCII文字を該当する半角ASCII文字に変換
半角カタカナ文字を全角カタカナに変換
5 ManagedStopFilter 汎用 登録されている禁止語リストをベースに禁止語を除外
6 LowerCaseFilter 汎用 アルファベット大文字を小文字に変換
7 KeywordMarkerFilter 汎用 登録されているキーワード一覧に記載されている単語の場合、Stemフィルターによる
変換から保護するためにマーキング
8 JapaneseKatakanaStemFilter 日本語専用 カタカナ単語が長音記号(ー)で終わる、かつ単語の長さが指定された長さ以上の場合
、最後の長音記号を削除
9 RemoveDuplicatesTokenFilter 汎用 解析による抽出された単語一覧から重複を取り除く
 「analyzer type=“index”」:Indexing処理に利用される解析ルール設定
13
SAP Commerce Cloudの日本語Solr Indexフィールド型定義
SAP CommerceのApache Solr Schema定義における日本語解析ルール定義は以下となります。
処理順 Tokenizer / Filter 日本語専用
区分
機能
1 JapaneseTokenizer 日本語専用 「踊り字」で略された単語を元の状態に変換
2 JapaneseBaseFormFilter 日本語専用 活用によって語尾変化された単語を元の形に変換
3 JapanesePartOfSpeechStopFilter 日本語専用 単語の品詞で「使わない品詞設定」された単語を除外
4 CJKWidthFilter 汎用 全角ASCII文字を該当する半角ASCII文字に変換
半角カタカナ文字を全角カタカナに変換
5 ManagedSynonymGraphFilter 汎用 登録されている類義語リストをベースに単語を登録された類義語(複数可)に置換
6 ManagedStopFilter 汎用 登録されている禁止語リストをベースに禁止語を除外
7 LowerCaseFilter 汎用 アルファベット大文字を小文字に変換
8 KeywordMarkerFilter 汎用 登録されているキーワード一覧に記載されている単語の場合、次のStemフィルターに
よる変換から保護するためにマーキング
9 JapaneseKatakanaStemFilter 日本語専用 カタカナ単語が長音記号(ー)で終わる、かつ単語の長さが指定された長さ以上の場合
、最後の長音記号を削除
10 RemoveDuplicatesTokenFilter 汎用 解析による抽出された単語一覧から重複を取り除く
 「analyzer type=“query”」: Query処理に(検索語処理)利用される解析ルール設定
14
Apache Solr Admin画面を利用したIndex値分析
Apache Solrの日本語解析ルール設定はApache Solrの管理画面でシミュレーションできます。
① Core選択
② Analysis
メニュー選択
③ 日本語テキストの場合、
「text_ja」を選択
analyzer type=“index”の
設定が適用される
analyzer type=“query”の
設定が適用される
15
Apache Solrによる日本語文章解析の例
SAP CommerceのApache Solr Schema定義を利用して日本語文章を解析すると次のステップで単語が抽出
され、Indexingされます。
処理順 Tokenizer / Filter
1 JapaneseTokenizer
2 JapaneseBaseFormFilter
3 JapanesePartOfSpeechStopFilter
4 CJKWidthFilter
5 ManagedStopFilter
6 LowerCaseFilter
7 KeywordMarkerFilter
8 JapaneseKatakanaStemFilter
9 RemoveDuplicatesTokenFilter
 例文: サーバーが起動しました
16
Apache Solrによる日本語文章解析の例
処理順 Tokenizer / Filter
1 JapaneseTokenizer
2 JapaneseBaseFormFilter
3 JapanesePartOfSpeechStopFilter
4 CJKWidthFilter
5 ManagedStopFilter
6 LowerCaseFilter
7 KeywordMarkerFilter
8 JapaneseKatakanaStemFilter
9 RemoveDuplicatesTokenFilter
 例文: サーバーが起動しました
17
Apache Solrによる日本語文章解析の例
文章「サーバーが起動しました」は最終的に「サーバ、起動、する」の3単語に分解されます。
処理順 Tokenizer / Filter
1 JapaneseTokenizer
2 JapaneseBaseFormFilter
3 JapanesePartOfSpeechStopFilter
4 CJKWidthFilter
5 ManagedStopFilter
6 LowerCaseFilter
7 KeywordMarkerFilter
8 JapaneseKatakanaStemFilter
9 RemoveDuplicatesTokenFilter
 例文: サーバーが起動しました
18
1. SAP Commerce Cloudの商品検索とApache Solr
2. Apache SolrのIndexing処理における日本語解析
3. SAP Commerce CloudのApache Solr日本語検索改善
4. Wrap Up
Apache Solr検索エンジンにおける日本語Indexing処理の理解
19
Apache Solr日本語検索の品質改善の第1ステップ
SAP Commerce CloudのApache Solr設定はIndexing処理における日本語解析のためにApache Solrに含ま
れている「Kuromoji」を利用しています。Kuromojiは辞書基盤の形態素分析アルゴリズムを採用しているた
め、辞書の品質が検索結果に影響を及ぼします。
 辞書基盤の形態素分析のメリットとデメリット
• メリット
• 検索結果にノイズが少ない
• デメリット
• 定義された辞書を利用するため、辞書にない単語は検出できない
 SAP Commerce CloudにおけるApache Solr日本語検索の品質改善の第1ステップ
 ユーザー辞書の運用
 類義語(Synonym)の運用
20
ユーザー辞書の運用
辞書ベースの形態素分析アルゴリズムは辞書にない単語の検出ができません。そのため、検索品質を向上さ
せるためには「ユーザー辞書」の運用が必要となります。
 「JapaneseTokenizer」にユーザー辞書を設定
• schema.xmlの修正が必要
• JapaneseTokenizerの「userDictionary」設定
• ユーザー辞書ファイルの作成
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search"
userDictionary=“lang/userdict_ja.txt”/>
<filter class="solr.JapaneseBaseFormFilterFactory" />
…
</analyzer>
</fieldType>
schema.xmlの設定例 Apache Solr設定変更のためのFolder構造
21
ユーザー辞書の運用
修正した「schema.xml」及び作成した「ユーザー辞書」をSAP Commerce CloudのApache Solrに適用す
うるためには以下の作業が必要です。
 Code Repository上のApache Solrカスタマイズ用の資材管理
 Build Manifest (manifest.json)の設定追加
"useConfig": {
"properties": [
...
],
"solr": {
"location": "/solr-customize"
}
}
Build Manifestの設定例
22
類義語(Synonym)の運用
SAP Commerce Backofficeでは類義語一覧を登録する機能を提供します。類義語を適切に管理することによ
って検索品質の改善効果が図れます。
SAP Commerce Backoffice画面での類義語登録 Apache Solrの検索後分析での利用
23
1. SAP Commerce Cloudの商品検索
2. Apache SolrのIndexing処理における日本語解析
3. SAP Commerce CloudのApache Solr日本語検索改善
4. Wrap Up
Apache Solr検索エンジンにおける日本語Indexing処理の理解
24
テーマ:チャレンジしよう! - 行動をおこすキッカケに
 Apache Solrにおける日本語検索のIndexing処理は辞書基盤の「形態素分析」が利用されています。
• 辞書を利用する形態素分析は辞書にない単語に弱いデメリットがあります。
 日本語検索の品質を向上させる第1ステップとして次の運用が効果的です。
• ユーザー辞書の運用
• 類義語(Synonym)の運用

More Related Content

Similar to Sit tokyo2021 solr_japanese_tokenizer_basics

【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
SFDG ROOKIES
 
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa HanakiInsight Technology, Inc.
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
Takashi Hatamoto
 
Sapporo tech bar 21
Sapporo tech bar 21Sapporo tech bar 21
Sapporo tech bar 21
Insight Technology, Inc.
 
20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE
SFDG ROOKIES
 
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
Yasuko Sekiguchi
 
20190731ルーキー会 × TERAKOYAFORCE
20190731ルーキー会 × TERAKOYAFORCE20190731ルーキー会 × TERAKOYAFORCE
20190731ルーキー会 × TERAKOYAFORCE
SFDG ROOKIES
 
ここからはじめるAction Script 3.0 入門前
ここからはじめるAction Script 3.0 入門前ここからはじめるAction Script 3.0 入門前
ここからはじめるAction Script 3.0 入門前Yusuke Kamo
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
yoyamasaki
 
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォームSAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
Makoto Sugishita
 
sitTokyo2022_Dev_05_Kawanabe.pptx
sitTokyo2022_Dev_05_Kawanabe.pptxsitTokyo2022_Dev_05_Kawanabe.pptx
sitTokyo2022_Dev_05_Kawanabe.pptx
ssuser5bff5a
 
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
SFDG ROOKIES
 
DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望
Takashi Hatamoto
 
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
SFDG ROOKIES
 
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
オラクルエンジニア通信
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop Daisuke Sugai
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
Shinichi Matsuda
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
Kazuko Itoda
 
Salesforce integration architecture 20200529
Salesforce integration architecture 20200529Salesforce integration architecture 20200529
Salesforce integration architecture 20200529
Hiroki Iida
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
 

Similar to Sit tokyo2021 solr_japanese_tokenizer_basics (20)

【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
 
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
 
Sapporo tech bar 21
Sapporo tech bar 21Sapporo tech bar 21
Sapporo tech bar 21
 
20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE
 
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
SAP Inside Track Tokyo 2019 Data Intelligence の展望とMLプロジェクト事例
 
20190731ルーキー会 × TERAKOYAFORCE
20190731ルーキー会 × TERAKOYAFORCE20190731ルーキー会 × TERAKOYAFORCE
20190731ルーキー会 × TERAKOYAFORCE
 
ここからはじめるAction Script 3.0 入門前
ここからはじめるAction Script 3.0 入門前ここからはじめるAction Script 3.0 入門前
ここからはじめるAction Script 3.0 入門前
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォームSAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
 
sitTokyo2022_Dev_05_Kawanabe.pptx
sitTokyo2022_Dev_05_Kawanabe.pptxsitTokyo2022_Dev_05_Kawanabe.pptx
sitTokyo2022_Dev_05_Kawanabe.pptx
 
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
 
DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望
 
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
Swtt2018 sfdgr1 Developer Group ルーキー会が教える!これから始めるSalesforce開発
 
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
Salesforce integration architecture 20200529
Salesforce integration architecture 20200529Salesforce integration architecture 20200529
Salesforce integration architecture 20200529
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
 

Recently uploaded

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 

Recently uploaded (12)

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 

Sit tokyo2021 solr_japanese_tokenizer_basics

  • 2. 2 名前: Hongsub Shin 会社: SAP 部門: SAP Customer Experience 役割: Senior Technology Consultant 参加目的:ハンズオン講師、ネットワーキング Hongsub Shin SAP Community のプロファイルを画 像コピー
  • 3. 3 参加者にセッション前質問 1. SAP Commerce Cloud導入プロジェクトにおいてApache Solr検索エンジンの検索品質改善(ヒット率ア ップなど)のための対策を実施した経験はありますか? 1. 経験が豊富にある 2. 経験したことはあるが、多くはない 3. 経験・機会なし 2. 言語類型論による言語の分類には「膠着語(こうちゃくご)」と呼ばれる分類があります。次のうち、膠 着語に分類される言語はどの言語でしょうか? 1. ドイツ語 2. 日本語 3. 英語 4. 韓国語
  • 4. 4 1. SAP Commerce Cloudの商品検索 2. Apache SolrのIndexing処理における日本語解析 3. SAP Commerce CloudのApache Solr日本語検索改善 4. Wrap Up Apache Solr検索エンジンにおける日本語Indexing処理の理解
  • 5. 5 SAP Commerce Cloudの商品検索 SAP Commerce Cloudではストアフロント及びBackofficeの商品検索にApache Solr検索エンジインが利用 されています。商品検索のカスタマイズ及び検索品質向上にはApache Solr検索エンジンに対する知識が必要 です。 Product SAP Commerce Type System Apache Solr Index Extract Transform Load Backofficeの商品検索 ストアフロントの商品検索
  • 6. 6 本セッションの内容  お客様の悩み  日本語フリーワード検索で商品がヒットしない  日本語フリーワード検索結果に意図しない商品が表示される 本セッションでは以下の内容を皆様にお伝えします。 • Apache Solr検索における日本語Indexing処理の内容 • 日本語検索の品質向上のための第1ステップ ※ 本日の説明はSAP Commerce 2005バージョン及びApache Solr 8.4バージョンをベースに行います。
  • 7. 7 1. SAP Commerce Cloudの商品検索 2. Apache SolrのIndexing処理における日本語解析 3. SAP Commerce CloudのApache Solr日本語検索改善 4. Wrap Up Apache Solr検索エンジンにおける日本語Indexing処理の理解
  • 8. 8 Apache SolrのIndexing処理における日本語解析 検索エンジンにおける日本語文章のIndexingは日本語の言語学的特性により「形態素分析」による解析が必 要です。Apache Solrでは辞書ベースの形態素分析ライブラリの「Kuromoji」を利用して日本語文書を解析 ・Tokenizingを行います。  日本語の言語学的特性 • 膠着語(こうちゃくご、英: agglutinative language)の特性を持つ • 単語に「接頭辞」「接尾辞」などの形態素が付着することで、文章の中での文法関係を示す • 文章の中で単語の区切りが難しい • 文章の中で意味のある単語を抽出するためには「形態素分析」が必要 • Apache Solrでは「Kuromoji」日本語解析ライブラリが使われる
  • 9. 9 Apache Solrの日本語解析モジュール Apache Solrに含まれている「Kuromoji」日本語解析ライブラリは「辞書」を利用して単語を抽出する TokenzerとTokenizing後のフィルターリング・加工を実施するための複数のFilterで構成されます。  JapaneseTokenizer • 辞書(単語とその品詞のリスト)を利用して文章の中から単語の一覧を抽出 • 辞書の種類 • 標準辞書:Kuromojiに標準で内蔵している辞書 • ユーザー辞書:ユーザーのカスタム辞書(設定でカスタム辞書ファイルを指定可能)  Filter • Tokenizerが抽出した単語一覧の各単語を対象に後処理を実施
  • 10. 10 Apache Solrの日本語解析モジュール(フィルター) Apache SolrのKuromoji形態素分析ライブラリは以下のフィルターを提供します。 Filter 機能 フィルター適用例 SAP Commerce 標準利用 JapaneseIterationMarkCharFilter 「踊り字」で略された単語を元の状態に変換 時々 → 時時 × JapaneseBaseFormFilter 活用によって語尾変化された単語を元の形に 変換 描き → 描く ○ JapanesePartOfSpeechStopFilter 単語の品詞で「使わない品詞設定」された単 語を除外 ・助動詞は除外する設定の場合 描きます:描く(動詞)+ます(助動詞) → 「ます」はIndexing対処から除外 ○ JapaneseKatakanaStemFilter カタカナ単語が長音記号(ー)で終わる、か つ単語の長さが指定された長さ以上の場合、 最後の長音記号を削除 ・長さ指定が「4」の場合 コヒー → コヒー サーバー → サーバ ○ JapaneseReadingFormFilter 単語の表現を読み方(カタカナ・ローマ字) に変換 寿司 → スシ 寿司 → sushi × JapaneseNumberFilter 日本語の数字表現(漢数字)をアラビア数字 表現に変更 ー○○○ → 1000 ×
  • 11. 11 SAP Commerce CloudのApache Solr Index Schema定義 SAP Commerceの場合、各フィルドタイプに対する言語解析設定は「schema.xml」ファイルで定義されて います。他言語対応が必要なテキスト文章がIndexingされるデータタイプについては対応する各言語別に解 析で使われるTokenizerやFilterが設定されています。 <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" /> <filter class="solr.JapaneseBaseFormFilterFactory" /> … </analyzer> <analyzer type="query"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" /> <filter class="solr.JapaneseBaseFormFilterFactory" /> … </analyzer> </fieldType> 日本語テキストフィールド(text_ja型)の設定例  使用されるオーぺレーション(Indexing, Query文)毎に定義されています • 「analyzer type=“index”」:Indexing処理に利用される解析ルール設定 • 「analyzer type=“query”」:Query処理に(検索語処理)利用される解析ルール設定
  • 12. 12 SAP Commerce Cloudの日本語Solr Indexフィールド型定義 SAP CommerceのApache Solr Schema定義における日本語解析ルール定義は以下となります。 処理順 Tokenizer / Filter 日本語専用 区分 機能 1 JapaneseTokenizer 日本語専用 「踊り字」で略された単語を元の状態に変換 2 JapaneseBaseFormFilter 日本語専用 活用によって語尾変化された単語を元の形に変換 3 JapanesePartOfSpeechStopFilter 日本語専用 単語の品詞で「使わない品詞設定」された単語を除外 4 CJKWidthFilter 汎用 全角ASCII文字を該当する半角ASCII文字に変換 半角カタカナ文字を全角カタカナに変換 5 ManagedStopFilter 汎用 登録されている禁止語リストをベースに禁止語を除外 6 LowerCaseFilter 汎用 アルファベット大文字を小文字に変換 7 KeywordMarkerFilter 汎用 登録されているキーワード一覧に記載されている単語の場合、Stemフィルターによる 変換から保護するためにマーキング 8 JapaneseKatakanaStemFilter 日本語専用 カタカナ単語が長音記号(ー)で終わる、かつ単語の長さが指定された長さ以上の場合 、最後の長音記号を削除 9 RemoveDuplicatesTokenFilter 汎用 解析による抽出された単語一覧から重複を取り除く  「analyzer type=“index”」:Indexing処理に利用される解析ルール設定
  • 13. 13 SAP Commerce Cloudの日本語Solr Indexフィールド型定義 SAP CommerceのApache Solr Schema定義における日本語解析ルール定義は以下となります。 処理順 Tokenizer / Filter 日本語専用 区分 機能 1 JapaneseTokenizer 日本語専用 「踊り字」で略された単語を元の状態に変換 2 JapaneseBaseFormFilter 日本語専用 活用によって語尾変化された単語を元の形に変換 3 JapanesePartOfSpeechStopFilter 日本語専用 単語の品詞で「使わない品詞設定」された単語を除外 4 CJKWidthFilter 汎用 全角ASCII文字を該当する半角ASCII文字に変換 半角カタカナ文字を全角カタカナに変換 5 ManagedSynonymGraphFilter 汎用 登録されている類義語リストをベースに単語を登録された類義語(複数可)に置換 6 ManagedStopFilter 汎用 登録されている禁止語リストをベースに禁止語を除外 7 LowerCaseFilter 汎用 アルファベット大文字を小文字に変換 8 KeywordMarkerFilter 汎用 登録されているキーワード一覧に記載されている単語の場合、次のStemフィルターに よる変換から保護するためにマーキング 9 JapaneseKatakanaStemFilter 日本語専用 カタカナ単語が長音記号(ー)で終わる、かつ単語の長さが指定された長さ以上の場合 、最後の長音記号を削除 10 RemoveDuplicatesTokenFilter 汎用 解析による抽出された単語一覧から重複を取り除く  「analyzer type=“query”」: Query処理に(検索語処理)利用される解析ルール設定
  • 14. 14 Apache Solr Admin画面を利用したIndex値分析 Apache Solrの日本語解析ルール設定はApache Solrの管理画面でシミュレーションできます。 ① Core選択 ② Analysis メニュー選択 ③ 日本語テキストの場合、 「text_ja」を選択 analyzer type=“index”の 設定が適用される analyzer type=“query”の 設定が適用される
  • 15. 15 Apache Solrによる日本語文章解析の例 SAP CommerceのApache Solr Schema定義を利用して日本語文章を解析すると次のステップで単語が抽出 され、Indexingされます。 処理順 Tokenizer / Filter 1 JapaneseTokenizer 2 JapaneseBaseFormFilter 3 JapanesePartOfSpeechStopFilter 4 CJKWidthFilter 5 ManagedStopFilter 6 LowerCaseFilter 7 KeywordMarkerFilter 8 JapaneseKatakanaStemFilter 9 RemoveDuplicatesTokenFilter  例文: サーバーが起動しました
  • 16. 16 Apache Solrによる日本語文章解析の例 処理順 Tokenizer / Filter 1 JapaneseTokenizer 2 JapaneseBaseFormFilter 3 JapanesePartOfSpeechStopFilter 4 CJKWidthFilter 5 ManagedStopFilter 6 LowerCaseFilter 7 KeywordMarkerFilter 8 JapaneseKatakanaStemFilter 9 RemoveDuplicatesTokenFilter  例文: サーバーが起動しました
  • 17. 17 Apache Solrによる日本語文章解析の例 文章「サーバーが起動しました」は最終的に「サーバ、起動、する」の3単語に分解されます。 処理順 Tokenizer / Filter 1 JapaneseTokenizer 2 JapaneseBaseFormFilter 3 JapanesePartOfSpeechStopFilter 4 CJKWidthFilter 5 ManagedStopFilter 6 LowerCaseFilter 7 KeywordMarkerFilter 8 JapaneseKatakanaStemFilter 9 RemoveDuplicatesTokenFilter  例文: サーバーが起動しました
  • 18. 18 1. SAP Commerce Cloudの商品検索とApache Solr 2. Apache SolrのIndexing処理における日本語解析 3. SAP Commerce CloudのApache Solr日本語検索改善 4. Wrap Up Apache Solr検索エンジンにおける日本語Indexing処理の理解
  • 19. 19 Apache Solr日本語検索の品質改善の第1ステップ SAP Commerce CloudのApache Solr設定はIndexing処理における日本語解析のためにApache Solrに含ま れている「Kuromoji」を利用しています。Kuromojiは辞書基盤の形態素分析アルゴリズムを採用しているた め、辞書の品質が検索結果に影響を及ぼします。  辞書基盤の形態素分析のメリットとデメリット • メリット • 検索結果にノイズが少ない • デメリット • 定義された辞書を利用するため、辞書にない単語は検出できない  SAP Commerce CloudにおけるApache Solr日本語検索の品質改善の第1ステップ  ユーザー辞書の運用  類義語(Synonym)の運用
  • 20. 20 ユーザー辞書の運用 辞書ベースの形態素分析アルゴリズムは辞書にない単語の検出ができません。そのため、検索品質を向上さ せるためには「ユーザー辞書」の運用が必要となります。  「JapaneseTokenizer」にユーザー辞書を設定 • schema.xmlの修正が必要 • JapaneseTokenizerの「userDictionary」設定 • ユーザー辞書ファイルの作成 <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary=“lang/userdict_ja.txt”/> <filter class="solr.JapaneseBaseFormFilterFactory" /> … </analyzer> </fieldType> schema.xmlの設定例 Apache Solr設定変更のためのFolder構造
  • 21. 21 ユーザー辞書の運用 修正した「schema.xml」及び作成した「ユーザー辞書」をSAP Commerce CloudのApache Solrに適用す うるためには以下の作業が必要です。  Code Repository上のApache Solrカスタマイズ用の資材管理  Build Manifest (manifest.json)の設定追加 "useConfig": { "properties": [ ... ], "solr": { "location": "/solr-customize" } } Build Manifestの設定例
  • 23. 23 1. SAP Commerce Cloudの商品検索 2. Apache SolrのIndexing処理における日本語解析 3. SAP Commerce CloudのApache Solr日本語検索改善 4. Wrap Up Apache Solr検索エンジンにおける日本語Indexing処理の理解
  • 24. 24 テーマ:チャレンジしよう! - 行動をおこすキッカケに  Apache Solrにおける日本語検索のIndexing処理は辞書基盤の「形態素分析」が利用されています。 • 辞書を利用する形態素分析は辞書にない単語に弱いデメリットがあります。  日本語検索の品質を向上させる第1ステップとして次の運用が効果的です。 • ユーザー辞書の運用 • 類義語(Synonym)の運用