Logotipo de Zephyrnet

Análisis sintáctico en PNL

Fecha:

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Uno de los casos de uso importantes del procesamiento del lenguaje natural (NLP) es el texto generativo. El texto generativo predice qué palabra debe venir a continuación en una oración. Las aplicaciones de texto generativo son los chatbots de preguntas y respuestas, la autocorrección de oraciones o palabras, y el autocompletado, la verificación gramatical, y estos casos ahora se han vuelto indispensables y parte de nuestra vida cotidiana.

Para ayudarnos a saber qué palabra vendrá a continuación, necesitamos aprender tanto como podamos qué palabras venían previamente en una oración. Para satisfacer esta necesidad y comprender qué palabras venían antes es donde las partes del discurso y el análisis sintáctico son temas muy importantes e integrales en la PNL.

Análisis sintáctico en PNL

Sintaxis del lenguaje

La sintaxis del lenguaje es fundamental para el texto generativo y sienta las bases para las partes del discurso y los árboles de análisis.

La palabra sintaxis se origina de la palabra griega sintaxis, que significa "arreglo", y se refiere a cómo las palabras se organizan juntas. De ahora en adelante, la sintaxis del lenguaje significa cómo está estructurado o dispuesto el lenguaje.

¿Cómo se ordenan las palabras juntas?

Hay muchas maneras diferentes de categorizar estas estructuras o arreglos. Una forma de clasificar cómo se organizan las palabras es agrupándolas, ya que las palabras se comportan como una sola unidad o frase, lo que también se conoce como constituyente.

Una oración puede tener diferentes reglas de lenguaje aplicadas y tener diferentes tipos de estructura. Como diferentes partes de la oración se basan en diferentes partes de la sintaxis que siguen las mismas reglas gramaticales que son de una frase nominal, frase verbal y frase preposicional.

Una oración se estructura de la siguiente manera:

Oración = S = Frase nominal + Frase verbal + Frase preposicional

S = NP + VP + PP

Los diferentes grupos de palabras que existen según las reglas gramaticales del inglés son:

  • Frase nominal (NP): Determinante + Sustantivos nominales = DET + Nominal
  • Frase verbal (VP): Verbo + gama de combinaciones
  • Frase preposicional (PP): Preposición + Frase nominal = P + NP

Podemos hacer versiones de diferentes formas y estructuras de la frase nominal, la frase verbal y la frase preposicional y unirlas en una oración.

Por ejemplo, veamos una oración: El niño comió los panqueques. Esta oración tiene la siguiente estructura:

  • El niño: Sintagma nominal
  • comió: Verbo
  • the pancakes: Sintagma Sustantivo (Determinante + Sustantivo)

Esta oración es correcta tanto estructural como contextualmente.

Sin embargo, ahora tomando otra oración: El niño comió los panqueques debajo de la puerta.

  • El niño: Sintagma nominal
  • comió: Verbo
  • the pancakes: Sintagma Sustantivo (Determinante + Sustantivo)
  • bajo: preposición
  • the door: Sintagma Sustantivo (Determinante + Sustantivo)

Aquí, la preposición bajo va seguido del sintagma nominal la puerta, que es sintácticamente correcto pero no contextualmente correcto.

Tomando la misma oración de otra manera: El niño comió los panqueques de la mesa de salto.

  • El niño: Sintagma nominal
  • comió: Verbo
  • the pancakes: Sintagma Sustantivo (Determinante + Sustantivo)
  • de: preposición
  • mesa de salto: Frase verbal

Esta oración es sintácticamente incorrecta como la preposición formulario va seguido de una frase verbal mesa de salto.

Componentes de la sintaxis de texto

Hay dos atributos imperativos de la sintaxis del texto: las etiquetas de parte del discurso y la gramática de dependencia.

El etiquetado de parte del discurso o el etiquetado de POS especifica la propiedad o el atributo de la palabra o token. Cada palabra en una oración está asociada con una parte de la etiqueta del discurso, como sustantivos, verbos, adjetivos, adverbios. Las etiquetas POS definen el uso y la función de una palabra en la oración.

¿Por qué necesitamos un árbol de dependencia cuando existe el etiquetado POS?

La parte del discurso solo etiqueta palabras individuales y no frases, por lo tanto, no es suficiente para crear un árbol de análisis. Los árboles de análisis son donde etiquetamos las frases como frase nominal, frase verbal o frase preposicional y debe estar en ese orden en particular.

Analizar esencialmente significa cómo asignar una estructura a una secuencia de texto. El análisis sintáctico implica el análisis de las palabras en la oración para la gramática y su disposición de una manera que muestre las relaciones entre las palabras.

La gramática de dependencia es un segmento del análisis de texto sintáctico. Determina la relación entre las palabras en una oración. Cada una de estas relaciones se representa en forma de triplete: relación, gobernador y dependiente. Como resultado del análisis recursivo, la relación observada entre las palabras se representa de arriba hacia abajo y se representa como un árbol, que se conoce como árbol de dependencia.

Estas relaciones gramaticales se pueden usar como características para muchos problemas de NLP, como el análisis de sentimientos de entidades, la identificación de entidades y la clasificación de textos.

Por ejemplo: representemos visualmente la oración "Los proyectos de ley sobre puertos e inmigración fueron presentados por el senador Brownback, republicano de Kansas". como un árbol de dependencia:

componentes de la sintaxis de texto | Análisis sintáctico en PNL

Fuente: https://nlp.stanford.edu/software/stanford-dependencies.html

Un analizador de lenguaje natural es un programa que determina qué grupo de palabras van juntas (como "frases") y qué palabras son el sujeto o el objeto de un verbo. El analizador NLP separa una serie de texto en partes más pequeñas según las reglas gramaticales. Si una oración que no se puede analizar puede tener errores gramaticales.

¿Cómo funciona un analizador?

El primer paso es identificar el sujeto de la oración. A medida que el analizador divide la secuencia de texto en un grupo de palabras que están relacionadas en una especie de frase. Entonces, este grupo de palabras que obtenemos que están relacionadas entre sí es lo que se conoce como el sujeto.

El análisis sintáctico y las partes del discurso, estas estructuras del lenguaje son independientes del contexto. La gramática se basa en la estructura o disposición de las palabras. No se basa en el contexto.

Lo importante a tener en cuenta es que la gramática siempre es sintácticamente correcta, es decir, sabia sintaxis y puede no tener sentido contextual.

Implementación en Python

Ahora, veamos cómo etiquetar las palabras y crear árboles de dependencia en Python.

Usando la biblioteca NLTK:

La biblioteca NLTK incluye:

  • tokenizador Punkt preentrenado, que se utiliza para tokenizar las palabras.
  • averaged_perceptron_tagger: se usa para etiquetar esas palabras tokenizadas en Partes del discurso

El etiquetador de parte del discurso de perceptrón implementa el etiquetado de parte del discurso utilizando el método llamado averaged_perceptron_tagger, un algoritmo de perceptrón estructurado. Este algoritmo se usa para averiguar qué palabra o token debe etiquetarse junto con las partes respectivas del discurso.

importar nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger')
desde nltk import pos_tag, word_tokenize, RegexpParser
text = "Reliance Retail adquiere una participación mayoritaria en la marca de diseño Abraham & Thakore".

fichas = word_tokenize(texto)

etiquetas = pos_tag(fichas)

etiquetas


La extracción de fragmentos o el análisis parcial es un proceso de extracción de frases cortas de la oración (etiquetadas como parte del discurso).

La fragmentación utiliza una sintaxis especial de expresiones regulares para las reglas que delimitan los fragmentos. Estas reglas deben convertirse en expresiones regulares 'regulares' antes de que se pueda fragmentar una oración.

Para esto, debemos llamar a una fórmula Regex, un patrón Regex, donde asignamos un patrón que es una frase verbal o una frase nominal y estos pequeños patrones se pueden reconocer y se llama Extracción de fragmentos.

chunker = RegexpParser(""" NP: {?*} #Para extraer frases nominales P: {} #Para extraer preposiciones V: {} #Para extraer verbos PP: {

} #Para extraer frases preposicionales
VP: { *} #Para eliminar frases verbales
“””)

resultado = chunker.parse(etiquetas) 
print('Nuestra notación de análisis: n', resultado)
resultado.dibujar()

Usando la biblioteca espacial:

import spacy # Cargando el modelo nlp=spacy.load('en_core_web_sm')
text = "Reliance Retail adquiere una participación mayoritaria en la marca de diseño Abraham & Thakore".
# Crear objeto Doc doc=nlp(texto)
# Obtener etiquetas de dependencia para token en doc: print(token.text,'=>',token.dep_)
# Importando visualizador desde spacy import displacy

# Visualizando el árbol de dependencias

displacy.render(doc,jupyter=True)


Nota final

La parte del discurso (POS) y el análisis sintáctico se utilizan para extraer sustantivos, verbos y frases preposicionales y son gramática independiente del contexto. Como estos son sintácticamente correctos y pueden no ser contextualmente correctos, necesitamos alguna forma de asociación, es decir, incrustaciones de palabras que ayuden a agregar contexto a la oración.

El enfoque más simple para el etiquetado de POS utilizando un algoritmo de perceptrón estructurado es dividir la oración en una especie de etiquetado e ir de izquierda a derecha.

Espero que el artículo te haya sido útil y hayas aprendido algo nuevo. Muchas gracias por pasar a leer y ayudar a compartir el artículo con su red 🙂

¡Feliz aprendizaje!

Acerca de mí

¡Hola! Soy Neha Seth. Tengo un programa de posgrado en ciencia e ingeniería de datos del Great Lakes Institute of Management y una licenciatura en estadística. Me han presentado como Los 10 autores invitados más populares en 2020 en Analytics Vidhya (AV).

Mi área de interés radica en la PNL y el aprendizaje profundo. También he aprobado el programa CFA. Puedes contactarme en Etiqueta LinkedIn y puedo leer mis otros blogs para AV.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

punto_img

Información más reciente

punto_img