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
リーガルテックにおける検索・推薦技術
legalontechnologies
PRO
4
2.1k
[NLP2023] 最小コスト法に基づく形態素解析におけるCPU キャッシュの効率化
legalontechnologies
PRO
1
150
生成AIを搭載したプロダクト開発 - 少人数で爆速リリースしてわかったこと -
legalontechnologies
PRO
1
14k
Auto-evaluation of ranking model by LLM
legalontechnologies
PRO
0
1k
株式会社LegalOn Technologies 会社紹介資料
legalontechnologies
PRO
9
100k
【LegalOnに聞く】ChatGPTを活用したプロダクト開発〜本番運用のハードルとは〜
legalontechnologies
PRO
0
280
[DEIM2023] 高速な形態素解析器Vibratoの紹介
legalontechnologies
PRO
1
1.1k
株式会社LegalOn Technologies 検索・推薦チーム紹介資料
legalontechnologies
PRO
0
1.9k
株式会社LegalOn Technologies 開発職向け会社紹介資料
legalontechnologies
PRO
1
39k
Other Decks in Technology
See All in Technology
Cloudflareで実現する AIエージェント ワークフロー基盤
kmd09
0
290
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
120
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
530
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
1.3k
Accessibility Inspectorを活用した アプリのアクセシビリティ向上方法
hinakko
0
180
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor
tomoki10
0
210
30分でわかる「リスクから学ぶKubernetesコンテナセキュリティ」/30min-k8s-container-sec
mochizuki875
3
440
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
140
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!事例のご紹介+座学②
siyuanzh09
0
110
The future we create with our own MVV
matsukurou
0
2k
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
【JAWS-UG大阪 reInvent reCap LT大会 サンバが始まったら強制終了】“1分”で初めてのソロ参戦reInventを数字で振り返りながら反省する
ttelltte
0
140
Featured
See All Featured
A better future with KSS
kneath
238
17k
Unsuck your backbone
ammeep
669
57k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing Experiences People Love
moore
139
23k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
We Have a Design System, Now What?
morganepeng
51
7.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
BBQ
matthewcrist
85
9.4k
4 Signs Your Business is Dying
shpigford
182
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
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に 設置してます! 是非お越し下さい!