Nltk: 古いスタンフォードパーサーの廃止

作成日 2017年09月26日  ·  4コメント  ·  ソース: nltk/nltk

StanfordTokenizer / StanfordSegmenterStanfordPOSTaggerStanfordNERTaggerは非推奨になりました。

古いStanfordParserStanfordDependencyParserStanfordNeuralDependencyParserも非推奨にするのがよいでしょう。

  1. 古いインターフェースに適切な警告を追加する

2a。 古いインターフェースの機能をエミュレートするCoreNLPParserのアヒルタイプをラップします

2b。 CoreNLPParserを使用して依存関係とニューラル依存関係の解析を使用する方法のドキュメントを作成します

  1. 新しいCoreNLPパーサーインターフェイスのテストを作成します

(2a)と(2b)の両方のメソッドは、 api_callproperties引数にのみ影響するはずです。

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

dependency parsing enhancement goodfirstbug inactive nice idea tests

最も参考になるコメント

@artiemqこの問題に関心をお

単体テストでモックが使用されたのは、APIのPythonフローとユーザーがそれをどのように使用するかを文書化する簡単な方法でしたが、実際にはCoreNLPを呼び出さなかったためです。

単体テストに関しては、おそらくunittest.mockは、CoreNLP機能をテストするための最良の方法ではありません。 お気軽に書き直し・編集してPRを作成してください=)

全てのコメント4件

こんにちは、私はこの問題に取り組みたいのですが、なぜモックがこのように使用されたのかわかりませんでした

現在、テストは何もテストしません。 トークン化された本体が完全に消去された場合でも、テストは合格します。 たぶん、 api_callメソッドにパッチを当ててから、tokenizeを呼び出す必要があります

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

@artiemqこの問題に関心をお

単体テストでモックが使用されたのは、APIのPythonフローとユーザーがそれをどのように使用するかを文書化する簡単な方法でしたが、実際にはCoreNLPを呼び出さなかったためです。

単体テストに関しては、おそらくunittest.mockは、CoreNLP機能をテストするための最良の方法ではありません。 お気軽に書き直し・編集してPRを作成してください=)

ポート9000でPOStagger「サーバー」に接続する方法に関する情報はここにありますが、ポート9000でリッスンするためにStanfordpostaggerサーバーを

それで、これは決定されているかどうか?
nltk.tag.StanfordNERTagger()を実行しようとしています。 修正したい小さな問題があります。 やろうか?

パーサーをAPI呼び出しなしでローカルで実行したい。 これはCoreNLPParserですか?

このページは役に立ちましたか?
0 / 5 - 0 評価