gpt4 book ai didi

python - 使用 NLTK 和 Wordnet 聚类同义词

转载 作者:行者123 更新时间:2023-12-04 14:00:41 24 4
gpt4 key购买 nike

给定一组词 V , 我想将 V 中的同义词分组一起。我想知道NLTK和Wordnet中是否有任何内置函数需要V作为输入并根据同义性自动对它们进行聚类。

我已经知道如何提取每个单词的同义词,但这不是我要找的。如果我这样做,当同义词集彼此相交,或者是彼此的子集/超集时,问题就会变得复杂,这需要编写一个消除冲突的函数。

作为一个例子,让我们考虑

V = ["good","constipate","bad","nice","defective","right","respectable","powerful"]

我想得到的输出是:
[('constipate'), ('nice'), ('bad', 'defective'), ('good', 'powerful', 'respectable', 'right')]

现在,根据集群的大小/数量,一些集合可能会分成几个集合,或者组合在一起。在这里,我只关心 V中的词以及它们在 V 中的同义词.

最佳答案

是的,有一种方法可以使用 nltkwordnet .下面是一个例子。我正在使用内置的 sysnets 并寻找“书”的同义词,

import nltk
from nltk.corpus import wordnet

synonyms = []

for syn in wordnet.synsets('book'):
for lemma in syn.lemmas():
synonyms.append(lemma.name())

'book' 的同义词是
print(synonyms)
>>['book', 'book', 'volume', 'record', 'record_book', 'book', 'script', 'book', 'playscript', 'ledger', 'leger', 'account_book', 'book_of_account', 'book', 'book', 'book', 'rule_book', 'Koran', 'Quran', "al-Qur'an", 'Book', 'Bible', 'Christian_Bible', ..]

同义词的长度,
 len(synonyms)
>>38

注意:有些同义词是动词形式,许多同义词只是“书”的不同用法。相反,如果我们采用同义词集,那么唯一词就会更少,如以下代码所示:
len(set(synonyms)) 
>>25

使用后 set手术,
{'record', 'Quran', 'Holy_Scripture', 'Koran', 'Good_Book', 'playscript', 'book', 'Word_of_God', 'hold', 'Holy_Writ', 'script', 'leger', 'book_of_account', 'Scripture', 'ledger', 'reserve', 'volume', 'record_book', "al-Qur'an", 'Christian_Bible', 'Word', 'rule_book', 'Bible', 'Book', 'account_book'}

关于python - 使用 NLTK 和 Wordnet 聚类同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com