nltk“OMW”wordnet与阿拉伯语

问题描述 投票:1回答:1

我正在使用(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和其他内置函数来提取所有阿拉伯语同义词,上位词等?

python python-2.7 nltk wordnet nltk-book
1个回答
2
投票

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.سنة_مالِيّة')

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