Nltk: Memisahkan kalimat gagal pada beberapa kasus sudut

Dibuat pada 26 Agu 2019  ·  3Komentar  ·  Sumber: nltk/nltk

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

  • misalnya
  • yaitu
  • dkk.

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

nice idea tokenizer

Komentar yang paling membantu

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.

Semua 3 komentar

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.')

Apakah halaman ini membantu?
0 / 5 - 0 peringkat