我正在使用(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
当我尝试使用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和其他内置函数来提取所有阿拉伯语同义词,上位词等?
nltk的Open Multilingual 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.سنة_مالِيّة')
换句话说,词汇是多语言的,而词汇表则不是。