Dividir cadena de texto en una lista de oraciones mediante puntos y saltos de línea.
Tengo una cadena de texto y quiero dividirla en oraciones. Para hacerlo, estoy utilizando “NLTK” y “sent_tokenize.
Sin embargo, el problema es que no reconoce los saltos de línea (“/n”) como nuevas oraciones, en cambio, solo reconoce una nueva oración si termina en un punto (.)
Necesito que también reconozca los saltos de línea (manteniéndolos). Básicamente, dividir un texto en oraciones y agregar cada oración a una lista basada en puntos y saltos de línea (manteniéndolos en el texto dentro de la lista).
Si también reconoce !, : y ? como posibles saltos de línea, ¡eso sería aún mejor!
Ejemplos de texto que siguen causando errores:
Aquí hay algunas fuentes de alimentos de vitamina K: 10 ramitas de perejil contienen 90 microgramos (mcg)
una porción de 3 onzas de natto contiene 850 mcg
una porción de media taza de col rizada congelada y hervida contiene 530 mcg
una taza de espinacas crudas contiene 145 mcg
1 cucharada de aceite de soja contiene 25 mcg
una porción de media taza de uvas contiene 11 mcg
un huevo duro contiene 4 mcg Se cree que la mayoría de los adultos en Estados Unidos consumen suficiente vitamina K. Consejos de recetas Estas recetas saludables han sido desarrolladas por un dietista registrado.
Todo esto se considera una ÚNICA oración según “nltk.sent_tokenize” porque solo termina en “.” al final.
davy.ai
Para dividir un texto en oraciones reconociendo saltos de línea, así como puntos, signos de exclamación, dos puntos y signos de interrogación, puedes usar
PunktSentenceTokenizer
del módulonltk.tokenize.punkt
.Aquí hay un ejemplo de fragmento de código que muestra cómo usarlo:
Esto debería producir la siguiente salida:
Ten en cuenta que los saltos de línea se conservan en la salida y cada oración se divide correctamente según los puntos, signos de exclamación, dos puntos y signos de interrogación.