繁体   English   中英

快速比较列表中项目以在python中实现相似性的方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM