Wir haben die StanfordTokenizer
/ StanfordSegmenter
, StanfordPOSTagger
und StanfordNERTagger
abgelehnt.
Es wäre gut, auch die alten StanfordParser
, StanfordDependencyParser
und StanfordNeuralDependencyParser
von zu verwerfen
2a. Wickeln Sie die Ententypen für CoreNLPParser
, die die Funktionen der alten Schnittstelle emulieren
2b. Schreiben Sie Dokumentationen darüber, wie Sie mit CoreNLPParser
das Parsing von Abhängigkeiten und neuronalen Abhängigkeiten verwenden können
Sowohl die (2a) als auch die (2b) Methode sollten nur das Argument properties
des api_call
Die aktuelle Schnittstelle für CoreNLPParser
:
>>> from nltk.parse.corenlp import CoreNLPParser
>>> sent = 'The quick brown fox jumps over the lazy dog.'
>>> next(parser.raw_parse(sent)).pretty_print() # doctest: +NORMALIZE_WHITESPACE
ROOT
|
S
_______________|__________________________
| VP |
| _________|___ |
| | PP |
| | ________|___ |
NP | | NP |
____|__________ | | _______|____ |
DT JJ JJ NN VBZ IN DT JJ NN .
| | | | | | | | | |
The quick brown fox jumps over the lazy dog .
Die gewünschte Oberfläche könnte folgendermaßen aussehen:
# Using Duck-types
>>> from nltk.parse.stanford import CoreNLPParser
>>> depparser = CoreNLPDependencyParser('http://localhost:9000')
>>> depparser.parse(sent)
>>> ndepparser = CoreNLPNeuralDependencyParser('http://localhost:9000')
>>> ndepparser.parse(sent)
# Using arguments to control `properties` for `api_call()`
>>> from nltk.parse.stanford import CoreNLPParser
>>> depparser = CoreNLPParser('http://localhost:9000', parser_type="dependency")
>>> depparser.parse(sent)
>>> ndepparser = CoreNLPNeuralDependencyParser('http://localhost:9000', parser_type="neural_dependency")
>>> ndepparser.parse(sent)
Dies wäre ein gutes Klassenprojekt oder eine gute erste Herausforderung
Hallo, ich würde gerne an diesem Thema arbeiten, aber ich habe nicht verstanden, warum Mock so verwendet wird
Jetzt testen Tests nichts. Auch wenn tokenize Körper vollständig gelöscht, werden die Tests noch passieren. Vielleicht sollten wir die api_call
-Methode patchen und dann tokenize aufrufen
corenlp_tokenizer = CoreNLPTokenizer()
corenlp_tokenizer.api_call = MagicMock(return_value=predefined_return_value)
corenlp_tokenizer.tokenize(input_string)
@artiemq Vielen Dank für das Interesse an der Ausgabe!
Mock wurde im Unittest verwendet, da es eine schnelle Möglichkeit war, zu dokumentieren, wie der Python-Fluss der APIs und wie ein Benutzer ihn verwenden sollte, aber CoreNLP nicht aufgerufen hat.
In Bezug auf die Unittest ist die Verwendung von unittest.mock
möglicherweise nicht der beste Weg, um die CoreNLP-Funktionen zu testen. Bitte zögern Sie nicht, es neu zu schreiben / zu bearbeiten und eine PR zu erstellen =)
Ich kann hier Informationen zum Herstellen einer Verbindung zum POStagger-Server an Port 9000 sehen, aber ich kann keine Informationen zum Ausführen des Stanford-Postagger-Servers zum Abhören von Port 9000 finden ... Weiß jemand Bescheid?
Ist das also entschieden oder nicht?
Ich versuche jetzt, nltk.tag.StanfordNERTagger()
auszuführen. Es gibt ein kleines Problem, das ich beheben wollte. Soll ich es tun oder nicht?
Ich möchte, dass der Parser lokal ohne API-Aufrufe ausgeführt wird. Ist das mit CoreNLPParser
?
Hilfreichster Kommentar
@artiemq Vielen Dank für das Interesse an der Ausgabe!
Mock wurde im Unittest verwendet, da es eine schnelle Möglichkeit war, zu dokumentieren, wie der Python-Fluss der APIs und wie ein Benutzer ihn verwenden sollte, aber CoreNLP nicht aufgerufen hat.
In Bezug auf die Unittest ist die Verwendung von
unittest.mock
möglicherweise nicht der beste Weg, um die CoreNLP-Funktionen zu testen. Bitte zögern Sie nicht, es neu zu schreiben / zu bearbeiten und eine PR zu erstellen =)