N-grama es una secuencia de n elementos [1] . Desde un punto de vista semántico , puede ser una secuencia de sonidos, sílabas, palabras o letras. En la práctica, el N-grama es más común como una serie de palabras, las frases estables se denominan colocación . Una secuencia de dos elementos consecutivos a menudo se denomina digrama , una secuencia de tres elementos se denomina trigrama . Al menos cuatro o más elementos se designan como un N-grama, N se reemplaza por el número de elementos consecutivos.
Los N-gramas en su conjunto encuentran su aplicación en un amplio campo de la ciencia. Se pueden aplicar, por ejemplo, en el campo de las matemáticas teóricas , la biología , la cartografía , y también en la música . Los usos más comunes de los N-gramas incluyen las siguientes áreas:
Además, los N-gramas se utilizan ampliamente en el procesamiento del lenguaje natural .
En el campo del procesamiento del lenguaje natural, los N-gramas se utilizan principalmente para la predicción basada en modelos probabilísticos . El modelo de N-grama calcula la probabilidad de la última palabra de un N-grama si se conocen todas las anteriores. Cuando se utiliza este enfoque para el modelado del lenguaje, se supone que la apariencia de cada palabra depende únicamente de las palabras anteriores [2] .
Otra aplicación de los N-gramas es la detección de plagio . Si se divide el texto en varios fragmentos pequeños, representados por N-gramas, se pueden comparar fácilmente entre sí y así obtener el grado de similitud de los documentos analizados [3] . Los N-gramas a menudo se usan con éxito para categorizar texto e idioma. Además, se pueden usar para crear funciones que le permitan obtener conocimiento de los datos de texto. Usando N-gramas, uno puede encontrar eficientemente candidatos para reemplazar palabras mal escritas.
El propósito de construir modelos de N-gramas es determinar la probabilidad de usar una frase dada. Esta probabilidad se puede establecer formalmente como la probabilidad de ocurrencia de una secuencia de palabras en un determinado corpus (conjunto de textos). Por ejemplo, la probabilidad de la frase "la felicidad es placer sin remordimiento" se puede calcular como el producto de las probabilidades de cada una de las palabras de esta frase:
P = P(felicidad) * P(hay|felicidad) * P(placer|la felicidad es) * P(sin|la felicidad es placer) * P(arrepentimiento|la felicidad es placer sin)Para determinar P (felicidad), debe contar cuántas veces aparece esta palabra en el texto y dividir este valor por el número total de palabras. Calcular la probabilidad P(arrepentimiento|la felicidad es placer sin él) es más difícil. Para simplificar esta tarea, asumimos que la probabilidad de una palabra en un texto depende únicamente de la palabra anterior. Entonces nuestra fórmula para calcular la frase tomará la siguiente forma:
P = P(felicidad) * P(tener|felicidad) * P(placer|tener) * P(sin|placer) * P(remordimiento|sin)Calcular la probabilidad condicional P(es|felicidad) es fácil. Para hacer esto, contamos el número de pares de 'felicidad' y lo dividimos por el número de palabras 'felicidad' en el texto.
Como resultado, si contamos todos los pares de palabras en algún texto, podemos calcular la probabilidad de una frase arbitraria. Este conjunto de probabilidades calculadas será el modelo de bigrama.
Los centros de investigación de Google han utilizado modelos N-grama para una amplia gama de investigación y desarrollo. Estos incluyen proyectos como traducción estadística de un idioma a otro, reconocimiento de voz , corrección ortográfica, extracción de información y más. A los efectos de estos proyectos, se utilizaron corpus de texto que contenían varios billones de palabras.
Google decidió crear su propio edificio educativo. El proyecto se llama Google teracorpus y contiene 1.024.908.267.229 palabras recopiladas de sitios web públicos [4] .
Debido al uso frecuente de N-gramas para resolver varios problemas, se necesita un algoritmo confiable y rápido para extraerlos del texto. Una herramienta de extracción de N-gramas adecuada debería ser capaz de trabajar con un tamaño de texto ilimitado, trabajar rápidamente y hacer un uso eficiente de los recursos disponibles. Hay varios métodos para extraer N-gramas del texto. Estos métodos se basan en diferentes principios:
Los N-gramas sintácticos son N-gramas definidos por rutas en árboles de dependencia sintáctica o árboles de componentes, en lugar de por la estructura lineal del texto [6] [7] . Por ejemplo, la oración: “Las noticias económicas tienen poco impacto en los mercados financieros” se puede convertir en N-gramas sintácticos, siguiendo la estructura de árbol de sus relaciones de dependencia : noticias-económicas, impacto-menor, impacto-en-mercados-financiero, y otros [6] .
Los N-gramas sintácticos reflejan la estructura sintáctica a diferencia de los N-gramas lineales y se pueden usar en las mismas aplicaciones que los N-gramas lineales, incluso como características en un modelo vectorial. El uso de N-gramas sintácticos da mejores resultados en la resolución de ciertos problemas que el uso de N-gramas estándar, por ejemplo, para determinar la autoría [8] .