¿Sabes cómo se dan las transiciones entre etiquetas en NLP? En este post te lo mostramos. Las etiquetas forman parte de los procesos de PoS Tagging y hacen referencia a las categorías con las que guardamos las palabras dentro de un corpus.
Transiciones entre etiquetas en NLP
Probabilidad y no probabilidad
Aquí veremos cuáles son las transiciones entre las etiquetas más frecuentes:
#Transiciones entre etiquetas en NLP
from collections import Counter
Para ello, lo que hacemos es un conteo de cuál es la frecuencia que más se pasa, por ejemplo, de una etiqueta a otra:
#Transiciones entre etiquetas en NLP
def print_transitions (transition_features):
for (label_from, label_to), weight in transition_features:
print ('{0 : 10} -> {1 : 10} -> {2 : 10}'.format (label_from, label_to, weight))
#Transiciones entre etiquetas en NLP
common_transitions = Counter (crf_. transition_features_). most_common (10)
print ('Transiciones más probables')
print_transitions (common_transitions)
I – MISC | -> | I – MISC | -> | 7.042636 |
B – MISC | -> | I – MISC | -> | 6.85297 |
B – PER | -> | I – PER | -> | 6.306684 |
B – LOC | -> | I – LOC | -> | 5.998112 |
0 | -> | 0 | -> | 5.513007 |
B – ORG | -> | I – ORG | -> | 5.291733 |
I – LOC | -> | I – LOC | -> | 5.146069 |
I – ORG | -> | I – ORG | -> | 5.08132 |
I – PER | -> | I – PER | -> | 4.172083 |
0 | -> | B – ORG | -> | 2.703623 |
Entonces, entre las transiciones más probables está que pasemos de un inside de misc (I – MISC) a otro insight de misc; esta es la transición más probable con un 7% de probabilidad (7.042636).
Lo mismo que pasar de un beginning de misc a un inside de misc, que también es muy probable.
¿Qué conclusión podemos sacar de esto? Que las etiquetas de misc suelen ser palabras compuestas. Esto lo determinamos porque la transición entre etiquetas más probable es la de I – MISC a I – MISC.
Del mismo modo, las personas también son una transición muy probable, pues suele haber bastantes nombres compuestos en el dataset.
#Transiciones entre etiquetas en NLP
uncommon_transitions = Counter (crf_. transition_features_). most_common [-10:]
print ('Transiciones menos probables')
print_transitions (uncommon_transitions)
I – ORG | -> | B – MISC | -> | -3.257557 |
I – PER | -> | B – ORG | -> | -3.349464 |
B – ORG | -> | B – MISC | -> | -3.382446 |
B – MISC | -> | B – MISC | -> | -3.437329 |
I – ORG | -> | B – LOC | -> | -3.547463 |
I – PER | -> | B – MISC | -> | -3.578658 |
0 | -> | I – MISC | -> | -4.732604 |
0 | -> | I – PER | -> | -5.07133 |
0 | -> | I – LOC | -> | -5.509748 |
0 | -> | I – ORG | -> | -5.962368 |
Entre las transiciones de etiquetas más improbables tenemos pasar de un inside de organización (I – ORG) a un beginning de miscelanea (B – MISC), ya que pasaría del final de una palabra a otra entidad directamente. Esto tiene un -3% de probabilidad de suceder.
Características de estado
Ahora tenemos las características de estado, en las que tenemos que las más positivas (que aportan más valor) son, en el caso de la organización, las palabras en minúscula, por ejemplo efe – cantabria, psoe – progresista, entre otras.
#Transiciones entre etiquetas en NLP
def print_state_features (state_features):
for (attr, label), weight in state_features:
print ('{0 : 10} -> {1 : 10} -> {2 : 10}'.format (weight, label, attr)
#Transiciones entre etiquetas en NLP
positive_state_features = Counter (crf_. state_features_).mos_common (10)
print ('Las más positivas')
print_state_features (positive_state_features)
9.78296 -> | B – ORG | -> | word.lower () : efe – cantabria |
8.353841 -> | B – ORG | -> | word.lower () : psoe – progresistas |
7.648093 -> | 0 | -> | BOS |
6.360913 -> | I – ORG | -> | -1 : word.lower () : l |
4.978503 -> | B – ORG | -> | word.lower () : xfera |
4.751749 -> | B – ORG | -> | word.lower () : telefónica |
4.698594 -> | 0 | -> | word.lower () : r. |
4.698594 -> | 0 | -> | word [-3:] : R. |
4.654081 -> | B – ORG | -> | word [-2:] : -e |
4.64318 -> | B – LOC | -> | -1 : word.lower () : cantabria |
#Transiciones entre etiquetas en NLP
negative_state_features = Counter (crf_. state_features_). most_common () [-10:]
print ('Las más negativas')
print_state_festures (negative_state_features)
-2.426293 -> | B – PER | -> | word [-3:] : nes |
-0.763604 -> | 0 | -> | word [-3:] : LOS |
-2.851233 -> | 0 | -> | word.loser () : mas |
-3.147827 -> | 0 | -> | -1 : word.lower () : españolas |
-3.162339 -> | I – PER | -> | -1 : word.lower () : san |
-3.50851 -> | B – PER | -> | -1 : word.lower () : del |
-4.110485 -> | 0 | -> | -1 : word.lower () : celebrarán |
-4.169095 -> | 0 | -> | word [-2:] : om |
-7.059675 | 0 | -> | word.isupper () |
-8.534745 -> | 0 | -> | word.istitle () |
Cabe recordar que cada dataset aloja sus propias etiquetas, así que no podríamos crear con certeza un estándar para todas. Por ejemplo, en nuestro caso, MISC probablemente signifique miscelánea, pero tendríamos que verificar con la información que nos proporciona el dataset.
Ahora que has aprendido cómo se dan las transiciones entre etiquetas en NLP, podemos seguir aprendiendo y haciendo avances en el propósito de triunfar en el mundillo.
Para poder acceder a las opciones laborales del Big Data, unas de las áreas con mejores salarios y más demanda del mercado laboral actual, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp.
Con esta formación intensiva e íntegra lograrás obtener los conocimientos teóricos y prácticos necesarios para alcanzar tus metas en el sector IT en pocos meses. ¡No esperes más para impulsar tu carrera y solicita ya más información!