Saya mengerti betapa sulitnya untuk membagi kalimat yang mengandung singkatan dan menambahkan singkatan dapat memiliki jebakan, seperti yang dijelaskan dengan baik di #2154. Namun, saya telah menemukan beberapa kasus sudut yang ingin saya tanyakan. Sepertinya menggunakan salah satu dari berikut ini
dalam kalimat akan membagi kalimat dengan cara yang salah.
Contoh untuk ie dan eg
>>> sentence = ("Even though exempli gratia and id est are both Latin "
"(and therefore italicized), no need to put e.g. or i.e. in "
"italics when they’re in abbreviated form.")
>>> sent_tokenize_list = sent_tokenize(sentence)
>>> sent_tokenize_list
['Even though exempli gratia and id est are both Latin (and therefore italicized), no need to put e.g.',
'or i.e.',
'in italics when they’re in abbreviated form.']
Contoh untuk dkk.
>>> from nltk.tokenize import sent_tokenize
>>> sentence = ("If David et al. get the financing, we can move forward "
"with the prototype. However, this is very unlikely be cause "
"they did not publish sufficiently last year.")
>>> sent_tokenize_list = sent_tokenize(sentence)
>>> sent_tokenize_list
['If David et al.',
'get the financing, we can move forward with the prototype.',
'However, this is very unlikely because they did not publish sufficiently last year.']
Di laptop saya, saya menggunakan nltk.__version__
3.4.5.
Seperti yang saya lihat, masalah ini berbeda dari #2154 karena ini adalah singkatan yang terkenal dan umum digunakan (terutama di kalangan akademis).
Retasan cepat, mengikuti #2154
>>> import nltk
>>> punkt = nltk.data.load('tokenizers/punkt/english.pickle')
>>> punkt._params.abbrev_types.add('al')
>>> text = 'If David et al. get the financing, we can move forward with the prototype. However, this is very unlikely be cause they did not publish sufficiently last year.'
>>> punkt.tokenize(text)
['If David et al. get the financing, we can move forward with the prototype.',
'However, this is very unlikely be cause they did not publish sufficiently last year.']
Tapi mungkin ada baiknya untuk memiliki tokenizer kalimat yang lebih baik (#2008, #1214) seperti yang kami lakukan dengan kata tokenizer (#2355).
Misal kita bisa dengan mudah semua nltk.corpus.nonbreaking_prefixes
ke punkt._params.abbrev_types
sebagai langkah awal.
Saya akan menambahkan masalah di sepanjang baris ini, tetapi melihat bahwa Anda telah mengalahkan saya untuk itu. Jika/ketika orang-orang memperbaikinya, saya sarankan untuk meninjau daftar singkatan Latin di sini:
https://en.wikipedia.org/wiki/List_of_Latin_abbreviations
Secara teknis, singkatan-singkatan tersebut dalam bentuk tertulis lengkap dan tidak disingkat, mewakili _ekspresi multi-kata_ (_MWEs_), bukan? Maksud saya, oke, secara teknis mereka (juga) mewakili _phrasal templates_ tetap, tetapi itu tidak mengubah status MWE mereka, jadi, saya ingin tahu apakah #2202 dapat membantu dengan masalah ini (walaupun saya merasa jawabannya akan turun ke "Tidak ")
(PS, fakta menarik: '& al.' adalah kependekan resmi dari 'et al.', karena '&c.' adalah kependekan legal dari 'dll.')
Komentar yang paling membantu
Retasan cepat, mengikuti #2154
Tapi mungkin ada baiknya untuk memiliki tokenizer kalimat yang lebih baik (#2008, #1214) seperti yang kami lakukan dengan kata tokenizer (#2355).
Misal kita bisa dengan mudah semua
nltk.corpus.nonbreaking_prefixes
kepunkt._params.abbrev_types
sebagai langkah awal.