Nltk: DependencyGraph- oder Stanford Parser-API-Probleme mit Sätzen mit "/"

Erstellt am 18. Nov. 2016  ·  31Kommentare  ·  Quelle: nltk/nltk

Ein Benutzer hat berichtet, dass dieser Satz bei Verwendung der Stanford-API DependencyParser in NLTK für diesen Satz AssertionError auslöst:

Trotz all seiner Einblicke in die Traumwelt des Teenagerlebens und seines elektronischen Ausdrucks durch die Cyberkultur gibt der Film niemandem ein Viertel, der eine zusammenhängende Geschichte aus seiner zweieinhalbstündigen Laufzeit herausholen möchte.

Code:

>>> from nltk.parse.stanford import StanfordDependencyParser                                                                                       >>> dep_parser=StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")                                        
>>> sent = 'for all of its insights into the dream world of teen life , and its electronic expression through cyber culture , the film gives no quarter to anyone seeking to pull a cohesive story out of its 2 1/2-hour running time . '
>>> dep_parser.raw_parse(sent)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/nltk/parse/stanford.py", line 132, in raw_parse
    return next(self.raw_parse_sents([sentence], verbose))
  File "/Library/Python/2.7/site-packages/nltk/parse/stanford.py", line 150, in raw_parse_sents
    return self._parse_trees_output(self._execute(cmd, '\n'.join(sentences), verbose))
  File "/Library/Python/2.7/site-packages/nltk/parse/stanford.py", line 91, in _parse_trees_output
    res.append(iter([self._make_tree('\n'.join(cur_lines))]))
  File "/Library/Python/2.7/site-packages/nltk/parse/stanford.py", line 339, in _make_tree
    return DependencyGraph(result, top_relation_label='root')
  File "/Library/Python/2.7/site-packages/nltk/parse/dependencygraph.py", line 84, in __init__
    top_relation_label=top_relation_label,
  File "/Library/Python/2.7/site-packages/nltk/parse/dependencygraph.py", line 328, in _parse
    assert cell_number == len(cells)
AssertionError

Möglicherweise liest DependencyGraph die Ausgabe oder die Stanford-Ausgabe ist inkonsistent.

Weitere Informationen zum Setup für NLTK + Stanford-Tools finden Sie unter https://gist.github.com/alvations/e1df0ba227e542955a8a#stanford -parser

bug dependency parsing pleaseverify

Hilfreichster Kommentar

@ Dimazest Das Problem wurde gelöst. Vielen Dank für Ihre Hilfe und Geduld die ganze Zeit!

Alle 31 Kommentare

Hallo @alvations Irgendwelche Updates dazu?
Vielen Dank

@ hoavt-54 Ich denke, es gibt eine schnelle Möglichkeit zu überprüfen, ob es sich um die Stanford-Seite oder den DependencyGraph -Code handelt, der das Problem mithilfe der neuen Schnittstelle von # 1249 verursacht. Ich werde heute ein wenig beschäftigt sein, aber vielleicht kann jemand anderes es überprüfen und darauf zurückkommen.

Ich kann mal schauen, irgendwie habe ich dieses Problem verpasst.

@ Dimazest Hallo, ich bin gerade auf diesen Fehler

@ Tesslocl Was ist dein Satz? Haben Sie versucht, stattdessen CoreNLP (nltk / parse / corenlp.py) zu verwenden?

@dimazest Ich habe es gerade getan und bin auf einen anderen Fehler

Traceback (most recent call last):
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 386, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 382, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\Admin\Anaconda3\lib\http\client.py", line 1198, in getresponse
    response.begin()
  File "C:\Users\Admin\Anaconda3\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Users\Admin\Anaconda3\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Users\Admin\Anaconda3\lib\socket.py", line 576, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\adapters.py", line 423, in send
    timeout=timeout
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 649, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\util\retry.py", line 347, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\packages\six.py", line 686, in reraise
    raise value
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 388, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 308, in _raise_timeout
    raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=9000): Read timed out. (read timeout=60)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\classifier\feature_extraction.py", line 473, in <module>
    print(feature_extraction(test_file_id))
  File "E:\classifier\feature_extraction.py", line 146, in feature_extraction
    for line in dep_parse:
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 279, in raw_parse_sents
    parsed_data = self.api_call(sentence, properties=default_properties)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 247, in api_call
    timeout=60,
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\sessions.py", line 535, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\requests\adapters.py", line 499, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=9000): Read timed out. (read timeout=60)

Ich habe nur den StanfordDependencyParser-Teil geändert und den Rest des Codes unverändert gelassen. Ich habe die Dokumente überprüft und ich nehme an, dass die Methoden in CoreNLP dieselben sind, habe ich Recht? Das Parsen scheint erfolgreich zu sein, da sich der Fehler in der nächsten Zeile befindet, in der ich die Analyseergebnisse durchlaufe.

Sie müssen einen cornlp-Server starten, versuchen Sie:

with CoreNLPServer(port=9000) as server:
    parser = CoreNLPParser(url=server.url)
    parser.parse(...)

Es tut mir leid für die fehlende Dokumentation und für eine Antwort auf ein Hemd, während ich auf meinem Telefon tippe.

@dimazest Ich

Traceback (most recent call last):
  File "E:\classifier\feature_extraction.py", line 474, in <module>
    print(feature_extraction(test_file_id))
  File "E:\classifier\feature_extraction.py", line 135, in feature_extraction
    with CoreNLPServer(port=9000) as server:
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 81, in __init__
    try_port(port)
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 35, in try_port
    sock.bind(('', port))
OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted

Ich habe versucht, es zu googeln, aber ich weiß nicht, wie Steckdosen funktionieren ...

Sie können einen anderen Port ausprobieren: CoreNLPServer (Port = 9001), zum Beispiel oder nur CoreNLPServer (), dann sollte ein freier Port ausgewählt werden.

@dimazest Ich habe 9001 bis 9010 und auch leere Klammern ausprobiert und das bekomme ich jedes Mal:

Traceback (most recent call last):
  File "E:\classifier\feature_extraction.py", line 509, in <module>
    print(feature_extraction(test_file_id))
  File "E:\classifier\feature_extraction.py", line 136, in feature_extraction
    with CoreNLPServer() as server:
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 170, in __enter__
    self.start()
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 149, in start
    'Could not connect to the server.'
nltk.parse.corenlp.CoreNLPServerError: Could not connect to the server.

Da ich in China bin, habe ich mein VPN während des Betriebs eingeschaltet gelassen, aber immer noch kein Glück. Was könnte mein Problem hier sein?

Haben Sie corenlp .jars? Sie benötigen einen lokal laufenden Corenlp-Server.

Können Sie dieses Beispiel ausführen https://github.com/nltk/nltk/pull/1249#pullrequestreview -18096061

Ich habe Gläser unter dem Verzeichnis E:\classifier\stanford\stanford-corenlp-full-2016-10-31 und ich nehme an, dass dies diejenigen sind, auf die Sie sich beziehen:

stanford-corenlp-3.7.0.jar
stanford-corenlp-3.7.0-javadoc.jar
stanford-corenlp-3.7.0-models.jar
stanford-corenlp-3.7.0-sources.jar

Das Verzeichnis wurde auf die Umgebungsvariable CLASSPATH festgelegt.

Ich kann das Beispiel in der Windows-Eingabeaufforderung ausführen und dies ist die Ausgabe:

Python 3.5.3 |Anaconda custom (64-bit)| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from nltk.parse.corenlp import *
>>> global server
>>> server = CoreNLPServer()
>>> server.start()
>>> parser = CoreNLPParser(url='http://localhost:9000')
>>> sent = 'the quick brown fox jumps over the lazy dog'
>>> parser.raw_parse(sent)
<list_iterator object at 0x000001F0EFED69E8>
>>> fox_parsed = next(parser.raw_parse(sent))
>>> fox_parsed.pretty_print()
                     ROOT
                      |
                      NP
       _______________|_________
      |                         NP
      |                _________|___
      |               |             PP
      |               |     ________|___
      NP              NP   |            NP
  ____|__________     |    |     _______|____
 DT   JJ    JJ   NN  NNS   IN   DT      JJ   NN
 |    |     |    |    |    |    |       |    |
the quick brown fox jumps over the     lazy dog

Und als ich diese Zeile server.start() ausführte, wurde eine Windows-Sicherheitswarnung angezeigt, und ich dachte, es sei die ganze Zeit die Schuld der Firewall. Deshalb ging ich zu den Firewall-Einstellungen, um Java (TM) Platform SE-Binärdateien durch die Firewall zuzulassen. Ich dachte, dies würde das Problem lösen, aber wenn ich den Editor erneut öffne und den Code ausführe, wird immer noch der gleiche Fehler angezeigt:

Traceback (most recent call last):
  File "E:\classifier\feature_extraction.py", line 503, in <module>
    print(feature_extraction(test_file_id))
  File "E:\classifier\feature_extraction.py", line 130, in feature_extraction
    with CoreNLPServer() as server:
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 170, in __enter__
    self.start()
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 149, in start
    'Could not connect to the server.'
nltk.parse.corenlp.CoreNLPServerError: Could not connect to the server.

Können Sie nach dem Start des Servers in Ihrem Browser auf http: // localhost : 9000 zugreifen?

Sie können den Server auch selbst starten, siehe https://stanfordnlp.github.io/CoreNLP/corenlp-server.html

Wenn es ausgeführt wird und Sie über den Browser darauf zugreifen können, sollten Sie den Parser verwenden können:

parser = CoreNLPParser(url='http://localhost:9000')
# and so on

Um das herauszufinden, führe ich das Beispiel erneut an der Eingabeaufforderung aus, aber diesmal erhalte ich den bekannten Fehler

Python 3.5.3 |Anaconda custom (64-bit)| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from nltk.parse.corenlp import *
>>> global server
>>> server = CoreNLPServer()
>>> server.start()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 149, in start
    'Could not connect to the server.'
nltk.parse.corenlp.CoreNLPServerError: Could not connect to the server.
>>> server.start()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Admin\Anaconda3\lib\site-packages\nltk\parse\corenlp.py", line 149, in start
    'Could not connect to the server.'
nltk.parse.corenlp.CoreNLPServerError: Could not connect to the server.

... und ich habe keine Ahnung, was dazwischen passiert ist. Ich habe keine Konfiguration geändert.

Ich wollte dieses Projekt schon vor langer Zeit auf Linux verschieben, aber unter Linux wird immer wieder der Fehler NLTK was unable to find ***.jar! Set the CLASSPATH environment variable angezeigt. Ich habe CLASSPATH auf /etc/environment , /etc/profile und ~/.bash_profile und sogar versucht, diese Gläser auf $JAVA_HOME/lib/ kopieren, aber das Problem bleibt bestehen. Soll ich eine andere Ausgabe eröffnen?

Können Sie einen Corenlp-Server von einem Terminal aus starten (nicht von Python)? Weitere Informationen finden Sie unter https://stanfordnlp.github.io/CoreNLP/corenlp-server.html .

# Run the server using all jars in the current directory (e.g., the CoreNLP home directory)
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
E:\classifier\stanford\stanford-corenlp-full-2016-10-31>java -mx4g -cp "E:\classifier\stanford\stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer

E:\classifier\stanford\stanford-corenlp-full-2016-10-31>java -Xmx4g -cp "E:\classifier\stanford\stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -serverProperties StanfordCoreNLP-chinese.properties -port 9000 -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer

E:\classifier\stanford\stanford-corenlp-full-2016-10-31>java -mx4g -cp "E:\classifier\stanford\stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer

Sieht nicht so aus. Mache ich das richtig?

Ich bekomme endlich diese Stanford-Module, um unter Linux zu arbeiten. Mit den gleichen Codezeilen scheint der CoreNLP-Server ohne Probleme zu starten, aber ich erhalte andere Fehler in der Zeile, in der ich die Analyseergebnisse durchlaufe.

Traceback (most recent call last):
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 141, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/util/connection.py", line 83, in create_connection
    raise err
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/util/connection.py", line 73, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 356, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/home/tesslo/anaconda3/lib/python3.5/http/client.py", line 1107, in request
    self._send_request(method, url, body, headers)
  File "/home/tesslo/anaconda3/lib/python3.5/http/client.py", line 1152, in _send_request
    self.endheaders(body)
  File "/home/tesslo/anaconda3/lib/python3.5/http/client.py", line 1103, in endheaders
    self._send_output(message_body)
  File "/home/tesslo/anaconda3/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
  File "/home/tesslo/anaconda3/lib/python3.5/http/client.py", line 877, in send
    self.connect()
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 166, in connect
    conn = self._new_conn()
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 150, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
requests.packages.urllib3.exceptions.NewConnectionError: <requests.packages.urllib3.connection.HTTPConnection object at 0x7f110a9c4940>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/adapters.py", line 438, in send
    timeout=timeout
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 649, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/packages/urllib3/util/retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
requests.packages.urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /?properties=%7B%22annotators%22%3A+%22tokenize%2Cpos%2Clemma%2Cssplit%2Cdepparse%22%2C+%22outputFormat%22%3A+%22json%22%2C+%22ssplit.isOneSentence%22%3A+%22true%22%7D (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f110a9c4940>: Failed to establish a new connection: [Errno 111] Connection refused',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/media/tesslo/classifier/feature_extraction.py", line 503, in <module>
    print(feature_extraction(test_file_id))
  File "/media/tesslo/classifier/feature_extraction.py", line 142, in feature_extraction
    for line in dep_parse:
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/nltk/parse/corenlp.py", line 279, in raw_parse_sents
    parsed_data = self.api_call(sentence, properties=default_properties)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/nltk/parse/corenlp.py", line 247, in api_call
    timeout=60,
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 565, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 518, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 639, in send
    r = adapter.send(request, **kwargs)
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/requests/adapters.py", line 502, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /?properties=%7B%22annotators%22%3A+%22tokenize%2Cpos%2Clemma%2Cssplit%2Cdepparse%22%2C+%22outputFormat%22%3A+%22json%22%2C+%22ssplit.isOneSentence%22%3A+%22true%22%7D (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f110a9c4940>: Failed to establish a new connection: [Errno 111] Connection refused',))

Zu Ihrer Information Linux und Windows teilen sich die gleiche Hardware.

Ok, es gibt zwei Schritte:
1) Starten Sie einen CoreNLP-Java-Prozess. Es gibt zwei Möglichkeiten, ich schlage vor, manuell zu starten, nämlich den Befehl java -Xmx4g -cp ... . Hast du es geschafft? Sie sollten über einen Browser auf den Server zugreifen können, indem Sie http: // localhost: 9000 besuchen. Sie sollten in der Konsolenausgabe sehen, welcher Port verwendet wird.
2) Sobald der Server ausgeführt wird, können Sie einen CoreNLP-Python-Client parser = CoreNLPParser(url='http://localhost:9000') erstellen. Da Sie den CoreNLP-Java-Server selbst gestartet haben, müssen Sie ihn nicht innerhalb der Python-Sitzung starten (führen Sie nicht server = CoreNLPServer() ).

Die von Ihnen veröffentlichten Fehlermeldungen deuten darauf hin, dass der CoreNLP-Java-Server nicht ausgeführt wird.

Es ging schief:

tesslo<strong i="6">@TLU</strong>:/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31$ java -mx4g -cp "/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer
tesslo<strong i="7">@TLU</strong>:/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31$ java -Xmx4g -cp "/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -serverProperties StanfordCoreNLP-chinese.properties -port 9000 -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer
tesslo<strong i="8">@TLU</strong>:/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31$ java -mx4g -cp "/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -timeout 15000
Error: Could not find or load main class edu.stanford.nlp.pipeline.StanfordCoreNLPServer

