快速比较列表中的项目以便在python中进行相似性的方法

时间:2017-07-08 11:48:27

标签: python list python-3.x string-comparison

我知道有关将项目(字符串)相互比较的其他问题,但我没有解决任何可以解决我的问题的问题。

我正在尝试对科学论文(标题,关键词,摘要)进行文本分析。我想计算文本中单词的出现次数。代码运行正常,但我有一个部分的问题 - 比较列表中的字符串的相似性。有很多像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

1 个答案:

答案 0 :(得分:2)

Python Natural Language Toolkittools for stemming and lemmatization。它可能比你的代码表现更好(并防止很多"重新发明轮子")