Natural Language Toolkit (NLTK) es una plataforma utilizada para crear programas para el análisis de texto. Podemos observar que los nombres masculinos y femeninos tienen algunas características distintivas. Es probable que los nombres que terminan en a, e e i sean femeninos, mientras que los nombres que terminan en k, o, r, s y t probablemente sean masculinos. Construyamos un clasificador para modelar estas diferencias con mayor precisión.
Para ejecutar el siguiente programa de python, debe instalar NLTK. Siga los pasos de instalación.
pip install nltk
El primer paso para crear un clasificador es decidir qué características de la entrada son relevantes y cómo codificar esas características. Para este ejemplo, comenzaremos mirando la letra final de un nombre dado. La siguiente función de extractor de características crea un diccionario que contiene información relevante sobre un nombre dado.
Ejemplo :
Input : gender_features('saurabh') Output : {'last_letter': 'h'}
Python3
def gender_features(word): return {'last_letter': word[-1]} gender_features('mahavir') # output : {'last_letter': 'r'}
Aparecerá una GUI, luego elija descargar «todos» para todos los paquetes y luego haga clic en ‘descargar’. Esto le proporcionará todos los tokenizadores, fragmentadores, otros algoritmos y todos los corpus, por lo que la instalación llevará bastante tiempo.
nltk.download()
La clasificación es la tarea de elegir la etiqueta de clase correcta para una entrada determinada. En las tareas de clasificación básicas, cada entrada se considera de forma aislada de todas las demás entradas y el conjunto de etiquetas se define de antemano. Algunos ejemplos de tareas de clasificación son:
- Decidir si un correo electrónico es spam o no.
- Decidir cuál es el tema de un artículo de noticias, a partir de una lista fija de áreas temáticas como «deportes», «tecnología» y «política».
- Decidir si una ocurrencia dada de la palabra banco se usa para referirse a la orilla de un río, una institución financiera, el acto de inclinarse hacia un lado o el acto de depositar algo en una institución financiera.
La tarea de clasificación básica tiene una serie de variantes interesantes. Por ejemplo, en la clasificación de clases múltiples, a cada instancia se le pueden asignar varias etiquetas; en la clasificación de clase abierta, el conjunto de etiquetas no se define de antemano; y en la clasificación secuencial, se clasifican conjuntamente una lista de entradas.
Un clasificador se denomina supervisado si se construye a partir de corpus de entrenamiento que contienen la etiqueta correcta para cada entrada. El marco utilizado por la clasificación supervisada se muestra en la figura.
El conjunto de entrenamiento se usa para entrenar el modelo y el conjunto dev-test se usa para realizar el análisis de errores. El conjunto de prueba sirve en nuestra evaluación final del sistema. Por las razones que se analizan a continuación, es importante que empleemos un conjunto de prueba de desarrollo independiente para el análisis de errores, en lugar de usar solo el conjunto de prueba.
La división de los datos del corpus en diferentes subconjuntos se muestra en la siguiente figura:
Obtenga el enlace del archivo de texto utilizado desde aquí:
- Por URL de texto directamente. hombre.txt , mujer.txt
male.txt
yfemale.txt
los archivos se descargan automáticamente mientras elnltk.download()
método se ejecuta correctamente. Ruta en el sistema local:
ruta de nltk:C:\Users\currentUserName\AppData\Roaming
ruta para archivos dentro de nltk:\nltk_data\corpora\names
Python3
# importing libraries import random from nltk.corpus import names import nltk def gender_features(word): return {'last_letter':word[-1]} # preparing a list of examples and corresponding class labels. labeled_names = ([(name, 'male') for name in names.words('male.txt')]+ [(name, 'female') for name in names.words('female.txt')]) random.shuffle(labeled_names) # we use the feature extractor to process the names data. featuresets = [(gender_features(n), gender) for (n, gender)in labeled_names] # Divide the resulting list of feature # sets into a training set and a test set. train_set, test_set = featuresets[500:], featuresets[:500] # The training set is used to # train a new "naive Bayes" classifier. classifier = nltk.NaiveBayesClassifier.train(train_set) print(classifier.classify(gender_features('mahavir'))) # output should be 'male' print(nltk.classify.accuracy(classifier, train_set)) # it shows accuracy of our classifier and # train_set. which must be more than 99 % # classifier.show_most_informative_features(10)
Obtener características informativas de Clasificador:
Python3
classifier.show_most_informative_features(10) # 10 indicates 10 rows
Producción:
Publicación traducida automáticamente
Artículo escrito por kulkarnimahesh321 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA