Nltk: Déprécier l'ancien analyseur de Stanford

Créé le 26 sept. 2017  ·  4Commentaires  ·  Source: nltk/nltk

Nous avons déconseillé les StanfordTokenizer / StanfordSegmenter , StanfordPOSTagger et StanfordNERTagger .

Il serait bon de déprécier également les anciens StanfordParser , StanfordDependencyParser et StanfordNeuralDependencyParser par

  1. Ajout des avertissements appropriés à l'ancienne interface

2a. Enveloppez les types de canard pour CoreNLPParser qui émule les fonctions de l'ancienne interface

2b. Rédigez des documentations sur la façon d'utiliser CoreNLPParser pour utiliser l'analyse des dépendances et des dépendances neuronales

  1. Ecrire des tests pour les nouvelles interfaces de l'analyseur CoreNLP

Les deux méthodes (2a) et (2b) ne devraient affecter que l'argument properties du api_call

L'interface actuelle pour 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  .

L'interface souhaitée peut ressembler à ceci:

# 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)

Cela ferait un bon projet de classe ou un bon premier défi; P

dependency parsing enhancement goodfirstbug inactive nice idea tests

Commentaire le plus utile

@artiemq Merci pour l'intérêt

Mock a été utilisé dans le test unitaire car c'était un moyen rapide de documenter comment le flux python des API et comment un utilisateur devrait l'utiliser, mais il n'a pas réellement appelé CoreNLP.

En ce qui concerne l'unittest, l'utilisation de unittest.mock n'est peut-être pas la meilleure façon de tester les fonctionnalités CoreNLP. N'hésitez pas à le réécrire / le modifier et à créer un PR =)

Tous les 4 commentaires

Salut, j'aimerais travailler sur ce problème, mais je n'ai pas compris pourquoi la simulation utilisée comme ça

Maintenant, les tests ne testent rien. Même si tokenize body est complètement effacé, les tests réussiront toujours. Peut-être que nous devrions patcher la méthode api_call puis appeler tokenize

  corenlp_tokenizer = CoreNLPTokenizer()
  corenlp_tokenizer.api_call = MagicMock(return_value=predefined_return_value)
  corenlp_tokenizer.tokenize(input_string)

@artiemq Merci pour l'intérêt

Mock a été utilisé dans le test unitaire car c'était un moyen rapide de documenter comment le flux python des API et comment un utilisateur devrait l'utiliser, mais il n'a pas réellement appelé CoreNLP.

En ce qui concerne l'unittest, l'utilisation de unittest.mock n'est peut-être pas la meilleure façon de tester les fonctionnalités CoreNLP. N'hésitez pas à le réécrire / le modifier et à créer un PR =)

Je peux voir des informations ici sur la façon de me connecter au «serveur» POStagger au port 9000, mais je ne peux pas trouver d'informations sur la façon d' exécuter le serveur postagger de Stanford pour écouter sur le port 9000 ... Quelqu'un le sait?

Alors, est-ce décidé ou non?
J'essaye maintenant d'exécuter nltk.tag.StanfordNERTagger() . Il y a un petit problème avec cela, que je voulais résoudre. Dois-je le faire ou pas?

Je veux que l'analyseur s'exécute localement sans appels d'API. Est-ce possible avec CoreNLPParser ?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

libingnan54321 picture libingnan54321  ·  3Commentaires

stevenbird picture stevenbird  ·  4Commentaires

zdog234 picture zdog234  ·  3Commentaires

BLKSerene picture BLKSerene  ·  4Commentaires

DavidNemeskey picture DavidNemeskey  ·  4Commentaires