2015-04-08 10 views
5

ich brauche Funktion auf arabische Worte zu tun, indem sie mit Python .. und ich brauche arabischen wordnet mit Python zu verknüpfen einig Verfahren wie zu tun:Import Arabisch Wordnet in Python

wn.synset('جميل') 

i Multilingual Lexicons finden: AWN - ArabicWN

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

und ich versuche zu laufen: Eine Reihe von grundlegenden python-Funktionen für den Zugriff auf die Datenbank

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

aber wenn Sie den Code (AWNDatabaseManagement.py) dieser Fehler auftreten laufen:

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 

irgendeine Idee?

+1

Woher kommt 'wn'? Es sollte eine Direktive wie 'Import Wordnet as wn' geben – Ashalynd

+0

globaler Name 'wn' ist in der Datei definiert (AWNDatabaseManagement.py) – Mona

Antwort

9

AWNDatabaseManagement.py sollte mit dem Argument -i, die das arabische WordNet als Wert hat gespeist werden. Wenn das Argument nicht angegeben ist, wird ein Standardpfad E:/usuaris/horacio/arabicWN/AWNdatabase/upc_db.xml verwendet.

Um dies zu beheben, laden Sie the xml database of Arabic WordNetupc_db.xml. Ich schlage vor, es in den gleichen Ordner mit dem Skript AWNDatabaseManagement.py zu legen. Dann laufen:

$ python AWNDatabaseManagement.py -i upc_db.xml 

Das, was ich bekam, nachdem er ausgeführt wird, keine Fehler:

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

Sie können auch die Linie 320

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

zu

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

und dann das Skript ohneausführen

Sie können es laden:

>> from AWNDatabaseManagement import wn 

wenn es fehlschlägt, überprüfen Sie, dass Sie die XML-Ressource in dem richtigen Weg setzen.


Jetzt etwas wie wn.synset('جميل') zu bekommen. Arabisch Wordnet hat eine Funktion wn.get_synsets_from_word(word), aber es gibt Offsets. Auch akzeptiert es die Wörter nur als in der Datenbank vokalisiert.

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

300218842 ist der Versatz des Synset von جميل: Zum Beispiel sollten Sie جَمِيل nicht جميل verwenden. Ich schlage vor, stattdessen die nächste Methode zu verwenden. Liste Worte:

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

Sie ein Ergebnis wie folgt erhalten:

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

Ihr Wort wählen, und eine ID seiner ids holen. IDs werden in Buckwalter romanization geschrieben. Viele IDs bedeuten, dass das Wort unterschiedliche Bedeutungen hat.Beschreiben Sie das gewählte Wort mit:

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

Jetzt haben Sie die Liste der Synsets. Weitere Informationen zu einem Synset finden Sie unter:

>> 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']] 
+0

also keine Möglichkeit, Wörter ohne Harkat/Tashkeel zu verwenden? in http://sourceforge.net/projects/javasourcecodeapiarabicwordnet/files/latest/download: Es gibt zwei Möglichkeiten API Java-Code 1- Mit Harkat/Tashkeel Im Hauptverfahren in Hauptklasse Schreib AWN awn = new AWN zu verwenden (XML-Dateipfad, true); 2- Ohne Harkat/Tashkeel Auf diese Weise wird der Code "Harkat/Tashkeel" aus der XML-Quelldatei und aus der Benutzereingabe entfernen In der Hauptmethode in Hauptklasse schreiben AWN awn = new AWN (XMLfilepath, false) ; Wo XMLfilepath ist der Pfad zur XML-Quelle in Ihrem Computer .... Was ist mit Python? – Mona

+0

@Mona Die Python-API ist nicht vollständig, aber sie sollte einen Umbruch haben, um die Vokalisierung zu übertreffen. Ich denke, du solltest eine andere Frage stellen, damit ich (oder jemand anders) eine klare Antwort geben kann. –