0

私は、さまざまな情報源から情報を得ることができるシステムを持っています。正確な (または非常に類似した) 情報を追加しないようにしたいと考えています。次に例を示します。

テキスト A: ある日、一人の男が丘を越えて太陽を見た

テキスト B: ある日、男が丘を越えて太陽を見た

テキスト C: ある週、ある女性が丘の上から太陽を見た

この場合、情報のブロック間の違いについて何らかの数値を取得したいと考えています。そこから、次のロジックを適用できます。

  1. テキストをデータベースに追加するときは、データベース内の既存の値を確認してください
  2. 値が非常に似ている場合は追加しないでください
  3. 値が十分に異なる場合は、追加してください

そのため、データベース内の情報は重複ではなく、異なるものになりますが、多少の余裕はあります。

Pythonでこれを試みる方法を誰か教えてもらえますか?

4

4 に答える 4

1

それを支援する Python ライブラリがいくつかあります。このQ:を見てください。

レヴィスタイン距離は一般的なアルゴリズムです。nysiis アルゴリズムが非常に便利であることがわかりました。特に、文字列表現を DB に保存したい場合。

このリンクは、優れた概要を提供します。

于 2013-08-22T11:26:22.930 に答える
1

これを行う原始的な方法...しかし、文字列を反復処理して、別の文字列の同等の連続した単語を比較すると、一致と失敗の比率が得られます。

>>> aa = 'One day a man walked over the hill and saw the sun'
>>> bb = 'One day a man walked over a hill and saw the sun'
>>> matches = [a == b for a, b in zip(aa.split(' '), bb.split(' '))]
>>> matches
[True, True, True, True, True, True, False, True, True, True, True, True]
>>> sum(matches)
11
>>> len(matches)
12

したがって、この例では、11/12 個の単語が一致したことがわかります。その後、合格/不合格レベルを設定できます

于 2013-08-22T11:27:19.757 に答える
0

Python またはその他の言語では、重複を削除する最も簡単な方法はハッシュです。

すでに追加されたハッシュのテーブルを維持できます。別のものを追加するときは、ハッシュが存在するかどうかを確認してください。

それにはhashlibを使用してください

hashlib 使用例の追加

import hashlib
m1 = hashlib.md5()
m1.update(" the spammish repetition")
print m1.hexdigest()

m2 = hashlib.md5()
m2.update(" the spammish")
print m2.hexdigest()

m3 = hashlib.md5()
m3.update(" the spammish repetition")
print m3.hexdigest()

アンス

d21fe4d39740662f11ad2cf8035b471b
03498704df59a124ee6ac0681e64841b
d21fe4d39740662f11ad2cf8035b471b
于 2013-08-22T11:28:19.537 に答える