Python 创建同义词簇

标签 python nlp cluster-analysis wordnet

我有一长串单词:

verbs = ['be','have', 'find', 'use', 'show', 'increase', 'detect', 'do', 'determine', 'demonstrate', 'observe','suggest', ...]

我想根据哪些单词是同义词(语义上接近)来对这些单词进行聚类。我想将列表中的每个元素与所有其他元素进行比较,对于那些相似度分数 > 0.7 的元素,将它们分组在一起。我正在使用 wordnet,但我不断收到此错误:

for i, verb in enumerate(verbs):
    for j in range(i + 1, len(verbs)):
        verbs[i].wup_similarity(verbs[j])


    ERROR MESSAGE : 
    ---->        verbs[i].wup_similarity(verbs[j])
    ---->        AttributeError: 'str' object has no attribute 'wup_similarity'

也许这不是正确的方法,但有人可以帮忙吗?

最佳答案

关于更新的问题,该解决方案适用于我的机器。

verbs = ['be','have', 'find', 'use', 'show', 'increase', 'detect', 'do', 'determine', 'demonstrate', 'observe','suggest']

for i, verb in enumerate(verbs):
    for j in range(i + 1, len(verbs)):
        v1 = wordnet.synset(verbs[i]+ '.v.01')
        v2 = wordnet.synset(verbs[j]+ '.v.01')
        wup_score = v1.wup_similarity(v2)
        if wup_score > 0.7:
            print(f"{verbs[i]} and {verbs[j]} are similar")
            #or do whatever you want to do with similar words.

关于原来的问题:

我不是这方面的专家,所以也许这根本没有帮助。目前您正在执行str.wup_similarity(str)。然而根据this文档(在该网站上搜索“wup_similarity”)我认为应该是 synset1.wup_similarity(synset2)

所以我的建议是:

for i, verb in enumerate(verbs):
    for j in range(i + 1, len(verbs)):
        for syni in wordnet.synsets(verb[i]):
            for synj in wordnet.synsets(verb[j]):
                for li in syni.lemmas():
                    for lj in synj.lemmas():
                        v1 = wordnet.synset(verbs[i]+ '.v.01')
                        v2 = wordnet.synset(verbs[j]+ '.v.01')
                        v1.wup_similarity(v2)

关于Python 创建同义词簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71062589/

相关文章:

javascript - Chartjs 拆分两位数数字

python - python中的线程无限循环

python - 如何仅从单词生成有意义的句子?

algorithm - 测试聚类算法的最佳方法

python - scipy 中的层次聚类 - 内存错误

python - 如何在 to_csv 和 read_csv 之后获得一致的数据类型?

python - 函数仅打印 5K 文件目录中四个文件的值,Python

string - 对一长串单词进行聚类

python - 对字典中的句子向量进行聚类

Python nlp spacy OSError : [E050] Can't find model 'de'