Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Goya: 形態素解析の実装の詳細 #445

Open
Leko opened this issue Nov 27, 2021 · 0 comments
Open

Goya: 形態素解析の実装の詳細 #445

Leko opened this issue Nov 27, 2021 · 0 comments

Comments

@Leko
Copy link
Owner

Leko commented Nov 27, 2021

  • きっかけは仕事でダブル配列を実装したこと
    • ダブル配列とは?トライ木とは?
    • 参加してたISUCONで出題されたことがある
    • 当時解けなくて悔しくて覚えた
  • 突き詰めればDFS、基数木、ダブル配列、DPができれば作れる
  • ipadicのパース
  • ダブル配列の構築
    • ナイーブなトライ木を作ってダブル配列に圧縮
    • トリプルアレイとは違うアプローチだと思う
    • 終端ノードに-1ではなく単語IDを直接入れて辞書サイズを縮小
    • FSTってのを使うと辞書サイズがかなり小さくできるそう。検索速度はどうか?
  • ダブル配列の探索
    • イメージ的にはトリプルアレイからダブルアレイに変換するアプローチだと思われる。実際は基数木使ってるけども
    • おそらくかなり素朴。構築(特に隙間探し)がかなり遅い。隙間だけをLinkedListにしたり最適化が必要そう
    • 衝突回避のため辞書を奇数木に一度変換してからダブル配列に落としている
    • TAILも使ってない
    • janomeではSFTというのを使ってるそう。Rustにもstring-to-intの実装があるが試してない
  • 未知語の処理
  • 同音異義語の処理
  • ラティス構築
  • コスト計算
  • Viterbiアルゴリズムによる最小コスト法(前向きDP)

テキスト処理入門:Pythonで高速な辞書を作ろう(その1) | 中国語・韓国語翻訳・音声合成なら高電社
ゼロから作った形態素解析器Taiyakiで学ぶ形態素解析 - The jonki
Double-Array Construction
ダブル配列の実装方法

— [ダブル配列の豆知識](https://www.slideshare.net/s5yata/dsirnlp-04s5yata

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant