PNL | Etiquetado Regex y Affix

La coincidencia de expresiones regulares se utiliza para etiquetar palabras. Considere el ejemplo, los números pueden coincidir con \d para asignar la etiqueta CD (que se refiere a un número cardinal). O uno puede hacer coincidir los patrones de palabras conocidos, como el sufijo «ing». 

Entendiendo el concepto – 

  • RegexpTagger es una subclase de SequentialBackoffTagger. Se puede colocar antes de una clase DefaultTagger para etiquetar las palabras que los etiquetadores de n-gramas no detectaron y, por lo tanto, puede ser una parte útil de una string de retroceso.
  • En la inicialización, los patrones se guardan en la clase RegexpTagger. Luego se llama a choose_tag(), itera sobre los patrones. Luego, devuelve la primera etiqueta de expresión que puede coincidir con la palabra actual usando re.match().
  • Entonces, si las dos expresiones dadas coinciden, la etiqueta de la primera se devolverá sin siquiera probar la segunda expresión.
  • Si el patrón dado es como – (r’.*’, ‘NN’), la clase RegexpTagger puede reemplazar a la clase DefaultTagger

Código n.° 1: módulo de expresiones regulares de Python y sintaxis re 

Python3

patterns = [(r'^\d+$', 'CD'),
            # gerunds, i.e. wondering
            (r'.*ing$', 'VBG'),
            # i.e. wonderment
            (r'.*ment$', 'NN'),
            # i.e. wonderful
            (r'.*ful$', 'JJ')]

La clase RegexpTagger espera una lista de dos tuplas 

-> first element in the tuple is a regular expression
-> second element is the tag

Código #2: Uso de RegexpTagger  

Python3

# Loading Libraries
from tag_util import patterns
from nltk.tag import RegexpTagger
from nltk.corpus import treebank
 
test_data = treebank.tagged_sents()[3000:]
 
tagger = RegexpTagger(patterns)
print ("Accuracy : ", tagger.evaluate(test_data))

Producción : 

Accuracy : 0.037470321605870924

¿Qué es el etiquetado Affix? 
Es una subclase de ContextTagger. En el caso de la clase AffixTagger, el contexto es el sufijo o el prefijo de una palabra. Por lo tanto, indica claramente que esta clase puede aprender etiquetas basadas en substrings de longitud fija al principio o al final de una palabra. 
Especifica los sufijos de tres caracteres. Esas palabras deben tener al menos 5 caracteres y se devuelve Ninguno como etiqueta si una palabra tiene menos de cinco caracteres.

Código #3: Entendiendo AffixTagger. 

Python3

# loading libraries
from tag_util import word_tag_model
from nltk.corpus import treebank
from nltk.tag import AffixTagger
 
# initializing training and testing set   
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
 
print ("Train data : \n", train_data[1])
 
# Initializing tagger
tag = AffixTagger(train_data)
 
# Testing
print ("\nAccuracy : ", tag.evaluate(test_data))

Producción : 

Train data :  
[('Mr.', 'NNP'), ('Vinken', 'NNP'), ('is', 'VBZ'), ('chairman', 'NN'), 
('of', 'IN'), ('Elsevier', 'NNP'), ('N.V.', 'NNP'), (', ', ', '), ('the', 'DT'),
('Dutch', 'NNP'), ('publishing', 'VBG'), ('group', 'NN'), ('.', '.')]

Accuracy : 0.27558817181092166

Código #4: AffixTagger especificando prefijos de 3 caracteres.  

Python3

# Specifying 3 character prefixes
prefix_tag = AffixTagger(train_data,
                         affix_length = 3)
 
# Testing
accuracy = prefix_tag.evaluate(test_data)
 
print ("Accuracy : ", accuracy)

Producción : 

Accuracy : 0.23587308439456076

Código #5: AffixTagger especificando sufijos de 2 caracteres  

Python3

# Specifying 2 character suffixes
sufix_tag = AffixTagger(train_data,
                         affix_length = -2)
 
# Testing
accuracy = sufix_tag.evaluate(test_data)
 
print ("Accuracy : ", accuracy)

Producción : 

Accuracy : 0.31940427368875457

Publicación traducida automáticamente

Artículo escrito por Mohit Gupta_OMG 🙂 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *