Kami telah menghentikan StanfordTokenizer
/ StanfordSegmenter
, StanfordPOSTagger
dan StanfordNERTagger
.
Sebaiknya Anda juga menghentikan StanfordParser
, StanfordDependencyParser
dan StanfordNeuralDependencyParser
oleh
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
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
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
?
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 =)