Мы устарели StanfordTokenizer
/ StanfordSegmenter
, StanfordPOSTagger
и StanfordNERTagger
.
Было бы хорошо также отказаться от старых StanfordParser
, StanfordDependencyParser
и StanfordNeuralDependencyParser
2а. Оберните duck-types в CoreNLPParser
который имитирует функции старого интерфейса
2b. Напишите документацию о том, как использовать CoreNLPParser
для анализа зависимостей и нейронных зависимостей.
Оба метода (2a) и (2b) должны влиять только на аргумент properties
аргумента api_call
Текущий интерфейс для 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 .
Желаемый интерфейс может выглядеть так:
# 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)
Из этого получится хороший классный проект или хороший первый вызов; P
Привет, я хотел бы поработать над этой проблемой, но я не понял, почему макет используется так
Теперь тесты ничего не проверяют. Даже если tokenize body полностью стерто, тесты все равно пройдут. Возможно, нам стоит исправить метод api_call
а затем вызвать tokenize
corenlp_tokenizer = CoreNLPTokenizer()
corenlp_tokenizer.api_call = MagicMock(return_value=predefined_return_value)
corenlp_tokenizer.tokenize(input_string)
@artiemq Спасибо за интерес к вопросу!
Mock использовался в модульном тестировании, потому что это был быстрый способ задокументировать, как поток API-интерфейсов Python и как пользователь должен его использовать, но на самом деле он не вызывает CoreNLP.
Что касается unittest, возможно, использование unittest.mock
не лучший способ проверить функциональность CoreNLP. Не стесняйтесь переписывать / редактировать его и создавать PR =)
Я могу увидеть здесь информацию о том, как подключиться к «серверу» POStagger на порту 9000, но я не могу найти информацию о том, как запустить Stanford postagger server для прослушивания порта 9000 ... Кто-нибудь знает?
Так это решено или нет?
Я сейчас пытаюсь запустить nltk.tag.StanfordNERTagger()
. Есть небольшая проблема, которую я хотел исправить. Сделать это или нет?
Я хочу, чтобы парсер работал локально без API-вызовов. Возможно ли это с CoreNLPParser
?
Самый полезный комментарий
@artiemq Спасибо за интерес к вопросу!
Mock использовался в модульном тестировании, потому что это был быстрый способ задокументировать, как поток API-интерфейсов Python и как пользователь должен его использовать, но на самом деле он не вызывает CoreNLP.
Что касается unittest, возможно, использование
unittest.mock
не лучший способ проверить функциональность CoreNLP. Не стесняйтесь переписывать / редактировать его и создавать PR =)