10月
3
Lucene 版 #Kuromoji のコードを読む会(辞書ビルダー編)
Solr, Elasticsearch の日本語検索の中身を覗く
主催 : Tomoko Uchida
イベントの説明
概要
Apache Solr や Elasticsearch の日本語検索で使われている,Apache Lucene 付属の日本語形態素解析器 Kuromoji (https://github.com/apache/lucene-solr/tree/master/lucene/analysis/kuromoji) のソースコードをみんなで読む会です。
進め方は,@moco_beta がソースコード解説の体で話しつつ,参加者からの質問やつっこみを交えながら知見が共有できればいいなと思っています。1回で読み切るには分量が多いので,今回はシステム辞書ビルダーとエンコーダー/デコーダー周り(BinaryDictionary + DictionaryBuilder + FST)に絞って資料を作ります。省メモリかつ高速な解析を実現するために実装上どんな工夫がおこなわれているのか,を中心に見ていきます。
また時間が許せば,いま進行中のこの JIRA Issue について紹介と,展望(野望?)を語ります。
LUCENE-8816: Decouple Kuromoji's morphological analyser and its dictionary
会場提供は(株)サムライズム様 です。
タイムテーブル
※目安です。当日の進み具合に合わせて調整します。
時間 | 内容 |
---|---|
18:45 | 開場 |
19:00 ~ 19:10 | 趣旨説明的な |
19:10 ~ 19:40 | 前半戦 - 準備,FST周りを眺める |
19:40 ~ 19:50 | 休憩 |
19:50 ~ 20:30 | 後半戦 - 単語エントリのエンコードを眺める,他 |
20:30 | 解散 |
お品書き
- コードを読む前に知っておきたいこと
- Kuromoji システム辞書のアーキテクチャ,バイナリ辞書のありか
- 見出し語索引(FST)の設計,シリアライズ,データ圧縮の工夫
- 単語エントリのフォーマット,シリアライズ,データ圧縮の工夫
- デコーディングについて
対象者
こんな方が楽しめるかもしれませ ん。
- 業務 or 趣味で Kuromoji を使っているが中身(実装)に興味がある/改造したい/改造している
- Kuromoji の運用で困っていることがあり相談したい
- Lucene, Solr の開発に参加/コントリビュートしてみたい
- Solr, Elasticsearch における, out-of-the-box な日本語検索の未来に興味がある
※基礎的な形態素解析のアルゴリズム解説等は行いません。そのあたりは Web 上に良い資料がたくさんあるので,必要な方は事前に調べてみてください。
準備
ソースコードを読むので,Java の知識はあるほうが良いでしょう。
必須ではありませんが,Lucene/Solr のコードをチェックアウトして,手元の IDE (IntelliJ IDEA or Eclipse がオススメ) で確認できるように準備しておくとより楽しいと思います。
https://github.com/apache/lucene-solr
JDK 11 (以上)と Ant が必要です。入っていない場合は ここ と ここ からインストールしてください。または SDKMAN でもOK。
$ git clone https://github.com/apache/lucene-solr.git $ cd lucene-solr $ ant ivy-bootstrap $ ant idea # IDEA 使いの方 $ ant eclipse # Eclipse 使いの方
発表者について
Tomoko Uchida : @moco_beta
検索が好きなプログラマ。Apache Lucene のサンデーコミッター。Apache Solr 入門3版共著者。最近は Elasticsearch と戯れている。