2

私はPythonで2つの文を持っています。これは、ユーザーが画像検索ソフトウェアのクエリとして入力で入力する単語のセットを表します。

sentence1 = "dog is the"
sentence2 = "the dog is a very nice animal"

説明のある画像のセットがあるので、たとえば次のようになります。

sentence3 = "the dog is running in your garden"

ユーザーが挿入したクエリに「非常に近い」説明を持つすべての画像を復元したいのですが、説明に関連するこの部分は、ジオタグも考慮したより複雑な調査の一部であるため、0から1の間で正規化する必要があります画像の低レベルの機能。

以下を使用して3つのセットを作成するとします。

set_sentence1 = set(sentence1.split())
set_sentence2 = set(sentence2.split())
set_sentence3 = set(sentence3.split())

そして、セット間の共通部分を次のように計算します。

intersection1 = set_sentence1.intersection(set_sentence3)
intersection2 = set_sentence2.intersection(set_sentence3)

比較を効率的に正規化するにはどうすればよいですか?

文字列の類似性ではなく、セットの類似性に関心があるため、レーベンシュタイン距離は使用しません。

4

2 に答える 2

3

多分次のようなメトリック:

Similarity1 = (1.0 + len(intersection1))/(1.0 + max(len(set_sentence1), len(set_sentence3)))
Similarity2 = (1.0 + len(intersection2))/(1.0 + max(len(set_sentence2), len(set_sentence3)))
于 2012-09-12T07:59:53.003 に答える
1

difflibを試しましたか?

ドキュメントからの例:

>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'):
...     sys.stdout.write(line)  
*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
  guido
--- 1,4 ----
! python
! eggy
! hamster
  guido
于 2012-09-12T09:25:46.470 に答える