Nós descontinuamos StanfordTokenizer
/ StanfordSegmenter
, StanfordPOSTagger
e StanfordNERTagger
.
Seria bom também descontinuar os antigos StanfordParser
, StanfordDependencyParser
e StanfordNeuralDependencyParser
por
2a. Envolva os tipos de pato para CoreNLPParser
que emula as funções da interface antiga
2b. Escreva documentações de como usar CoreNLPParser
para usar a análise de dependência e dependência neural
Os métodos (2a) e (2b) devem afetar apenas o argumento properties
do api_call
A interface atual 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 .
A interface desejada pode ter a seguinte aparência:
# 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)
Isso seria um bom projeto de classe ou um bom primeiro desafio; P
Olá, gostaria de trabalhar neste problema, mas não entendi por que o mock era usado assim
Agora, os testes não testam nada. Mesmo que o tokenize body seja completamente apagado, os testes ainda assim serão aprovados. Talvez devêssemos corrigir o método api_call
e, em seguida, chamar tokenize
corenlp_tokenizer = CoreNLPTokenizer()
corenlp_tokenizer.api_call = MagicMock(return_value=predefined_return_value)
corenlp_tokenizer.tokenize(input_string)
@artiemq Obrigado pelo interesse no assunto!
Mock foi usado no teste de unidade porque era uma maneira rápida de documentar como o fluxo de python das APIs e como um usuário deveria usá-lo, mas na verdade não chamou CoreNLP.
Com relação ao teste de unidade, talvez usar unittest.mock
não seja a melhor maneira de testar as funcionalidades do CoreNLP. Sinta-se à vontade para reescrever / editar e criar um PR =)
Posso ver informações aqui sobre como conectar ao POStagger 'servidor' na porta 9000, mas não consigo encontrar informações sobre como executar o servidor Postagger de Stanford para escutar na porta 9000 ... Alguém sabe?
Então, isso está decidido ou não?
Agora estou tentando executar nltk.tag.StanfordNERTagger()
. Há um pequeno problema que eu queria consertar. Devo fazer isso ou não?
Quero que o analisador seja executado localmente sem chamadas de API. Isso é possível com CoreNLPParser
?
Comentários muito úteis
@artiemq Obrigado pelo interesse no assunto!
Mock foi usado no teste de unidade porque era uma maneira rápida de documentar como o fluxo de python das APIs e como um usuário deveria usá-lo, mas na verdade não chamou CoreNLP.
Com relação ao teste de unidade, talvez usar
unittest.mock
não seja a melhor maneira de testar as funcionalidades do CoreNLP. Sinta-se à vontade para reescrever / editar e criar um PR =)