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