Hemos desaprobado los StanfordTokenizer
/ StanfordSegmenter
, StanfordPOSTagger
y StanfordNERTagger
.
Sería bueno descartar también los antiguos StanfordParser
, StanfordDependencyParser
y StanfordNeuralDependencyParser
por
2a. Envuelva los tipos de pato por CoreNLPParser
que emulan las funciones de la interfaz anterior
2b. Escriba documentación sobre cómo usar CoreNLPParser
para usar el análisis de dependencia y dependencia neuronal
Ambos métodos (2a) y (2b) solo deberían afectar el argumento properties
del api_call
La interfaz actual para 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 .
La interfaz deseada podría verse así:
# 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)
Esto sería un buen proyecto de clase o un buen primer desafío; P
Hola, me gustaría trabajar en este problema, pero no entendí por qué mock se usa así.
Ahora las pruebas no prueban nada. Incluso si el cuerpo de tokenizar se borra por completo, las pruebas aún se aprobarán. Tal vez deberíamos parchear el método api_call
y luego llamar a tokenize
corenlp_tokenizer = CoreNLPTokenizer()
corenlp_tokenizer.api_call = MagicMock(return_value=predefined_return_value)
corenlp_tokenizer.tokenize(input_string)
@artiemq ¡ Gracias por el interés en el tema!
Mock se usó en la prueba unitaria porque era una forma rápida de documentar cómo el flujo de Python de las API y cómo un usuario debería usarlo, pero en realidad no llamó a CoreNLP.
Con respecto a la prueba unitaria, quizás usar unittest.mock
no sea la mejor manera de probar las funcionalidades de CoreNLP. Siéntase libre de reescribirlo / editarlo y crear un PR =)
Puedo ver información aquí sobre cómo conectarme al 'servidor' POStagger en el puerto 9000, pero no puedo encontrar información sobre cómo ejecutar el servidor postagger de Stanford para escuchar en el puerto 9000 ... ¿Alguien lo sabe?
Entonces, ¿esto está decidido o no?
Ahora estoy intentando ejecutar nltk.tag.StanfordNERTagger()
. Hay un pequeño problema que quería solucionar. ¿Lo hago o no?
Quiero que el analizador se ejecute localmente sin llamadas a la API. ¿Es esto posible con CoreNLPParser
?
Comentario más útil
@artiemq ¡ Gracias por el interés en el tema!
Mock se usó en la prueba unitaria porque era una forma rápida de documentar cómo el flujo de Python de las API y cómo un usuario debería usarlo, pero en realidad no llamó a CoreNLP.
Con respecto a la prueba unitaria, quizás usar
unittest.mock
no sea la mejor manera de probar las funcionalidades de CoreNLP. Siéntase libre de reescribirlo / editarlo y crear un PR =)