2016-09-09 54 views
5

Stanford CoreNLP zapewnia rozdzielczość rdzeniowania as mentioned here, a także this thread, this, dostarcza informacji na temat jej implementacji w języku Java.Rozdzielczość jądra w python nltk przy użyciu jądra StanfordNLP

Jednak używam Pythona i NLTK i nie jestem pewien, w jaki sposób można użyć funkcji CorelinLP w moim kodzie Pythona. Byłem w stanie ustawić StanfordParser w NLTK, to jest mój kod do tej pory.

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" 

Jak mogę użyć rozdzielczości CorelinLP w pythonie?

Odpowiedz

4

Jak wspomniano przez @Igor Można spróbować opakowanie Pythona realizowane w tym GitHub repo: https://github.com/dasmith/stanford-corenlp-python

Ten repo zawiera dwa główne pliki: corenlp .py client.py

Wykonaj następujące zmiany dostać coreNLP robocza:

  1. W pliku corenlp.py zmień ścieżkę folderu corenlp. Ustaw ścieżkę gdzie komputerze lokalnym zawierający folder corenlp i dodać ścieżkę w linii 144 corenlp.py

    if not corenlp_path: corenlp_path = <path to the corenlp file>

  2. Numer wersji pliku jar w „corenlp.py” jest inna. Ustaw go zgodnie z posiadaną wersją corenlp. Zmień go na linii 135 corenlp.py

    jars = ["stanford-corenlp-3.4.1.jar", "stanford-corenlp-3.4.1-models.jar", "joda-time.jar", "xom.jar", "jollyday.jar"]

w tym zastąpić 3.4.1 z wersji jar, które zostały pobrane.

  1. uruchom polecenie:

    python corenlp.py

Ten rozpocznie serwer

  1. teraz uruchamia główny program klienta

    python client.py

Zapewnia to słownik i można uzyskać dostęp do COREF używając „COREF” jako klucz:

Na przykład: Jan jest informatykiem. Lubi kodowanie.

{ 
    "coref": [[[["a Computer Scientist", 0, 4, 2, 5], ["John", 0, 0, 0, 1]], [["He", 1, 0, 0, 1], ["John", 0, 0, 0, 1]]]] 
} 

Próbowałem tego na Ubuntu 16.04. Użyj wersji 7 lub 8 java.

1

Może to działa dla Ciebie? https://github.com/dasmith/stanford-corenlp-python Jeśli nie, można spróbować połączyć dwa sobie używając http://www.jython.org/

+0

Próbowałem, nie działa. Jython jest implementacją języka Java w języku python, http://www.jython.org/docs/tutorial/indexprogress.html, nie mogę jej użyć, ponieważ wiele moich modułów używa NLTK, których nie mogę ponownie zastosować w języku Java. Wszelkie inne sugestie? –

1

stanfordcorenlp, stosunkowo nowe opakowanie, może pracować dla ciebie.

Załóżmy, że tekst jest

enter image description here

kodem "Barack Obama urodził się na Hawajach Jest prezydent Obama został wybrany w 2008 roku..":

# coding=utf-8 

import json 
from stanfordcorenlp import StanfordCoreNLP 

nlp = StanfordCoreNLP(r'G:\JavaLibraries\stanford-corenlp-full-2017-06-09', quiet=False) 
props = {'annotators': 'coref', 'pipelineLanguage': 'en'} 

text = 'Barack Obama was born in Hawaii. He is the president. Obama was elected in 2008.' 
result = json.loads(nlp.annotate(text, properties=props)) 

num, mentions = result['corefs'].items()[0] 
for mention in mentions: 
    print(mention) 

Every "Wspomnieć" powyżej to dyktando Pythona:

{ 
    "id": 0, 
    "text": "Barack Obama", 
    "type": "PROPER", 
    "number": "SINGULAR", 
    "gender": "MALE", 
    "animacy": "ANIMATE", 
    "startIndex": 1, 
    "endIndex": 3, 
    "headIndex": 2, 
    "sentNum": 1, 
    "position": [ 
    1, 
    1 
    ], 
    "isRepresentativeMention": true 
}