Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,快速比较列表中项目之间的相似性_Python_List_Python 3.x_String Comparison - Fatal编程技术网

在python中,快速比较列表中项目之间的相似性

在python中,快速比较列表中项目之间的相似性,python,list,python-3.x,string-comparison,Python,List,Python 3.x,String Comparison,我知道关于比较项目(字符串)的其他问题,但我没有找到任何解决问题的方法 我试图对科学论文(标题、关键词、摘要)进行文本分析。我想数一数文字中出现的单词。代码的功能很好,但我有一个问题,就是比较列表中的字符串的相似性。有很多词,比如ex.“湿地”和“湿地”,我的代码正在比较它们的相似性,并将它们替换为第一个(“湿地”变成“湿地”) 它能按我的需要工作,但速度很慢。所以我的问题是,是否有更好的解决方案 我的代码: def similar_words(words_list): checked_

我知道关于比较项目(字符串)的其他问题,但我没有找到任何解决问题的方法

我试图对科学论文(标题、关键词、摘要)进行文本分析。我想数一数文字中出现的单词。代码的功能很好,但我有一个问题,就是比较列表中的字符串的相似性。有很多词,比如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

有。它的性能可能比您的代码好(并防止了大量的“重新发明轮子”)

。它的性能可能比您的代码好(并防止了大量的“重新发明轮子”)

这是一个很好的地方:
checked\u words=[]
我首先要将其制作成一个
set()
。类似的查找中的
可能也很昂贵,具体取决于
单词列表的类型<代码>对于相似的[ind_a]在相似的
中看起来真的很奇怪,它在遍历列表时重新分配索引处的值。这是一个很好的访问地点:
checked_words=[]
我首先将其设置为一个
集合()
。类似的
查找中的
可能也很昂贵,具体取决于
单词列表的类型<代码>对于类似的[ind_a]在类似的
中看起来真的很奇怪,它在遍历列表时重新分配索引处的值。我知道NLTK,并且已经尝试过了(lemmatization-词干分析对此毫无用处),但不知怎的,我对结果感到失望(它改变了很多单词)。这就是为什么我要重新发明轮子,因为轮子并不完全一样。。但也许我会再试一次。我知道NLTK,并且已经尝试过了(柠檬化-词干化对此毫无用处),但不知何故,我对结果感到失望(它改变了很多单词)。这就是为什么我要重新发明轮子,因为轮子并不完全一样。。但也许我会再试一次。