在python中,快速比较列表中项目之间的相似性
我知道关于比较项目(字符串)的其他问题,但我没有找到任何解决问题的方法 我试图对科学论文(标题、关键词、摘要)进行文本分析。我想数一数文字中出现的单词。代码的功能很好,但我有一个问题,就是比较列表中的字符串的相似性。有很多词,比如ex.“湿地”和“湿地”,我的代码正在比较它们的相似性,并将它们替换为第一个(“湿地”变成“湿地”) 它能按我的需要工作,但速度很慢。所以我的问题是,是否有更好的解决方案 我的代码:在python中,快速比较列表中项目之间的相似性,python,list,python-3.x,string-comparison,Python,List,Python 3.x,String Comparison,我知道关于比较项目(字符串)的其他问题,但我没有找到任何解决问题的方法 我试图对科学论文(标题、关键词、摘要)进行文本分析。我想数一数文字中出现的单词。代码的功能很好,但我有一个问题,就是比较列表中的字符串的相似性。有很多词,比如ex.“湿地”和“湿地”,我的代码正在比较它们的相似性,并将它们替换为第一个(“湿地”变成“湿地”) 它能按我的需要工作,但速度很慢。所以我的问题是,是否有更好的解决方案 我的代码: def similar_words(words_list): checked_
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
有。它的性能可能比您的代码好(并防止了大量的“重新发明轮子”)。它的性能可能比您的代码好(并防止了大量的“重新发明轮子”)这是一个很好的地方:
checked\u words=[]
我首先要将其制作成一个set()
。类似的查找中的可能也很昂贵,具体取决于单词列表的类型<代码>对于相似的[ind_a]在相似的
中看起来真的很奇怪,它在遍历列表时重新分配索引处的值。这是一个很好的访问地点:checked_words=[]
我首先将其设置为一个集合()
。类似的
查找中的可能也很昂贵,具体取决于单词列表的类型<代码>对于类似的[ind_a]在类似的
中看起来真的很奇怪,它在遍历列表时重新分配索引处的值。我知道NLTK,并且已经尝试过了(lemmatization-词干分析对此毫无用处),但不知怎的,我对结果感到失望(它改变了很多单词)。这就是为什么我要重新发明轮子,因为轮子并不完全一样。。但也许我会再试一次。我知道NLTK,并且已经尝试过了(柠檬化-词干化对此毫无用处),但不知何故,我对结果感到失望(它改变了很多单词)。这就是为什么我要重新发明轮子,因为轮子并不完全一样。。但也许我会再试一次。