在python中导入阿拉伯语Wordnet

时间:2015-04-08 18:07:12

标签: python arabic wordnet

我需要使用python对阿拉伯语单词做功能.. 我需要链接阿拉伯语wordnet与python做一些方法,如:

wn.synset('جميل')

我找到多语言词典:AWN - ArabicWN

http://www.talp.upc.edu/index.php/technology/resources/multilingual-lexicons-and-machine-translation-resources/multilingual-lexicons/72-awn

我尝试运行: 一组用于访问数据库的基本python函数

http://nlp.lsi.upc.edu/awn/AWNDatabaseManagement.py.gz

但是在运行代码时(AWNDatabaseManagement.py) 发生此错误:

processing file  E:/usuaris/horacio/arabicWN/AWNdatabase/upc_db.xml
file  E:/usuaris/horacio/arabicWN/AWNdatabase/upc_db.xml  not correct

Traceback (most recent call last):
  File "/Users/s/Desktop/arab", line 403, in <module>
    wn.compute_index_w()
NameError: global name 'wn' is not defined 

任何想法?

1 个答案:

答案 0 :(得分:7)

AWNDatabaseManagement.py应该由具有阿拉伯语WordNet作为值的参数-i提供。如果未指定参数,则它将使用默认路径E:/usuaris/horacio/arabicWN/AWNdatabase/upc_db.xml

要解决此问题,请下载the xml database of Arabic WordNet upc_db.xml。我建议将其与脚本AWNDatabaseManagement.py放在同一个文件夹中。然后,运行:

$ python AWNDatabaseManagement.py -i upc_db.xml

这是我运行后得到的,没有错误:

processing file  upc_db.xml
<open file 'upc_db.xml', mode 'r' at 0xb74689c0>

您也可以更改第320行

opts['i']='E:/usuaris/horacio/arabicWN/AWNdatabase/upc_db.xml'

opts['i']='upc_db.xml'

然后在没有-i

的情况下运行脚本

您可以加载它:

>> from AWNDatabaseManagement import wn

如果失败,请检查您是否将xml资源放在正确的路径中。


现在得到像wn.synset('جميل')这样的东西。阿拉伯语Wordnet有一个函数wn.get_synsets_from_word(word),但它给出了偏移量。它也只接受在数据库中发声的单词。例如,您应该使用جَمِيل而不是جميل

>> wn.get_synsets_from_word(u"جَمِيل")
[(u'a', u'300218842')]

300218842是جميل的synset的偏移量。我建议改用下一个方法。列出单词:

 >> for word,ids  in sorted(wn.get_words(False)):
 ..     print word, ids 

你会得到这样的结果:

 جَمِيعَة [u'jamiyEap_1']
 جَمِيل [u'jamiyl_1']
 جَمِيْعَة [u'jamiyoEap_1']
 جَمَّدَ [u'jam~ada_2', u'jam~ada_1']

选择您的单词,然后选择其ID的ID。 ID以Buckwalter romanization写入。许多ids意味着这个词有不同的含义。通过以下方式描述所选单词:

>> wn._words["jamiyl_1"].describe()
wordid  jamiyl_1
value  جَمِيل
synsets  [u'jamiyl_a1AR']
forms  [(u'root', u'\u062c\u0645\u0644')]

现在你有了synsets列表。有关synset的更多信息,请使用:

>> wn._items["jamiyl_a1AR"].describe()
itemid  jamiyl_a1AR
offset  300218842
name  جَمِيل
type  synset
pos  a
input links  [[u'be_in_state', u'jamaAl_n1AR'], [u'near_antonym', u'qabiyH_a1AR']]
output links  [[u'near_antonym', u'qabiyH_a1AR']]