私は人名の大きなコレクションを持っています (例: "john smith")。その中の人を名前で調べたい。ただし、一部のクエリはスペルが間違っています (例: "jon smth"、"johnsm ith")。スペル修正された一致を見つける可能性のある Python バインディングを備えたスペル修正ライブラリはありますか?
私は、Whoosh と Python-aspell を認識しています。Whoosh のスペル修正は、正しいスペルのコレクションをメモリに格納するのではなく、ディスクに書き込むため、私にはあまり機能しません。これにより、アプリケーションのルックアップが遅すぎます。コードの構造上、この動作を変更するのは簡単ではないようです。また、「y」は「z」よりも「i」(「ジム・カジンスキー」->「ジム・カジンスキー」)と混同される可能性がはるかに高いにもかかわらず、Whoosh は異なる文字編集に異なる重みを付けません。 .
名前には通常空白が含まれているため、Aspell は人名ではうまく機能しません。Aspell は単語を修正の基本単位と見なします。また、私が理解しているように、Aspell は、文字編集距離モデルではなく、スペル修正の n-gram モデルを使用しています。n-gram モデルは辞書の単語には意味がありますが、名前にはうまく機能しません。「bob ruzatoxg」と「joe ruzatoxg」という人物には、珍しい姓が同じであるため、多くの珍しいトライグラムが共通しています。 . しかし、彼らは明らかに異なる人々です。
また、各クエリをコレクション内のすべてのエントリと比較することはできません。これでは時間がかかりすぎます。一部のインデックスは事前に構築する必要があります。
ありがとう!