Nltk: word_tokenize menggantikan karakter

Dibuat pada 15 Feb 2017  ·  5Komentar  ·  Sumber: nltk/nltk

Saat menggunakan fungsi word_tokenize, tanda kutip diganti dengan tanda kutip yang berbeda.

Contoh (Jerman):

import nltk
sentence = "\"Ja.\"" # sentence[0] = "
tokens = nltk.word_tokenize(sentence) #tokens[0] = ``
print(tokens[0] == sentence[0]) # Prints false.

Apakah ini bug atau ada alasan di balik perilaku ini?

Komentar yang paling membantu

@mwess Setelah beberapa pemeriksaan, konversi dari " ke `` adalah artefak dari tokenizer kata penn treebank asli .

Itu hanya terjadi ketika ada tanda kutip ganda, aturan regex yang melakukan penggantian adalah https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L49

Dan untuk tanda kutip tunggal, regex treebank tokenizer STARTING_QUOTES kita lihat bahwa itu tidak menunjukkan arah. Saya pikir ini dijaga agar konsisten dengan anotasi Penn Treebank.

Saya harap klarifikasi membantu.

Semua 5 komentar

Ya, itulah output yang diharapkan. Tanda kutip ganda berubah menjadi secara eksplisit menunjukkan pembukaan dan penutupan tanda kutip ganda. " pembukaan dikonversi menjadi 2x backtick dan penutupan menjadi 2x tanda kutip tunggal.

>>> from nltk import word_tokenize
>>> sent = '"this is a sentence inside double quotes."'
>>> word_tokenize(sent)
['``', 'this', 'is', 'a', 'sentence', 'inside', 'double', 'quotes', '.', "''"]
>>> word_tokenize(sent)[0]
'``'

>>> len(word_tokenize(sent)[0])
2
>>> word_tokenize(sent)[0] == '`'*2
True

>>> len(word_tokenize(sent)[-1])
2
>>> word_tokenize(sent)[-1] == "'" * 2
True

Saya tidak yakin apa alasan perilaku itu. Mungkin, itu harus eksplisit saat mengidentifikasi tanda kutip pembukaan/penutupan.

Terima kasih untuk penjelasannya.
Tetapi ketika saya mengganti tanda kutip ganda dengan satu (atau dua) tanda kutip tunggal atau tanda kutip balik, perilaku ini tidak terjadi.
Dan saya pikir agak aneh bahwa tokenizer mengganti bagian dari teks asli, karena dapat menyebabkan masalah dan tidak terlalu transparan.

Saya kira saya harus mengingatnya, tetapi saya lebih suka bahwa elemen asli dari string tetap sama.

@mwess Setelah beberapa pemeriksaan, konversi dari " ke `` adalah artefak dari tokenizer kata penn treebank asli .

Itu hanya terjadi ketika ada tanda kutip ganda, aturan regex yang melakukan penggantian adalah https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L49

Dan untuk tanda kutip tunggal, regex treebank tokenizer STARTING_QUOTES kita lihat bahwa itu tidak menunjukkan arah. Saya pikir ini dijaga agar konsisten dengan anotasi Penn Treebank.

Saya harap klarifikasi membantu.

Terima kasih banyak. Ini sebenarnya banyak membantu.

Mengubah teks asli tidak disarankan di banyak aplikasi. Saya berharap word_tokenize memiliki bendera untuk mematikan mengubah teks.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat