El part of speech tagging (o PoS tagging) es una técnica fundamental en NLP que consiste en etiquetar cada palabra de un documento en su correspondiente categoría gramatical.
![PoS tagging con spaCy 1](https://keepcoding.io/wp-content/uploads/2023/02/image-69.png)
En este artículo veremos cómo funciona el PoS tagging con spaCy y cuáles son sus aplicaciones. El etiquetado de palabras en las frases se emplea para obtener qué tipo de entidades son. Entre las categorías se encuentran los adjetivos, sustantivos, verbos, adverbios y preposiciones. Con PoS tagging lo que podemos hacer es definir la categoría gramatical a la que pertenece cada palabra.
¿Cuál es la utilidad de todo esto? Nos va a servir para definir un contexto dentro de una frase o documento.
PoS tagging con spaCy
El PoS tagging con spaCy viene incluido, por lo que solo tenemos que cargar el texto y ya tenemos el PoS y el tag de cada uno de los tokens que tengamos.
Utilidad del PoS tagging
- Posibilidad de encontrar los adjetivos/sustantivos/adverbios más comunes.
- Ayuda a los lemmatizers al desambiguar entre palabras.
- Grafos en los que los nodos son entidades y verbos. Posibilidad de analizar relaciones entre entidades.
- Posibles features (la distribución de categorías no siempre es homogénea en función del contexto).
Podríamos hacer un algoritmo que mirara verbos entre otras entidades, como nombres o adjetivos, y que fuera el verbo por el que se decidiera qué relación tienen estas entidades. Eso se suele hacer para crear bases de datos de grafos, donde cada nodo es una entidad y entre entidades hay distintas relaciones.
Atributos del PoS tagging con spaCy
- pos_: tipo de palabra (sustantivo, verbo, adjetivo, etc.).
- tag_: tipo de palabra, especificando más atributos.
- dep_: relación de dependencia semántica (complemento directo, indirecto, circunstancial, etc.).
Ejemplo de PoS tagging con spaCy
Veamos un ejemplo de PoS tagging con spaCy siguiendo la frase que te mostramos a continuación:
Mi nombre es Fran y vivo en Madrid. Hoy es lunes 31 de enero de 2022
Veamos, lo primero que haremos es cargar el texto y observar qué PoS le asigna spaCy:
#PoS tagging con spaCy
print (' {0 : 10} {1 : 10} '.format ('Token', 'pos'))
for idx, token in enumerate (doc):
print (' {0 : 10} {1 : 10} '.format (token.text, token.pos_))
En este caso tenemos que:
- A mi se le asigna el PoS DET, que quiere decir determinante. Los determinantes son palabras que modifican sustantivos y expresan la referencia de la frase nominal en contexto. En este caso, tenemos que el determinante es posesivo y establece una relación deíctica respecto a las personas del discurso.
- A nombre se le asigna NOUN, que quiere decir sustantivo. Los sustantivos son partes de una oración que denotan personas, animales, cosas o lugares, entre otros.
- A es se le asigna la categoría AUX, que significa auxiliar. Los verbos auxiliares no tienen un significado léxico como tal, sino gramatical. Aunque en este caso se trata de un verbo copulativo, que es una mezcla entre los verbos como tal y los verbos auxiliares, se le asigna esta categoría de manera generalizada, lo cual está bien. Los verbos copulativos tienen una particularidad y es que pueden ser el núcleo de un predicado y aparecer sin otro verbo (como lo hacen necesariamente los verbos auxiliares), pero no tienen un significado pleno, por ello no se les categoriza como verbos en sí.
- Y así, a cada una de las palabras se les va asignando una categoría específica, que corresponderá con su función en la oración.
#PoS tagging con spaCy
print (' {0 : 10} {1 : 10} '.format ('Token', 'tag'))
for idx, token in enumerate (doc):
print (' {0 : 10} {1 : 10} '.format (token.text, token.tag_))
#PoS tagging con spaCy
print (' {0 : 10} {1 : 10} '.format ('Token', 'dep', 'Meaning'))
for idx, token in enumerate (doc):
print (' {0 : 10} {1 : 10} {2 : 10} '.format (token.text, token.dep_, str (spacy.explain (token.dep_))))
Dependencia sintáctica
La dependencia sintáctica consiste en una representación visual de todo lo que hemos visto anteriormente:
#PoS tagging con spaCy
#Dependencia sintáctica
from spacy import displacy
displacy.render (doc, style = 'dep', jupyter = True, options = {'distance ': 100})
¿Quieres seguir avanzando?
Ahora que hemos visto cómo funciona el PoS tagging con spaCy y algunos ejercicios al respecto, es el momento de seguir aprendiendo. Para acceder a las opciones laborales del Big Data, una de las áreas en el mundo tech mejor pagadas y con mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva e íntegra adquirirás todos los conocimientos a nivel teórico y práctico necesarios para conseguir el trabajo de tus sueños en poco tiempo. ¡No sigas esperando para impulsar tu carrera y pide ahora mismo más información!