Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[DEIM2022] 高速な単語分割器VaporettoとパターンマッチングマシンDaacho...
Search
LegalOn Technologies, Inc
PRO
March 02, 2022
Technology
1
700
[DEIM2022] 高速な単語分割器VaporettoとパターンマッチングマシンDaachorseの紹介
DEIM2022にて,LegalForce Researchで開発するOSSについて紹介した資料です。
LegalOn Technologies, Inc
PRO
March 02, 2022
Tweet
Share
More Decks by LegalOn Technologies, Inc
See All by LegalOn Technologies, Inc
Developers Summit 2025 浅野卓也(13-B-7 LegalOn Technologies)
legalontechnologies
PRO
0
710
リーガルテックにおける検索・推薦技術
legalontechnologies
PRO
5
2.1k
[NLP2023] 最小コスト法に基づく形態素解析におけるCPU キャッシュの効率化
legalontechnologies
PRO
1
180
生成AIを搭載したプロダクト開発 - 少人数で爆速リリースしてわかったこと -
legalontechnologies
PRO
1
14k
Auto-evaluation of ranking model by LLM
legalontechnologies
PRO
0
1.1k
株式会社LegalOn Technologies 会社紹介資料
legalontechnologies
PRO
11
100k
【LegalOnに聞く】ChatGPTを活用したプロダクト開発〜本番運用のハードルとは〜
legalontechnologies
PRO
0
300
[DEIM2023] 高速な形態素解析器Vibratoの紹介
legalontechnologies
PRO
1
1.2k
株式会社LegalOn Technologies 検索・推薦チーム紹介資料
legalontechnologies
PRO
0
1.9k
Other Decks in Technology
See All in Technology
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
130
PL900試験から学ぶ Power Platform 基礎知識講座
kumikeyy
0
130
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
960
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
390
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
MC906491 を見据えた Microsoft Entra Connect アップグレード対応
tamaiyutaro
1
540
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.7k
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
270
2024.02.19 W&B AIエージェントLT会 / AIエージェントが業務を代行するための計画と実行 / Algomatic 宮脇
smiyawaki0820
13
3.3k
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
190
Platform Engineeringは自由のめまい
nwiizo
4
2.1k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Building Adaptive Systems
keathley
40
2.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
A better future with KSS
kneath
238
17k
Visualization
eitanlees
146
15k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Six Lessons from altMBA
skipperchong
27
3.6k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
How STYLIGHT went responsive
nonsquared
98
5.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Transcript
DEIM2022 技術報告 神田峻介(LegalForce Research) 高速な単語分割器Vaporettoと パターンマッチングマシンDaachorseの紹介
2 株式会社LegalForce 全ての契約リスクを制御可能にする。 レビュー支援ソフトウェア AI契約管理システム 代表: 角田 望 設立: 2017年4月21日
従業員等: 338名※1(役員含) 資本金等: 41.9億円※2(資本準備金等含) ※1: 2022年1月時点 ※2: 2021年2月時点 契約・法令情報メディア
3 本日の発表内容 LegalForce Researchで開発・運用している2つのRust製OSSについて紹介
4 本日の発表内容 LegalForce Researchで開発・運用している2つのRust製OSSについて紹介 👉
5 自然言語処理における単語分割 日本語のような単語が明示的に区切られていない言語では前処理として単語分割が必要 大量のテキストを処理するとき、分割精度だけでなく実行速度も重要 ➔ LegalForce Researchでは点予測に基づく高速な単語分割器 Vaporetto を開発 すべての人間は、生れながらにして自由であり、
かつ、尊厳と権利とについて平等である。 分割前 分割後 すべて/の/人間/は/、/生れ/ながら/に/し/て/自由/で/あり/、/ かつ/、/尊厳/と/権利/と/に/つい/て/平等/で/ある/。
6 単語分割手法 系列予測法 ソフトウェア: MeCab, Kuromoji, Sudachi, など 単語の境界か? 文字列
素性 点予測法 ソフトウェア: KyTea, Vaporetto, など 点予測法の利点 ❏ 入力文長に線形時間で動作(系列予測法は二乗時間) ❏ 柔軟なコーパス設計(部分的アノテーションコーパスや品詞なしコーパス)
7 入力文の各文字境界について単語境界か否かを二値線形分 類問題として判定 固定長窓に含まれる文字列素性を利用してモデルを学習 ❏ 文字 n-gram 素性(e.g., 世界, 界の,
の国民) ❏ 文字種 n-gram 素性(e.g., ひらがな, カタカナ, 漢字) ❏ 辞書単語素性(e.g., UniDic, IPADIC) 以下の3ステップで単語分割 1. 入力文に含まれる素性を列挙 2. 素性に紐づくスコアを加算 3. 合計スコアから各文字境界が単語境界かを判別 点予測に基づく単語分割 [森ら, 2011] 単語の境界か? Step1. 素性列挙 Step2. スコア加算 Vaporettoでは各ステップを高速に設計 参考文献: 森 信介, 中田 陽介, Neubig Graham, 河原 達也, 点予測による形態素解析, 自然言語処理, 2011
8 ステップ1:素性列挙(複数パターン検索) 入力文に含まれる素性(パターン)を列挙する Vaporettoでは Aho-Corasick (AC) 法を採用 ❏ 時間計算量がテキスト長と解の個数に線形 ❏
スコア加算の高速化テクとの親和性 LegalForce Researchでは、高速・省メモリなAC法のRustライブラリ Daachorse を開発 ❏ ダブル配列を用いたAC法の実装 ❏ Rustで最も有名なAC法ライブラリと比べて45%のメモリ使用量で5.5倍高速 ❏ 最長一致分解などのトリッキーな検索もサポート 発表の後半で
9 ステップ2:素性のスコア加算 AC法で列挙した素性が持つスコア配列を合計し、各文 字境界のスコアを計算 ➔ 合計スコアが非負なら単語境界と判定 Vaporettoでは以下の3つの素性を使用 ❏ 文字 n-gram
素性(e.g., 世界, 界の, の国民) ❏ 文字種 n-gram 素性(e.g., ひらがな, 漢字) ❏ 辞書単語素性(e.g., UniDic, IPADIC) 素性の特性に合わせた高速化技法を提案! 1. 文字 n-gram 素性スコアの事前加算 2. 辞書単語素性の併合 3. 文字種 n-gram 素性スコアのキャッシュ … は 、 全 世 界 の 国 民 … 世界 -2 2 -4 3 1 全世界 4 -3 -5 4 … 2 -1 -9 7 1 … 文字n-gram素性 合計スコア
10 オートマトンの同じ状態 s に紐づく素性は必ず同時にテキストに出現する ➔ それら素性のスコア配列は必ず合計される ➔ 状態 s のスコア配列として予め足し合わせておく
実験結果 ❏ 文字n-gram素性でのスコア加算回数を47%削減! 高速化技法1:文字n-gram素性のスコア配列の事前加算 -2 2 -4 3 1 4 -3 -5 4 2 -1 -9 7 1 世界 全世界 s s 世界、全世界 世界、全世界
11 高速化技法2:辞書単語素性の併合 文字n-gram素性と辞書単語素性には、文字列が一致する素性が含まれ得る そのような素性は必ず同時に出現するので、予め片方に併合しておく ➔ 別々にスコアを加算するのを回避 実験結果 ❏ 辞書単語素性のスコア加算回数を93%削減! 文字n-gram素性
世 世界 世界の 界 界の 界の国 の の国 の国民 国民 民 辞書単語素性 世界 日本 電脳 データ 工学 情報 マネジメント 国民 民主
12 高速化技法3:文字種n-gramのスコアをキャッシュ 境界スコアは窓内の文字種の組合せによって一意に決まる ➔ 全通りの結果を記憶しておけば瞬時にスコアが計算できる 文字種は高々 6 通りしかない(ひらがな, 漢字, etc)
➔ 全通りの計算結果は高々1MiBで保存できる 窓をズラしながら結果を取り出すことで高速にスコア計算! ➔ ACマシンの素性列挙すら必要ない! 実験結果 ❏ ACマシンを使う場合と比べて6.1倍高速!
13 モデル(点予測法) ❏ コンパクトSVMモデル from KyTea ❏ BCCWJ & UniDic
辞書(MeCab, Kuromoji, Lindera) ❏ IPA辞書 辞書(Sudachi, sudachi.rs) ❏ SudachiDict Core 解析テキスト ❏ 吾輩は猫である from 青空文庫 ベンチマーク: 分割速度 2.6倍高速 8.25倍高速 点予測法 系列予測法 実験コード: https://github.com/legalforce-research/tokenizer-speed-bench
14 本日の発表内容 LegalForce Researchで開発・運用している2つのRust製OSSについて紹介 👉
15 LegalForce Researchで開発しているAC法のRustライブラリ ❏ 高速な複数パターン検索をサポート 特徴 ❏ ダブル配列による高い時間効率とメモリ効率 ❏ シンプルなAPI
❏ マルチバイト文字に特化したオプション 豊富な検索機能 ❏ オーバーラップマッチ ❏ 非オーバーラップマッチ ❏ 最短マッチ ❏ 最長マッチ ❏ 追加順序優先マッチ 応用例 ❏ 単語分割器や形態素解析器 ❏ 正規表現エンジン Daachorse: Double-Array Aho-Corasick
16 効率化の工夫 出力集合の併合保存 ❏ ACマシンで保持する出力の集合は同じエントリを含み冗長 ❏ Daachorseでは集合を併合して保存することでメモリ効率化 ❏ 単語集合ではエントリ数を20–40%程度削減 マルチバイト文字に特化したオプション
❏ ダブル配列ではマルチバイト文字はバイトに区切って処理するのが一般的 ❏ Pros: 構築が容易、文字のエンコードに依存しない ❏ Cons: 遷移数が増えて検索が低速化 ❏ DaachorseではUnicodeのコードポイント値から構築するオプションも実装 キャッシュ・メモリ効率を意識したデザイン ❏ 配列の要素圧縮 ❏ 状態の構造化、など
17 ベンチマーク ❏ パターン:日本語, 約68万単語 from UniDic ❏ テキスト:吾輩は猫である from
青空文庫 5.5倍高速 2.2倍省メモリ
18 LegalForce Researchで開発しているRust製ライブラリを紹介 ❏ Vaporetto: 点予測に基づく高速な単語分割器 ❏ Daachorse: ダブル配列による高速なAC法 詳細な解説がLegalForce
Enginnering Blogにあります! https://tech.legalforce.co.jp/ Vaporettoについては3月の言語処理学会でも発表します! まとめ PR LegalForce Research ではソフトウェアエンジニアとリサーチエンジニアを募集しています 興味を持たれた方は是非お声がけください! ❏ リサーチエンジニア(自然言語処理・画像処理・機械学習など) ❏ ソフトウェアエンジニア(自然言語処理・画像処理・機械学習など) ❏ ソフトウェアエンジニア(検索システム) 各リンクは弊社特設ページにあります!
19 お昼に交流会を開催します! 11:30〜12:15 スポンサーセミナー「株式会社LegalForce 企業説明会/交流会」 是非お越し下さい! oViceブースも3Fに 設置してます! 是非お越し下さい!