nltk "OMW" wordnet с арабским языком
Я работаю над python/nltk с (OMW) wordnet специально для арабского языка. Все функции отлично работают с английским языком, но я не могу выполнить ни одну из них, когда использую тег 'arb'. Единственное, что прекрасно работает, это извлечение lemma_names
из данного арабского синтаксиса.
Приведенный ниже код отлично работает с u'arb ': вывод представляет собой список арабских лемм.
for synset in wn.synsets(u'عام',lang=('arb')):
for lemma in synset.lemma_names(u'arb'):
print lemma
Когда я пытаюсь выполнить ту же логику, что и приведенный выше код, с помощью synset, определений, например, 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 ответ
Open Multilingual Wordnet nltk имеет английские имена для всех наборов, так как это многоязычная база данных, основанная на оригинальном английском 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.سنة_مالِيّة')
Другими словами, леммы многоязычны, а синтаксис - нет.