Executar tarefas de classificação para a aprendizagem de máquina

Você pode colocar o processamento de texto em uso para aprendizagem de máquina com tarefas de classificação. Quando você classificar textos, você atribuir um documento a uma classe por causa dos temas que discute.

Você pode descobrir os tópicos em um documento de maneiras diferentes. A abordagem mais simples é solicitado pela ideia de que, se um grupo de pessoas fala ou escreve sobre um tópico, as pessoas tendem a usar palavras de um vocabulário limitado porque se referem ou se relacionam com o mesmo tema. Quando você compartilha algum significado ou são parte do mesmo grupo, você tende a usar a mesma linguagem.

Conseqüentemente, se você tem uma coleção de textos e não sei o que temas as referências de texto, você pode inverter o raciocínio anterior - você pode simplesmente olhar para grupos de palavras que tendem a associar, de modo que seu grupo recém-formado por redução de dimensionalidade pode sugerir nos temas que você gostaria de saber sobre. Esta é uma tarefa típica aprendizado não supervisionado.

Esta tarefa de aprendizagem é um aplicativo perfeito para o valor singular decomposição (SVD) família de algoritmos, porque ao reduzir o número de colunas, as características (que, em um documento, são as palavras) se reunirão em dimensões, e você pode descobrir os temas verificando palavras de alta pontuação. SVD e Análise de Componentes Principais (PCA) fornecem recursos para relacionar tanto positiva como negativamente às dimensões recém-criados.

Assim, um assunto resultante pode ser expresso pela presença de uma palavra (alto valor positivo) ou pela ausência da mesma (alta valor negativo), fazendo interpretação tanto complicado e contra-intuitivo para os seres humanos. O pacote scikit-learn inclui a classe de decomposição não-matriz negativa Factorization (NMF), que permite que uma característica original para referem-se apenas de forma positiva com as dimensões resultantes.

Este exemplo começa com uma nova experiência depois de carregar o 20newsgroups conjunto de dados, um conjunto de dados coleta newsgroup raspada da web, selecionando apenas os posts sobre objetos para venda e remoção automaticamente cabeçalhos, rodapés e citações. Você pode receber uma mensagem de aviso para o efeito, AVISO: sklearn.datasets.twenty_newsgroups: Transferir conjunto de dados a partir de ..., com a URL do site usado para a descarga quando se trabalha com este código.

avisos de importação

warnings.filterwarnings ("ignorar")

de fetch_20newsgroups sklearn.datasets importação

conjunto de dados = fetch_20newsgroups (Shuffle = true,

Categorias = [ `misc.forsale`],

remover = ( ``, `cabeçalhos rodapés`, ``) cita, random_state = 101)

print ( `Mensagens:% i` % len (dataset.data))

Mensagens: 585

o TfidVectorizer classe é importado e configurado para remover palavras de parada (palavras comuns, tais como a ou e) E manter apenas palavras distintas, a produção de uma matriz cujas colunas apontar para palavras distintas.

de TfidfVectorizer importação sklearn.feature_extraction.text

vectorizer = TfidfVectorizer (max_df = 0,95,

min_df = 2, stop_words = `Inglês`)

tfidf = vectorizer.fit_transform (dataset.data)

de sklearn.decomposition NMF importação

n_topics = 5

NMF = NMF (n_components = n_topics, random_state = 101) .fit (tfidf)

Prazo de freqüência-inversa frequência documento (TF-IDF) é um simples cálculo baseado na frequência de uma palavra no documento. Ele é ponderado pela raridade da palavra entre todos os documentos disponíveis. Ponderação palavras é uma maneira eficaz para descartar as palavras que não podem ajudá-lo a classificar ou identificar o documento durante o processamento de texto. Por exemplo, você pode eliminar partes comuns do discurso ou outras palavras.

Tal como acontece com outros algoritmos da sklearn.decomposition módulo, o n_components parâmetro indica o número de componentes desejados. Se você gostaria de olhar para mais tópicos, você usar um número maior. À medida que o número necessário de tópicos aumenta, o método reconstruction_err_ relata as taxas de erro inferiores. Cabe a você decidir quando parar dado o trade-off entre mais tempo gasto em cálculos e mais tópicos.

A última parte do script emite os resultantes cinco tópicos. Ao ler as palavras impressas, você pode decidir sobre o significado dos temas extraídos, graças a características do produto (por exemplo, as palavras movimentação, duramente, cartão, e frouxo se referem a computadores) ou o produto exato (por exemplo, história em quadrinhos, carro, aparelho de som, jogos).

feature_names = vectorizer.get_feature_names ()

n_top_words = 15

para topic_idx, tema em enumerate (nmf.components_):

Video: Treinamento em Português das APIs de Watson - Aprendizado de Máquina & Reconhecimento de Padrões 1



impressão ("Tópico #% d:" % (Topic_idx + 1),)

impressão (" ".join ([feature_names [i] for i in

topic.argsort () [: - n_top_words - 1: -1]]))

Tópico # 1:

unidade de cartão duro disquete monitor de meg marca motherboard disco RAM vga SCSI

modem interno cor

Tópico # 2:

00 50 dos 20 10 15 cobertura 1º novos 25 de preços homem 40 quadrinhos de envio

Tópico # 3:

condição excelente oferta Pedindo melhor carro velho venda boas novas milhas 10 000

cd fita

Tópico # 4:

e-mail olhando correio jogo jogos interessado enviar como pacote de preços graças

Lista de venda quer saber

Tópico # 5:

stereo transporte VCR funciona obo incluído amp além de grandes vhs de volume Mathes UNC

Gibbs radley

Você pode explorar o modelo resultante, olhando para o atributo components_ a partir do modelo NMF treinado. Ele consiste em um NumPy ndarray segurando valores positivos para palavras relacionadas com o tema. Ao utilizar o argsort método, você pode obter os índices das principais associações, cujos valores elevados indicam que elas são as palavras mais representativas.

de impressão (. nmf.components_ [0,:] argsort () [: - n_top_words-1: -1])

# Obtém palavras principais para tópico 0

[1337 1749 889 1572 2342 2263 2803 1290 2353 3615 3017 806 1022 1938

2334]

Decodificando índices as palavras cria cadeias legíveis, chamando-os a partir da matriz derivada do get_feature_names método aplicado ao TfidfVectorizer que foi previamente montado.

impressão (vectorizer.get_feature_names () [1337])

# Transforma índice de 1337 de volta ao texto

dirigir


Publicações relacionadas