2016-09-06 4 views
0

J'utilise Stanford dependency parser et je reçois la sortie suivante de la phraseConversion dépendances stanford en format numérique

J'ai tiré un éléphant dans mon sommeil

>>>python dep_parsing.py 
[((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')), ((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')), ((u'elephant', u'NN'), u'det', (u'an', u'DT')), ((u'shot', u'VBD'), u'nmod', (u'sleep', u'NN')), ((u'sleep', u'NN'), u'case', (u'in', u'IN')), ((u'sleep', u'NN'), u'nmod:poss', (u'my', u'PRP$'))] 

Cependant, je veux les jetons numérotés en sortie tout comme it is here

nsubj(shot-2, I-1) 
    root(ROOT-0, shot-2) 
    det(elephant-4, an-3) 
    dobj(shot-2, elephant-4) 
    case(sleep-7, in-5) 
    nmod:poss(sleep-7, my-6) 
    nmod(shot-2, sleep-7) 

Voici mon code jusqu'à maintenant.

from nltk.parse.stanford import StanfordDependencyParser 
    stanford_parser_dir = 'stanford-parser/' 
    eng_model_path = stanford_parser_dir + "stanford-parser-models/edu/stanford/nlp/models/lexparser/englishRNN.ser.gz" 
    my_path_to_models_jar = stanford_parser_dir + "stanford-parser-3.5.2-models.jar" 
    my_path_to_jar = stanford_parser_dir + "stanford-parser.jar" 

    dependency_parser = StanfordDependencyParser(path_to_jar=my_path_to_jar, path_to_models_jar=my_path_to_models_jar) 

    result = dependency_parser.raw_parse('I shot an elephant in my sleep') 
    dep = result.next() 
    a = list(dep.triples()) 
    print a 

Comment puis-je avoir une telle sortie?

+0

Ceci est une question différente, dans ce que j'ai demandé comment puis-je obtenir une sortie numérotée? et dans l'autre j'ai demandé comment je peux afficher un graphique. Devrais-je toujours l'enlever? –

Répondre

0

Écrivez une fonction récursive qui traverse votre arbre. Comme première passe, essayez d'attribuer les numéros aux mots.

+0

Je ne veux pas attribuer de nombres manuellement, puisque les nombres représentent l'index d'un mot particulier dans une phrase, donc dans le cas de mots répétés, cela pourrait créer une redondance. –

+0

Vous ne comprenez pas ce que je conduis. Je vais écrire le code dont vous avez besoin pour 50 $. Payez seulement si satisfait. –