Und http: // localhost : 9000 zeigt einen ERR_CONNECTION_REFUSED-Fehler an

Haben Sie es mit "*" als Klassenpfad versucht: j ava -mx4g -cp "*" ... ?

Hallo zusammen, anscheinend bin ich auch auf dieses Problem gestoßen. Mein Satz lautet:
"Vielleicht ein 2 21/2 Fuß Kabel?", Und es ist von billigerer Qualität als der Teil des Ladegeräts, an den der Micro-USB-Anschluss angeschlossen ist ... "
Und ich habe versucht herauszufinden, es scheint, dass das '/' diesen Fehler verursacht.

@caisinong haben Sie versucht, die neue CoreNLP-Schnittstelle zu verwenden? Siehe meine Kommentare oben.

@ Dimazest Entschuldigung für die Verzögerung. Ich habe gerade getan:

tesslo<strong i="7">@TLU</strong>:/media/tesslo/classifier/stanford/stanford-corenlp-full-2016-10-31$ java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
[main] INFO CoreNLP - --- StanfordCoreNLPServer#main() called ---
[main] INFO CoreNLP - setting default constituency parser
[main] INFO CoreNLP - warning: cannot find edu/stanford/nlp/models/srparser/englishSR.ser.gz
[main] INFO CoreNLP - using: edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz instead
[main] INFO CoreNLP - to use shift reduce parser download English models jar from:
[main] INFO CoreNLP - http://stanfordnlp.github.io/CoreNLP/download.html
[main] INFO CoreNLP -     Threads: 2
[main] INFO CoreNLP - Starting server...
[main] INFO CoreNLP - StanfordCoreNLPServer listening at /0:0:0:0:0:0:0:0:9000

Ich kann jetzt http: // localhost : 9000 besuchen, aber zurück zum Editor erhalte ich immer noch diesen Fehler in der Zeile, in der der Server gestartet wird:

Traceback (most recent call last):
  File "/media/tesslo/classifier/feature_extraction.py", line 503, in <module>
    print(feature_extraction(test_file_id))
  File "/media/tesslo/classifier/feature_extraction.py", line 130, in feature_extraction
    with CoreNLPServer() as server:
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/nltk/parse/corenlp.py", line 170, in __enter__
    self.start()
  File "/home/tesslo/anaconda3/lib/python3.5/site-packages/nltk/parse/corenlp.py", line 149, in start
    'Could not connect to the server.'
nltk.parse.corenlp.CoreNLPServerError: Could not connect to the server.

Sobald Sie einen Server manuell gestartet haben, müssen Sie

Lassen Sie den Server laufen und instanziieren Sie den Parser:

parser = CoreNLPParser(url='http://localhost:9000')

@ Dimazest Das Problem wurde gelöst. Vielen Dank für Ihre Hilfe und Geduld die ganze Zeit!

Ich habe ähnliche Erfahrungen. Das Starten des Stanford CorenNLP-Servers im Code ist unübersichtlich und sollte nur zu Testzwecken verwendet werden. Vielleicht sollten wir das dem Benutzer irgendwie nicht aussetzen.

Ich bin froh, dass die Dinge funktionieren. In der Tat sollte der Server außerhalb von Python-Code gestartet werden.

Gepatcht und behoben durch neue CoreNLP API =)

@dimazest Hi ... wenn der Text \ oder / Lösung für Assertion Error soll nur Core NLP verwendet werden? Ich benutze stanford-parser-full-2017-06-09
Der zum Parsen verwendete Satz war Iraqi security forces drove Islamic State fighters from the centre of a town just south of the militants\' main stronghold of Mosul on Saturday and reached within a few km (miles) of an airport on the edge of the city, a senior commander said.

@ kavin26 Ja, bitte verwenden Sie die nltk.parse.corenlp.CoreNLPParser .

@alvations vielen Dank: +1:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen