La desambiguación de límites de oraciones ( SBD ), también conocida como división de oraciones , detección de límites de oraciones y segmentación de oraciones , es el problema en el procesamiento del lenguaje natural de decidir dónde comienzan y terminan las oraciones . Las herramientas de procesamiento del lenguaje natural a menudo requieren que su entrada se divida en oraciones; sin embargo, la identificación de límites de oraciones puede ser un desafío debido a la posible ambigüedad de los signos de puntuación . En inglés escrito , un punto puede indicar el final de una oración, o puede denotar una abreviatura , un punto decimal , una elipsis o una dirección de correo electrónico, entre otras posibilidades. Aproximadamente el 47% de los puntos en el corpus de The Wall Street Journal denotan abreviaturas. [1] Los signos de interrogación y exclamación pueden ser igualmente ambiguos debido a su uso en emoticones , código fuente y jerga .
Algunos idiomas, incluidos el japonés y el chino, tienen marcadores de final de oración inequívocos.
Estrategias
El método estándar " vanilla " para localizar el final de una oración: [ aclaración necesaria ]
- (a) Si es un punto, finaliza una oración.
- (b) Si el token precedente está en la lista de abreviaturas compilada a mano , entonces no finaliza una oración.
- (c) Si el siguiente token está en mayúscula, entonces finaliza una oración.
Esta estrategia permite obtener respuestas correctas en aproximadamente el 95% de las oraciones. [2] Cosas como nombres abreviados, por ejemplo, " DH Lawrence " (con espacios en blanco entre las palabras individuales que forman el nombre completo), ortografías idiosincrásicas utilizadas con fines estilísticos (que a menudo se refieren a un solo concepto, por ejemplo, el título de un producto de entretenimiento como " .hack//SIGN ") y el uso de puntuación no estándar (o uso no estándar de la puntuación) en un texto a menudo caen dentro del 5% restante.
Otro enfoque consiste en aprender automáticamente un conjunto de reglas a partir de un conjunto de documentos en los que los saltos de frase están marcados previamente. Las soluciones se han basado en un modelo de máxima entropía . [3] La arquitectura SATZ [4] utiliza una red neuronal para desambiguar los límites de las frases y logra una precisión del 98,5 %.
Software
- Ejemplos de uso de expresiones regulares compatibles con Perl (" PCRE ")
-
((?<=[a-z0-9][.?!])|(?<=[a-z0-9][.?!]\"))(\s|\r\n)(?=\"?[A-Z])$sentences = preg_split("/(?<!\..)([\?\!\.]+)\s(?!.\.)/", $text, -1, PREG_SPLIT_DELIM_CAPTURE);(para PHP )
- Uso en línea, bibliotecas y API
-
- detector_enviado – Java [5]
- Oración Lingua-EN – perl [6]
- Sentencia.pm – perl [7]
- SATZ – Un sistema de segmentación de oraciones adaptativo – por David D. Palmer – C [4]
- Kits de herramientas que incluyen detección de oraciones
-
- Apache OpenNLP [8]
- Trabajo independiente (software) [9]
- Kit de herramientas de lenguaje natural [10]
- PNL de Stanford [11]
- GExp [12]
- CogComp-PLN [13]
Véase también
- Expresión de varias palabras
- Puntuación
- Extracción de oraciones
- Espaciado entre oraciones
- Segmentación del habla
- Silabeo
- Segmentación de texto
- Memoria de traducción
- Separador de palabras
Referencias
- ^ E. Stamatatos; N. Fakotakis y G. Kokkinakis. "Extracción automática de reglas para la desambiguación de límites de oraciones". Actas del taller sobre aprendizaje automático en tecnología del lenguaje humano . Universidad de Patras. págs. 88–92.
- ^ O'Neil, John. "Hacer cosas con palabras, segunda parte: detección de límites de oraciones". Archivado desde el original el 21 de febrero de 2009. Consultado el 3 de enero de 2009 .
- ^ Reynar, JC; Ratnaparkhi, A. "Un enfoque de máxima entropía para identificar límites de oraciones" (PDF) . Consultado el 3 de enero de 2009 .
- ^ ab "SATZ: Un detector adaptativo de límites de oraciones". Archivado desde el original el 22 de septiembre de 2007.
- ^ "Página web de SentParBreaker". Archivado desde el original el 12 de noviembre de 2007.
- ^ "Lingua-EN-Sentence-0.25 - Módulo para dividir texto en oraciones. - metacpan.org". metacpan.org .
- ^ "Texto::Sentence - módulo para dividir texto en oraciones - metacpan.org". metacpan.org .
- ^ "Apache OpenNLP". opennlp.apache.org .
- ^ "Bienvenido | Página de inicio de FreeLing".
- ^ "NLTK :: Kit de herramientas de lenguaje natural". www.nltk.org .
- ^ "Software - El Grupo de Procesamiento del Lenguaje Natural de Stanford". nlp.stanford.edu .
- ^ "Archivo de código de Google: almacenamiento a largo plazo para alojamiento de proyectos de código de Google". code.google.com .
- ^ "CogCompNLP". 2 de enero de 2024 – vía GitHub.
Enlaces externos
- pySBD - Desambiguación de límites de oraciones en Python