La realización de las tareas de clasificación para el aprendizaje automático
Se puede poner el procesamiento de texto en uso para la máquina de aprendizaje con las tareas de clasificación. Al clasificar los textos, se asigna un documento a una clase por los temas que se discuten.
Puede descubrir los temas en un documento de diferentes maneras. El enfoque más simple es impulsado por la idea de que si un grupo de personas que habla o escribe sobre un tema, las personas tienden a utilizar palabras de un vocabulario limitado, porque se refieren o se refieren a un mismo tema. Cuando se comparte algún significado o son parte de un mismo grupo, se tiende a utilizar el mismo lenguaje.
En consecuencia, si usted tiene una colección de textos y no sabe qué temas las referencias de texto, se puede invertir el razonamiento anterior - sólo tiene que buscar grupos de palabras que tienden a asociar, por lo que su grupo recién formado por la reducción de dimensionalidad puede insinuar en los temas que le gustaría conocer. Esta es una tarea típica de aprendizaje no supervisado.
Esta tarea de aprendizaje es una aplicación perfecta para la descomposición en valores singulares (SVD) de la familia de algoritmos, porque al reducir el número de columnas, las características (que, en un documento, son las palabras) se reunirán en dimensiones, y se puede descubrir los temas mediante la comprobación de palabras de alta puntuación. SVD y el Análisis de Componentes Principales (PCA) proporcionan características de relacionarse tanto positiva como negativamente a las dimensiones de nueva creación.
Por lo que resulta un tema puede ser expresada por la presencia de una palabra (de alto valor positivo) o por la ausencia de ella (de alto valor negativo), haciendo la interpretación tanto complicado y contrario a la intuición para los seres humanos. El paquete scikit-learn incluye la clase de descomposición no negativo matriz de factorización (NMF), que permite una característica original que sólo se refieren positivamente con las dimensiones resultantes.
Este ejemplo comienza con un nuevo experimento después de cargar el 20newsgroups
conjunto de datos, un conjunto de datos recogida de grupos de noticias raspado de la web, seleccionando sólo los mensajes con respecto a los objetos en venta y quitar automáticamente los encabezados, pies de página y citas. Es posible que reciba un mensaje de advertencia en el sentido de, ADVERTENCIA: sklearn.datasets.twenty_newsgroups: Descarga de datos de ...
, con la URL del sitio utilizado para la descarga cuando se trabaja con este código.
advertencias de importación
(warnings.filterwarnings"ignorar")
de fetch_20newsgroups sklearn.datasets importación
conjunto de datos = fetch_20newsgroups (shuffle = Verdadero,
categorías = [ `misc.forsale`],
eliminar = ( `cabeceras`, ``, `pies de página de cotizaciones`), random_state = 101)
print ( `Mensajes:% i` % len (dataset.data))
Mensajes: 585
los TfidVectorizer
clase es importado y configurado para eliminar las palabras vacías (palabras comunes como el o y) Y mantener sólo las palabras distintivas, produciendo una matriz cuyas columnas apuntar a palabras distintas.
TfidfVectorizer de importación sklearn.feature_extraction.text
Vectorizer = TfidfVectorizer (max_df = 0,95,
min_df = 2, stop_words = `Inglés`)
TFIDF = vectorizer.fit_transform (dataset.data)
sklearn.decomposition de importación NMF
n_topics = 5
NMF = NMF (n_components = n_topics, random_state = 101) .fit (TFIDF)
frecuencia inversa documento término de frecuencia (TF-IDF) es un simple cálculo basado en la frecuencia de una palabra en el documento. Se pondera por la rareza de la palabra entre todos los documentos disponibles. Ponderación palabras es una forma efectiva para descartar palabras que no pueden ayudar a clasificar o identificar el documento al procesar el texto. Por ejemplo, puede eliminar las partes comunes del habla u otras palabras comunes.
Al igual que con otros algoritmos de la sklearn.decomposition
módulo, el n_components
parámetro indica el número de componentes deseados. Si desea buscar más temas, se utiliza un número más alto. A medida que el número requerido de temas aumenta, la método reconstruction_err_
reporta menores tasas de error. Depende de usted decidir cuándo parar dada la disyuntiva entre más tiempo en los cálculos y más temas.
La última parte de la secuencia de comandos da salida a las cinco temas resultantes. Al leer las palabras impresas, puede decidir sobre el significado de los temas extraídos, gracias a las características del producto (por ejemplo, las palabras conducir, duro, tarjeta, y flexible referirse a los ordenadores) o el producto exacto (por ejemplo, cómics, coche, equipo de música, juegos).
FEATURE_NAMEs = vectorizer.get_feature_names ()
n_top_words = 15
para topic_idx, tema en enumerate (nmf.components_):
impresión ("Tema #% d:" % (Topic_idx + 1),)
impresión (" ".join ([FEATURE_NAMEs [i] para i de
topic.argsort () [: - n_top_words - 1: -1]]))
Video: GAMES #13: Autoencoders
Tema # 1:
conducir tarjeta de disco floppy monitor de meg marca placa base disco RAM VGA SCSI
módem interno de color
Tema # 2:
00 50 20 10 15 dos de la cubierta 1. ° 25 de precios hombre de 40 cómics envío
Tema # 3:
condición excelente oferta de venta pidiendo mejor coche viejo buenas nuevas millas 10 000
cinta cd
Tema # 4:
correo electrónico en busca de correo juegos de juego interesados enviar como paquete de precios gracias
lista de venta quieren saber
Tema # 5:
estéreo vídeo del envío trabaja obo incluye amplificador más grandes vhs volumen Mathes unc
Gibbs Radley
Usted puede explorar el modelo resultante mirando en el atributo components_
Del modelo de NMF entrenado. Consiste en una NumPy ndarray
sosteniendo valores positivos para las palabras relacionadas con el tema. Mediante el uso de la argsort
método, es posible obtener los índices de las principales asociaciones, cuyos valores altos indican que son las palabras más representativas.
impresión (. nmf.components_ [0,:] argsort () [: - n_top_words-1: -1])
# Obtiene palabras superiores de 0 tema
[1337 1749 889 1572 2342 2263 2803 1290 2353 3615 3017 806 1022 1938
2334]
La decodificación de los índices de las palabras crea cadenas legibles por llamarlos de la matriz derivada de la get_feature_names
método aplicado a la TfidfVectorizer
que se equipó previamente.
impresión (vectorizer.get_feature_names () [1337])
# Transforma índice de 1337 volver al texto
manejar