【要約】読みベースの編集距離を測るライブラリ「mòine」をつくりました [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
自然言語処理を行う開発者が、日本語特有の表記揺れによる文字列比較の精度の低さに直面している。
- ・従来のレーベンシュタイン距離は、文字の表層的な一致に依存する。
- ・「鬼滅の刃」と「きめつのやいば」のように、漢字とかなの組み合わせでは距離が大きすぎる。
- ・通常の編集距離では、これらは無関係なものと見なされがちである。
- ・読みを一意に変換して比較する方法は、多義的な読みへの対応が困難である。
- ・「廻戦」の読みが複数ある場合など、読みの候補を網羅的に扱う必要がある。
// Approach
開発者は、読みの多義性を考慮した「ラティスパス編集距離」の手法を採用して解決を図った。
- ・2023年に発表された最新の論文手法を実装している。
- ・読みの候補をラティス(格子)構造として表現する。
- ・そのラティスパス上で動的計画法(DP)を用いて計算を行う。
- ・PythonとRustの両言語から利用可能である。
- ・UniDicやSudachiDictといった外部辞書データを活用する。
- ・辞書を別途ダウンロードすることで、言語ごとの読み情報を取得する。
// Result
このライブラリにより、表記が異なる文字列同士でも、読みが同じであれば近いものとして判定できる。
- ・「きめつのやいば」と「鬼滅の刃」の距離を0として算出できる。
- ・SudachiDictを利用することで、「呪術廻戦」のような最新の固有名詞も正確に扱える。
- ・検索クエリの誤入力候補の抽出や、表記揺れの検出に活用できる。
- ・中国語のピンインと漢字の比較にも対応している。
- ・開発途上ではあるが、誤入力と訂正ペアの抽出などの用途が期待される。
Senior Engineer Insight
> 実用性は高いが、辞書依存性が極めて高い点に注意が必要である。辞書の精度がそのまま比較精度に直結する。SudachiDictのように、固有名詞の更新が頻繁なものを選ぶ運用が求められる。大規模システムでは、DPの計算コストと辞書メモリのオーバーヘッドを検証すべきである。