2017-05-11 31 views
3

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

我的问题是: 如果我从一个意大利词开始(例如:“甘蔗” - 意思是“狗”),有没有一种方法可以在同义词,反义词,hyponyms之间导航...意大利语单词像你为英国人做的那样?或者...对于意大利语言来说,WordNet等同于?

在此先感谢

回答

4

你很幸运。 nltk提供了一个到Open Multilingual 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')] 

我从英语引理去到语言无关的意大利语词汇。

+0

是的,谢谢你的建议,但正如你所看到的,它不给我意大利的同义词,但它似乎与“wn.lemmas(”甘蔗“,郎=”ita“)”只是翻译意大利语用英语表示,并返回它找到的内容。更明确的说法是:我期待的是,而不是引理('bad_berson')它应该得到引理('cattiva_persona'),这是bad_person的意义。 –

+0

我不会说意大利语,但Wordnet是说“甘蔗”的意思之一是“坏人”。 Wordnet是建立在英语之上的,所以它的含义有英文名称,但有多种语言的引理。把英文看作变量名 - 它们是什么并不重要,重要的是它们包含的数据。我将添加一个获取上位词的例子。 – alexis