Nltk: Mencela Stanford Parser tua

Dibuat pada 26 Sep 2017  ·  4Komentar  ·  Sumber: nltk/nltk

Kami telah menghentikan StanfordTokenizer / StanfordSegmenter , StanfordPOSTagger dan StanfordNERTagger .

Sebaiknya Anda juga menghentikan StanfordParser , StanfordDependencyParser dan StanfordNeuralDependencyParser oleh

  1. Menambahkan peringatan yang sesuai ke antarmuka lama

2a. Bungkus jenis bebek untuk CoreNLPParser yang mengemulasi fungsi antarmuka lama

2b. Tuliskan dokumentasi tentang cara menggunakan CoreNLPParser untuk menggunakan penguraian dependensi dan neural dependensi

  1. Menulis pengujian untuk antarmuka parser CoreNLP baru

Kedua metode (2a) dan (2b) seharusnya hanya mempengaruhi argumen properties dari api_call

Antarmuka saat ini untuk 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  .

Antarmuka yang diinginkan mungkin terlihat seperti ini:

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

Ini akan menjadi proyek kelas yang bagus atau tantangan pertama yang baik; P

dependency parsing enhancement goodfirstbug inactive nice idea tests

Komentar yang paling membantu

@artiemq Terima kasih atas minatnya pada masalah ini!

Mock digunakan dalam unittest karena itu adalah cara cepat untuk mendokumentasikan bagaimana aliran python dari API dan bagaimana pengguna harus menggunakannya tetapi itu tidak benar-benar memanggil CoreNLP.

Mengenai unittest, mungkin menggunakan unittest.mock bukanlah cara terbaik untuk menguji fungsionalitas CoreNLP. Silakan menulis ulang / mengeditnya dan membuat PR =)

Semua 4 komentar

Hai, saya ingin menangani masalah ini, tetapi saya tidak mengerti mengapa tiruan digunakan seperti ini

Sekarang tes tidak menguji apapun. Bahkan jika tokenize body benar-benar terhapus, pengujian akan tetap lulus. Mungkin kita harus menambal metode api_call dan kemudian memanggil tokenize

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

@artiemq Terima kasih atas minatnya pada masalah ini!

Mock digunakan dalam unittest karena itu adalah cara cepat untuk mendokumentasikan bagaimana aliran python dari API dan bagaimana pengguna harus menggunakannya tetapi itu tidak benar-benar memanggil CoreNLP.

Mengenai unittest, mungkin menggunakan unittest.mock bukanlah cara terbaik untuk menguji fungsionalitas CoreNLP. Silakan menulis ulang / mengeditnya dan membuat PR =)

Saya dapat melihat info di sini tentang cara menyambung ke 'server' POStagger di port 9000, tetapi saya tidak dapat menemukan informasi tentang cara menjalankan server postagger Stanford untuk mendengarkan di port 9000 ... Ada yang tahu?

Jadi apakah ini sudah diputuskan atau tidak?
Sekarang saya mencoba menjalankan nltk.tag.StanfordNERTagger() . Ada masalah kecil dengannya, yang ingin saya perbaiki. Haruskah saya melakukannya atau tidak?

Saya ingin parser berjalan secara lokal tanpa panggilan API. Apakah ini mungkin dengan CoreNLPParser ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat