SlideShare a Scribd company logo
Javaでつくる本格形態素解析器
ワークスアプリケーションズ株式会社
ワークス徳島人工知能NLP研究所
高岡 一馬
自己紹介
高岡 一馬
株式会社
ワークスアプリケーションズ
ワークス徳島人工知能NLP研究所
元 茶筌メンテナ
過去4つの形態素解析
器開発にたずさわる
コーパス開発
かな漢字変換
テキストマイニング
3
とは形態素解析
4
な の伝統的 自然言語処理 階層
応用技術 情報検索 翻訳 日本語校正
要約 レビュー解析 英文校正
情報抽出
Web応用
対話
要素技術 言い換え 語義曖昧性解消
固有表現抽出 照応解析 知識獲得
基礎技術 形態素解析 構文解析 述語項構造解析
Project Next NLPの資料を一部改変
5
の形態素解析 3要素
Segmentation
– テキストを分割
– にわとり/は/飛ば/ない
Stemming (Lemmatization)
– 語形を辞書形に
– 飛ば → 飛ぶ
Part-of-speech Tagging
– 品詞を付与
– にわとり(名詞)/ は(助詞)/ 飛ば(動詞)/ ない(助動詞)
6
その の他 機能
表記正規化
– 送りがな
– 異体字
み読 付与
– 読みがな、発音
– 連濁
派生
– 可能動詞
– 自動詞、他動詞
● 申し込み
● 申込み
● 申込
● 高岡
● 髙岡
● 書ける
● 書く
● 開く
● 開ける
7
形態素解析器
Sudachi
8
Sudachiの特長
の の複数 分割単位 併用
– 必要に応じて切り替え
– 形態素解析と固有表現
抽出の融合
の多数 収録語彙
– UniDicとNEologdを
ベースに調整
なメンテナンス継続的
– 10年以上はつづけたい
のプラグイン機能 化
– 自由に機能追加
との同義語辞書 連携
– OSSで公開予定
9
Sudachiと システムとの他 比較
Sudachi MeCab kuromoji
分割単位の併用
○ × △¹
文字正規化、表記正規化
○ × △²
まとめ上げ、補正処理
○ × △²
複数ユーザー辞書の利用
○ ○ ×
省メモリ
◎ △ ○
解析精度
○ ○ ○
解析速度
△ ○ △
1) n-best解による近似 2) Luceneフィルター併用
10
C単位
医薬品安全管理責任者
B単位
医薬品 安全 管理 責任者
A単位
医薬 品 安全 管理 責任 者
の を複数 分割単位 出力
分割単位
– A単位 UniDic短単位相当
– B単位 中間ぐらいの単位
– C単位 固有表現
それぞれの で や が単位 出力 再分割 可能
11
表記正規化
送りちがい 打込む
→
打ち込む
字種 かつ丼
→
カツ丼
異体字 附属
→
付属
誤用 シュミレーション
→
シミュレーション
縮約 ちゃあ
→
ては
活用 歩か(ない)
→
歩く
派生 書ける
→
書く
12
プラグイン
ステップをフックして を し む各処理 処理 差 込
– 入力テキスト 異体字統制、表記補正
– ラティス 未知語処理、品詞接続禁制
– 出力解 数詞正規化、人名処理
ユーザーが にプラグインを できる自由 作成
– 独自の未知語処理
– 品番、型式などの抽出
13
の メモリ大規模使用時 省 化
イメージをメモリ で辞書 上 共有
– インスタンス間、プロセス間で共有
JVM1 JVM2
14
メモリの省 工夫
15
の辞書 構造
メモリのボトルネックは辞書
– 約270万語を収録
– 今後もふえる予定
メモリかつ に省 高速 検索
– Darts-clone(ダブル配列)のJava cloneを作成
– https://github.com/s-yata/darts-clone
まだまだ の はありそう削減 余地
16
Memory Mapped Fileの利用
プロセス で メモリ を間 物理 空間 共有
仮想メモリ空間
物理メモリ空間
ディスク
プロセスA プロセスB
17
のメモリ実際 使用量
MB
18
Memory Mappingの代償
Javaっぽい がつくれない構造
– ファイルイメージがそのままメモリ上に
読み出すたびにStringに仕立てなおす
き みができない書 込
– Read OnlyでopenするとMapMode.PRIVATEにできない
– 一部だけメモリを確保して差し替える
03 71 67 ac 4e fd 90
文字列長 東 京 都
19
いろいろ公開中
Sudachi
– https://github.com/WorksApplications/Sudachi
Elasticsearch プラグイン
– https://github.com/WorksApplications/elasticsearch-sudachi
SudachiPy (Python clone)
– https://github.com/WorksApplications/SudachiPy
SyncThought でのご様 利用例
– https://www.syncsearch.jp/

