使用Python的Wordnet Synsets用于意大利语

时间:2017-05-11 11:22:10

标签: python nlp nltk

我开始使用Python中的NLTK编程进行自然意大利语处理。我已经看到了WordNet库的一些简单例子,它们有一套很好的SynSet,允许你从一个单词(例如:“dog”)导航到他的同义词和他的反义词,他的下位词和上位词等等。

我的问题是: 如果我从一个意大利语单词开头(例如:“cane” - 意思是“狗”),有没有办法在同义词,反义词,下位词之间导航...对于意大利语单词和英语单词一样?或者......意大利语有一个与WordNet相当的东西吗?

提前致谢

2 个答案:

答案 0 :(得分:11)

你很幸运。 nltkOpen Multilingual Wordnet提供了一个界面,它确实在其描述的语言中包含意大利语。只需在通常的wordnet函数中添加一个指定所需语言的参数,例如:

>>> cane_lemmas = wn.lemmas("cane", lang="ita")
>>> print(cane_lemmas)
[Lemma('dog.n.01.cane'), Lemma('cramp.n.02.cane'), Lemma('hammer.n.01.cane'),
 Lemma('bad_person.n.01.cane'), Lemma('incompetent.n.01.cane')]

同义词集具有英文名称,因为它们与英文单词网络集成在一起。但是,您可以浏览意义网并为所需的任何同义词提取意大利语引理:

>>> hypernyms = cane_lemmas[0].synset().hypernyms()
>>> print(hypernyms)
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
>>> print(hypernyms[1].lemmas(lang="ita"))
[Lemma('domestic_animal.n.01.animale_addomesticato'), 
 Lemma('domestic_animal.n.01.animale_domestico')]

或者你在评论中提到了“cattiva_persona”:

>>> wn.lemmas("bad_person")[0].synset().lemmas(lang="ita")
[Lemma('bad_person.n.01.cane'), Lemma('bad_person.n.01.cattivo')]

我从英语引理转向与语言无关的同义词到意大利语的引理。

答案 1 :(得分:1)

由于在阅读此问题及其答案之后我发现自己想知道如何实际使用wordnet资源,所以我将在这里留下一些有用的信息:

这里是nltk指南的link

下载wordnet数据并继续进行其他答案中说明的用法的两个必要命令是:

import nltk

nltk.download('wordnet')
nltk.download('omw')