nltk" OMW"用阿拉伯语言的wordnet

时间:2017-07-18 03:27:07

标签: python python-2.7 nltk wordnet nltk-book

我正在使用(OMW)wordnet专门为阿拉伯语进行python / nltk。所有功能都可以正常使用英语,但是当我使用' arb'时,我似乎无法执行任何这些功能。标签。唯一有效的方法是从给定的阿拉伯语同义词集中提取lemma_names

以下代码适用于你的工作:#arb' 输出是阿拉伯语引理列表。

for synset in wn.synsets(u'عام',lang=('arb')):
    for lemma in synset.lemma_names(u'arb'):
        print lemma

当我尝试使用synset,definitions,example,hypernyms执行与上面代码相​​同的逻辑时,我收到一条错误消息:

TypeError: hyponyms() takes exactly 1 argument (2 given)

(如果我提供'arb'标志)或

KeyError: u'arb'

如果我写synset.hyponyms(u'arb')

,这是不起作用的代码之一
for synset in wn.synsets(u'عام',lang=('arb')):
    for hypo in synset.hyponyms(): #print the hyponyms in English not Arabic
        print hypo

这是否意味着我无法使用wn.all_synsets和其他内置函数来提取所有阿拉伯语同义词,上位词等?

1 个答案:

答案 0 :(得分:2)

nltk的开放式多语言Wordnet具有所有同义词的英文名称,因为它是以原始英语Wordnet为中心的多语言数据库。同步模型含义,因此它们与语言无关,不能以特定语言请求。但是每个synset都链接到OMW涵盖的语言的引理。一旦你有一些同义词(原始,下位等),只需要再次询问阿拉伯语的引理:

>>> for synset in wn.synsets(u'عام',lang=('arb')):
...     for hypo in synset.hyponyms():
...         for lemma in hypo.lemmas("arb"):
...             print(lemma)
... 
Lemma('waft.v.01.إِنْبعث')
Lemma('waft.v.01.انبعث')
Lemma('waft.v.01.إنبعث_كالرائحة_العطرة')
Lemma('waft.v.01.إِنْدفع')
Lemma('waft.v.01.إِنْطلق')
Lemma('waft.v.01.انطلق')
Lemma('waft.v.01.حمل_بخفة')
Lemma('waft.v.01.دفع')
Lemma('calendar_year.n.01.سنة_شمْسِيّة')
Lemma('calendar_year.n.01.سنة_مدنِيّة')
Lemma('fiscal_year.n.01.سنة_ضرِيبِيّة')
Lemma('fiscal_year.n.01.سنة_مالِيّة')

换句话说,词条是多语言的,而词汇表则不是。