More Related Content

PDF
形態素解析
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
ドメイン駆動設計 本格入門
PDF
Marp Tutorial
PDF
オブジェクト指向の設計と実装の学び方のコツ
PDF
[DL輪読会]Attention Is All You Need
PDF
株式会社フィックスターズの会社説明資料(抜粋)
PPTX
WayOfNoTrouble.pptx
形態素解析
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
ドメイン駆動設計 本格入門
Marp Tutorial
オブジェクト指向の設計と実装の学び方のコツ
[DL輪読会]Attention Is All You Need
株式会社フィックスターズの会社説明資料(抜粋)
WayOfNoTrouble.pptx

What's hot (20)

PDF
Union find(素集合データ構造)
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PPTX
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PPTX
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
PDF
いまさら聞けない!CUDA高速化入門
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PDF
マルチコアを用いた画像処理
PDF
ドメイン駆動設計の正しい歩き方
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
PDF
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
PDF
プログラミングコンテストでの動的計画法
PPTX
MLOps入門
PDF
BERT入門
PPTX
ZDD基礎
PDF
Recurrent Neural Networks
PDF
全力解説!Transformer
PDF
ソーシャルゲームのためのデータベース設計
PPTX
Redisの特徴と活用方法について
Union find(素集合データ構造)
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
ソーシャルゲーム案件におけるDB分割のPHP実装
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
いまさら聞けない!CUDA高速化入門
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
マルチコアを用いた画像処理
ドメイン駆動設計の正しい歩き方
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
プログラミングコンテストでの動的計画法
MLOps入門
BERT入門
ZDD基礎
Recurrent Neural Networks
全力解説!Transformer
ソーシャルゲームのためのデータベース設計
Redisの特徴と活用方法について
Ad

More from Works Applications (10)

PDF
Gitで安定マスターブランチを手に入れる
PDF
新入社員が多い中で効果的なレビューを行うための方法 レビューの準備からフィードバックまでの工夫
PDF
RDB脳でCassandra / MSAを始めた僕達が、分散Drivenなトランザクション管理にたどり着くまで / A journey to a...
PDF
Cassandraに不向きなcassandraデータモデリング基礎 / Data Modeling concepts for NoSQL weak point
PDF
Erpと自然言語処理
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
PDF
Enterprise UI/UX - design as code
PDF
Kubernetesにまつわるエトセトラ(主に苦労話)
PDF
Demystifying kubernetes
PDF
Global Innovation Nights - Spark
Gitで安定マスターブランチを手に入れる
新入社員が多い中で効果的なレビューを行うための方法 レビューの準備からフィードバックまでの工夫
RDB脳でCassandra / MSAを始めた僕達が、分散Drivenなトランザクション管理にたどり着くまで / A journey to a...
Cassandraに不向きなcassandraデータモデリング基礎 / Data Modeling concepts for NoSQL weak point
Erpと自然言語処理
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Enterprise UI/UX - design as code
Kubernetesにまつわるエトセトラ(主に苦労話)
Demystifying kubernetes
Global Innovation Nights - Spark
Ad

Javaでつくる本格形態素解析器