[英]Fast way to compare items in list with each other for similarity in 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
在Python的自然语言工具包具有的词干和词形还原工具 。 它的性能可能比您的代码更好(并且避免了很多“重蹈覆辙”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.