python - tokenizador de oraciones nltk, considere las nuevas líneas como límite de oraciones



nlp tokenize (1)

Estoy usando el PunkSentenceTokenizer de PunkSentenceTokenizer para PunkSentenceTokenizer un texto en un conjunto de oraciones. Sin embargo, el tokenizer no parece considerar un nuevo párrafo o nuevas líneas como una nueva oración.

>>> from nltk.tokenize.punkt import PunktSentenceTokenizer
>>> tokenizer = PunktSentenceTokenizer()
>>> tokenizer.tokenize('Sentence 1 \n Sentence 2. Sentence 3.')
['Sentence 1 \n Sentence 2.', 'Sentence 3.']
>>> tokenizer.span_tokenize('Sentence 1 \n Sentence 2. Sentence 3.')
[(0, 24), (25, 36)]

Me gustaría considerar las nuevas líneas como un límite de oraciones también. ¿De todos modos para hacer esto (necesito guardar las compensaciones también)?


Bueno, tuve el mismo problema y lo que hice fue dividir el texto en '\ n'. Algo como esto:

# in my case, when it had '\n', I called it a new paragraph, 
# like a collection of sentences
paragraphs = [p for p in text.split('\n') if p]
# and here, sent_tokenize each one of the paragraphs
for paragraph in paragraphs:
    sentences = tokenizer.tokenize(paragraph)

Esta es una versión simplificada de lo que tenía en producción, pero la idea general es la misma. Y, disculpen los comentarios y la documentación en portugués, esto se hizo en "propósitos educativos" para la audiencia brasileña

def paragraphs(self):
    if self._paragraphs is not None:
        for p in  self._paragraphs:
            yield p
    else:
        raw_paras = self.raw_text.split(self.paragraph_delimiter)
        gen = (Paragraph(self, p) for p in raw_paras if p)
        self._paragraphs = []
        for p in gen:
            self._paragraphs.append(p)
            yield p

código completo https://gitorious.org/restjor/restjor/source/4d684ea4f18f66b097be1e10cc8814736888dfb4:restjor/decomposition.py#Lundefined





tokenize