4

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

下面的代码适用于 u'arb':输出是阿拉伯引理的列表。

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

当我尝试使用同义词集、定义、示例、上位词执行与上述代码相同的逻辑时,我收到一条错误消息:

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 和其他内置函数来提取所有阿拉伯语同义词、上位词等?

4

1 回答 1

5

nltk 的 Open Multilingual Wordnet 具有所有同义词集的英文名称,因为它是一个以原始英语 Wordnet 为中心的多语言数据库。Synsets 模型含义,因此它们与语言无关,不能以特定语言请求。但是每个同义词集都与 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.سنة_مالِيّة')

换句话说,引理是多语言的,而同义词集不是。

于 2017-07-18T07:56:21.703 回答