我知道有关将项目(字符串)相互比较的其他问题,但我没有解决任何可以解决我的问题的问题。
我正在尝试对科学论文(标题,关键词,摘要)进行文本分析。我想计算文本中单词的出现次数。代码运行正常,但我有一个部分的问题 - 比较列表中的字符串的相似性。有很多像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
答案 0 :(得分:2)
Python Natural Language Toolkit有tools for stemming and lemmatization。它可能比你的代码表现更好(并防止很多"重新发明轮子")