特定の文字列が文字列のコレクションとどの程度類似しているかを判断する


10

この質問がここにあるかどうかはわかりませんが、そうでない場合はお詫びします。私がやろうとしていることは、与えられた文字列が文字列のバッグに「属する」かどうかを確率論的に決定できるプログラム的な方法を開発することです。たとえば、10,000の米国の都市名のバッグがあり、「フィラデルフィア」という文字列がある場合、「フィラデルフィア」がすでに知っている米国の都市名に基づいて、米国の都市名である可能性を定量的に測定したいと思います。このコンテキストでは、実際の都市名と偽の都市名を区別できないことはわかっていますが、少なくとも、「123.75」や「速い赤狐が怠惰な茶色の犬を飛び越えた」などの文字列は除外されます。いくつかのしきい値。

開始するには、レーベンシュタイン距離を見て、それが少なくとも私が解決しようとしている問題と多少似ている問題にどのように適用されるかについて少し考えました。私が見つけた興味深いアプリケーションの1つは、盗作の検出でした。1つの論文では、変更されたSmith-WatermanアルゴリズムでLevenshtein距離がどのように使用され、特定のベースペーパーの盗聴されたバージョンである可能性に基づいて論文をスコア付けしました。私の質問は、誰かが私を助けるかもしれない他の確立されたアルゴリズムまたは方法論で私を正しい方向に向けることができるかどうかです。これは過去の誰かが解決しようとした問題かもしれないという感じがしますが、これまでのところ、Google-fuは失敗しました。


利用可能なポジティブおよびネガティブの例がある場合は、分類子をトレーニングしてみることができます。機能については、まず、Yuval Filmusによって提案されたものなど、いくつかの単純な統計を引き出してみます。
Nick

この関連する質問に注意してください。
ラファエル

都市名は悪い例です。特に米国では、彼らはいたるところにいます。ここでは、テーブルルックアップが最も効果的な方法のようです。あなたの問題はより一般的ですか?
ラファエル

回答:


5

考えるべきいくつかのより良い統計は、語長とグラム分析です。語長については、都市名の語長の分布の統計を収集し、それを取得した長さと比較できます。グラム分析は、サンプルテキスト内の文字のシーケンスの分布を調べます(たとえば)。両方のアプローチを組み合わせることができます。n n n = 2nnnn=2

ヒューリスティックを考えると、可能性を使用して、他のテキストよりもサンプルデータの方が(できれば)高くなるスコアを取得できます。妥当なしきい値を決定するために、相互検証を実行できます。都市名ではないサンプルフレーズのセットを選択してください。都市名を2つの部分に分割します。大きな(たとえば80%)部分と小さな(たとえば20%)部分です。大きな部分でモデルをトレーニングし(つまり、大きな部分の統計を収集)、次に小さな部分と悪いフレーズのサンプルでモデルを評価します。ほとんどの都市名を通過する妥当なしきい値があるかどうかを確認してください。


ありがとう。私はn-gramを調べ始めましたが、私が完全にベースから外れているかどうかはわかりませんでした。単語の長さも面白そうだし、思っていなかった。
アンドリュー

これに文字頻度を追加することもできます。特に、それはすべての多くのものを取り除くべきです。1つの利点は、そのような頻度が、多数の統計モデルでトレーニング/認識できる数値のベクトルであることです。
ラファエル

1
1n+1n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.