アイテム(文字列)の比較に関する他の質問がありますが、私の問題を解決する方法はありませんでした。リスト内のアイテムを比較して、Pythonの類似性を比較する速い方法
私は科学論文(タイトル、キーワード、抄録)のテキスト分析をしようとしています。私はテキスト中の単語の出現を数えたいと思う。コードは正常に機能しますが、リストの文字列を類似性と比較することで問題が発生します。 exのような言葉がたくさんあります。 "湿地"と "湿地"と私のコードは、それらを類似性のために比較し、それらを最初のもの( "湿地"が "湿地"になる)で置き換えている。
私の必要に応じて動作しますが、かなり遅いです。だから私の質問は、これのためのいくつかのより良い解決策がある場合です。
マイコード:
def similar_words(words_list):
checked_words = []
similar = words_list
ind_a = 0
num_words = len(words_list)
print("from" + " " + str(num_words) + " " + "words")
for similar[ind_a] in similar:
if similar[ind_a] not in checked_words:
ind_b = 0
for word in similar:
match = SequenceMatcher(None, similar[ind_a], similar[ind_b]).ratio()
if match >= 0.85:
similar[ind_b] = similar[ind_a]
ind_b += 1
ind_a += 1
checked_words.append(similar[ind_a])
stdout.write("\r%d words solved" % ind_a)
stdout.flush()
stdout.write("\n")
print("solved %d words for 85percent similarity" % num_words)
return similar
これは訪問するのに適した場所です:https://codereview.stackexchange.com/ –
'checked_words = []'私はまずこれを 'set()'にします。単語リストのタイプによっては、同様の検索が高価になる可能性があります。 '類似の[ind_a]類似のものは本当に奇妙に見えますが、リスト上で反復しながらインデックスの値を再割り当てします。 – dhke