SoftMatcha:大規模コーパス検索のための柔らかくも高速なパターンマッチャー

自然言語処理（naturallanguageprocessing;NLP）やコーパス言語学の近年の目覚ましい進歩は，巨大なコーパスの利活用に牽引されている．NLP分野では巨大なコーパスを用いて学習された大規模言語モデル（largelanguagemodel;LLM）がチャットボットや機械翻訳を実用レベルに引き上げ[1–4]，コーパス言語学では人間の言語の使用を統計的・数理的に明らかにするため膨大な言語資源がコンコーダンサ等を通じて参照されている[5,6]．このような背景から，巨大コーパスに対する有用なパターン検索の需要はかつてないほど高まっている．例えば，大規模言語モデルによって有害情報・誤情報・プライバ∗現在，NTTコミュニケーション科学基礎研究所．∗ウェブツール:https://softmatcha.github.io/など）と単語埋め込みに基づく柔らかいパターン検索（提案法：SoftMatcha）による検索例．クエリパターンTheorem1従来のパターン検索···thankstoTheorem1···柔らかい···thankstoTheorem1···パターン検索···Theorem3holdsbecause···(SoftMatcha)···ByLemma5,wemayassume······Equation1describes···シー情報が生成されてしまった際には，その情報の発生源と思われる学習事例を特定するためにこうした技術が必要となる[7–9]．既存のパターン検索における課題は，マッチングの判定が文字列の表層表現に基づいている点にある[]．自然言語は類義表現や言い換え表現を多分に含み，grepのような表層表現に基づく厳密な文字列マッチングでユーザーの要求を満たしづらい．一方で，文埋め込みを利用した密ベクトル検索[10,11]ではマッチングの柔軟性は上がるものの，文や文書全体に対する粗い意味的類似性によるマッチがおこなわれるため，クエリパターンの出現位置の列挙や検索は難しい．本研究では，自然言語に内在する類義語や形態素の変化に対して柔軟に対応でき，かつ，10億語規模の巨大なコーパスに対しても高速に検索できる，柔らかくも高速なパターンマッチャーSoftMatchaを開発した∗．SoftMatchaの核となる柔らかいマッチングは，従来のパターンマッチにおける一致・不一致の二値，すなわち{0,1}を，単語埋め込みによって連続値[0,1]へと連続化することにより実現される．また，従来の高速な文字列検索法である転置索引を，連続化されたマッチングに適用できるよう上手に拡張することで，SoftMatchaは10億規模のコーパスの中から柔らかくマッチする事例を1秒.未満で全列挙することができる．提案法の動作例を検索の結果を内包し，さらに表層表現が異なっていても意味的に類似した単語への置換を許容して検索できる．例えば，クエリに“Theorem1”を与えたとき，“Lemma5”といった事例を検索できる．NLPやコーパス言語学における重要なタスク，すなわち有害事例の検出や，形態論的に複雑な特徴を持つ言語に対する用例検索の実験を行い，SoftMatchaの有用性を経験的にも確認した．