3

何年も前にメンバーだったメーリングリストを見つける目的で、メールの件名の長いリストをダウンロードしていて、Gmailアカウントからそれらを削除したいと思っています(かなり遅くなっています)。

私は特に同じアドレスから来ることが多いニュースレターを考えており、件名に製品/サービス/グループの名前を繰り返しています。

特定の電子メールアドレスからのアイテムの一般的な出現によって検索/並べ替えることができることは知っていますが(そして私はそうするつもりです)、そのデータを繰り返しの件名と関連付けたいと思います...。

これで、多くの件名が文字列の一致に失敗しますが、「Google Friends:最新ニュース」「GoogleFriends:今日行っていること」は、ランダムな件名よりも互いに似ています。「VirginAirlinesは今日の素晴らしいセール」「ヴァージン航空で飛行機に乗る」

だから-どうすればもっと似ているかもしれない文字列の傾向/例を自動的に抽出し始めることができますか?

私が検討して破棄したアプローチ(「もっと良い方法があるはずだから」):

  • 可能なすべての部分文字列を抽出し、それらが表示される頻度で並べ替え、関連する部分文字列を手動で選択します
  • 最初の1つまたは2つの単語を取り除き、各サブ文字列の出現をカウントします
  • エントリ間のレーベンシュタイン距離の比較
  • ある種の文字列類似性インデックス..。

これらのほとんどは、膨大な量の手動介入が必要となるという非常に非効率的または可能性があるために拒否されました。ある種のあいまい文字列マッチングが必要だと思います。

結局、これを行うための厄介な方法を考えることができますが、より一般的なものを探しているので、このデータセットの特別なケーシングではなく、ツールのセットに追加しました。

この後、特定の件名文字列の発生を「From」アドレスと照合します-2つのメッセージが同じ電子メールの一部である可能性/低いことを表すデータ構造を構築する良い方法があるかどうかはわかりませんリスト」またはすべての電子メールの件名/アドレスから「関連する」可能性のある電子メールのプールにフィルタリングしますが、これはこの後解決する問題です。

任意のガイダンスをいただければ幸いです。

4

2 に答える 2

4

まず、文字の各文字列を単語のセットまたはマルチセットに変換します(句読点と小文字と大文字の違いは無視します)。(それが十分に強力でない場合は、2回目のパスで、バイグラムやトリグラムと呼ばれる隣接する単語のペアまたはトリプルを試すことができます)。このように削減された文字列間の類似性の重要な尺度は、全体的に高頻度ではないthe単語(ではない)です。and、など;-)は両方の文字列に共通であるため、「共通性」を測定するには、単純なセット交差(またはマルチセット交差ですが、単純なユースケースではセットだけでうまくいくと思います。特にバイグラムのセット)で十分です。2つの文字列に共通する単語は、まれにしか価値がないため、コーパス全体での単語の頻度の負の対数は、このヒューリスティックの優れた開始点です。

于 2010-05-02T00:54:38.977 に答える
1

スムーズなBLEU

被験者間のsmooth- BLEUスコアを利用できる場合があります。BLEUは、機械翻訳システムによって生成された翻訳が人間によって生成された翻訳とどれほど類似しているかをスコアリングするために使用される評価メトリックです。スムーズBLEUは、通常のBLEUスコアと同じように計算されますが、テキストの短いセグメントを評価するときにゼロを掛けないように、nグラムの一致カウントに1を追加する点が異なります。

Smooth-BLEUは、単一の単語間の一致だけでなくnグラムの一致を調べるため、語順情報をキャプチャしながら、レーベンシュタイン距離よりもはるかに高速に計算できるはずです。

残念ながら、Python BLEU実装へのポインタはありませんが、NISTのPerl実装はここにあります

于 2010-05-03T00:32:37.483 に答える