如何在Python的nltk和WordNet中获取一个词/同义词的所有下义词?
我现在有一个包含所有名词的列表,这些名词来自一个叫做WordNet的地方。现在我想从中只留下与“车辆”相关的词,其他的都想去掉。我该怎么做呢?下面是我想写的伪代码,但我不知道怎么让它运行。
for word in wordlist:
if not "vehicle" in wn.synsets(word):
wordlist.remove(word)
2 个回答
9
在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这种情况下,很多人会去问其他人,尤其是在像StackOverflow这样的技术论坛上。
在这些论坛上,用户可以提出自己的问题,其他人则会根据自己的经验和知识来给出建议和解决方案。通常,提问的人会描述他们遇到的问题,提供一些相关的代码,甚至说明他们尝试过哪些解决办法。
回答者会仔细阅读问题,然后根据自己的理解来给出答案。他们可能会解释某个函数是如何工作的,或者指出代码中的错误,并提供修改建议。这样的互动不仅帮助了提问者,也让回答者在分享知识的过程中得到了锻炼。
总之,技术论坛是一个互相学习和帮助的地方,大家可以在这里找到解决问题的方法,也能提高自己的编程技能。
def get_hyponyms(synset):
hyponyms = set()
for hyponym in synset.hyponyms():
hyponyms |= set(get_hyponyms(hyponym))
return hyponyms | set(synset.hyponyms())
14
from nltk.corpus import wordnet as wn
vehicle = wn.synset('vehicle.n.01')
typesOfVehicles = list(set([w for s in vehicle.closure(lambda s:s.hyponyms()) for w in s.lemma_names()]))
这段话的意思是,它会给你所有和名词“车辆”相关的独特词汇,这些词汇都是“车辆”的一种更具体的说法。