Usando a aprendizagem de máquina para analisar comentários de e-commerce

aprendizado de máquina terá um impacto significativo sobre e-commerce. O sentimento é difícil de pegar porque os seres humanos usam as mesmas palavras para expressar sentimentos, mesmo opostas. A expressão que você transmitir é uma questão de como você constrói seus pensamentos em uma frase, não simplesmente as palavras usadas. Apesar de dicionários de palavras positivas e negativas existem e são úteis, eles não são decisivos porque o contexto palavra importa. Você pode usar esses dicionários como uma forma de enriquecer recursos textuais, mas você tem que confiar mais na aprendizagem de máquina, se você quiser alcançar bons resultados.

É uma boa idéia para ver como Dicionários de palavras positivas e negativas trabalhar. o dicionário AFINN-111 contém 2.477 palavras e frases positivas e negativas. Outra boa opção é o maior opinião léxico por Hu e Liu. Ambos os dicionários contêm palavras em inglês.

Usando exemplos rotulados que frases associadas a sentimentos pode criar preditores mais eficazes. Neste exemplo, você cria um modelo de aprendizagem de máquina com base em um conjunto de dados contendo comentários de Amazon, Yelp, e IMDB que você pode encontrar no UCI, o repositório de aprendizagem de máquina.

Este conjunto de dados foi criado para o papel “de grupo para etiquetas individuais Usando características profundas”, por Kotzias et al., Por KDD 2015. O conjunto de dados contém 3.000 comentários rotulados igualmente divididos entre as três fontes, e os dados tem uma estrutura simples. Algum texto é separada por uma guia de uma etiqueta sentimento binária onde 1 é um sentimento positivo e 0 uma negativa. Você pode baixar o conjunto de dados e colocá-lo em seu diretório de trabalho Python utilizando os seguintes comandos:

experimentar:

importação urllib2 2.7.x # Python

exceto:

importar urllib.request como urllib2 3.x # Python

solicitações de importação, io, os, zipfile

UCI_url = `https: //archive.ics.uci.edu/ml/

machine-learning-databases / 00331 / sentimento% 20

rotulado% 20sentences.zip`

= resposta requests.get (UCI_url)

compressed_file = io.BytesIO (response.content)

z = zipfile.ZipFile (compressed_file)

print ( `Extraindo em% s` % os.getcwd ())

para nome em z.namelist ():

nome do ficheiro = name.split ( `/`) [- 1]

nameOK = ( `MACOSX` não em nome e `.ds` não em nome de)

se filename e nameOK:

newfile = os.path.join (os.getcwd (),

os.path.basename (nome do ficheiro))

com open (newfile, `wb`) como f:

f.write (z.read (nome))

print ( ` tunzipping% s` % newfile)

No caso do script anterior não funcionar, você pode baixar os dados (Em formato zip) e expandir-lo usando o seu descompactador favorito. Você encontrará o imdb_labelled.txt arquivo dentro do recém-criado sentimento rotulado frases diretório. Depois de baixar os arquivos, você pode fazer o upload do arquivo IMDB para um trama de dados de pandas usando o read_csv função.

importar numpy como np

pandas importação como Pd

= Conjunto de dados `imdb_labelled.txt`

Dados = pd.read_csv (conjunto de dados, cabeçalho = Nenhum, setembro = r" t",

motor = `python`)

data.columns = [ `review`, `sentimento`]

Explorando os dados textuais é bastante interessante. Você vai encontrar todas as frases curtas, como “Wasted duas horas” ou “Foi tão legal.” Alguns são claramente ambígua para um computador, como “desperdiçar seu dinheiro em jogo.” Apesar de resíduos tem um significado negativo, o imperativo torna a frase soar positivo. Um algoritmo de aprendizagem de máquina pode aprender a decifrar frases ambíguas como estes só depois de ver muitas variantes. O próximo passo é construir o modelo, dividindo os dados em treinamento e teste conjuntos.

de sklearn.cross_validation train_test_split importação

corpus, test_corpus, y, yt = train_test_split (

data.ix [:, 0], data.ix [:, 1],

test_size = 0,25, random_state = 101)

Depois de dividir os dados, o código transforma o texto utilizando várias técnicas de PNL: contagens de token, unigramas e bigramas, parada remoção palavras, normalização comprimento do texto, e a transformação de TF-IDF.

a partir de texto de importação sklearn.feature_extraction

vectorizer = text.CountVectorizer (ngram_range = (1,2),

`Inglês`). ajuste stop_words = (corpus)

TfidF = text.TfidfTransformer ()

X = TfidF.fit_transform (vectorizer.transform (corpus))

Xt = TfidF.transform (vectorizer.transform (test_corpus))

Após o texto, tanto para o treinamento e teste conjuntos está pronto, o algoritmo pode aprender sentimento usando uma máquina de vetores de suporte linear. Este tipo de máquinas de vetores de suporte suporta L2 regularização, de modo que o código deve procurar o melhor parâmetro C usando a abordagem de pesquisa grid.

de LinearSVC importação sklearn.svm

de GridSearchCV importação sklearn.grid_search

param_grid = { `C`: [0,01, 0,1, 1,0, 10,0, 100,0]}

clf = GridSearchCV (LinearSVC (perda = `dobradiça`,

random_state = 101), param_grid)

clf = clf.fit (X, Y)

impressão ("Melhores parâmetros:% s" % Clf.best_params_)

Melhores parâmetros: { `C`: 1,0}

Agora que o código tenha determinado o melhor hiper-parâmetro para o problema, você pode testar o desempenho do conjunto de teste usando o medida precisão, a porcentagem de vezes corrigir o código pode adivinhar o sentimento correto.



de sklearn.metrics accuracy_score importação

solução = clf.predict (Xt)

impressão("precisão alcançada:% 0.3f" %

accuracy_score (yt, solução))

precisão alcançada: 0.816

Os resultados indicam precisão de superior a 80 por cento, mas determinar que as frases enganou o algoritmo para fazer uma previsão errada é interessante. Você pode imprimir os textos mal classificados e considerar o que o algoritmo de aprendizagem está faltando em termos de aprendizagem a partir de texto.

impressão (test_corpus [YT! = solução])

601 Simplesmente não há desculpa para algo tão p ...

32 Este é o tipo de dinheiro que é desperdiçado prope ...

887 De qualquer forma este filme fede, não é engraçado, um ...

668 Falando da música, é insuportavelmente predic ...

408 Ela realmente criado uma sensação única embora.

413 A câmera realmente gosta dela neste filme.

138 Vi "Mirrormask" na noite passada e foi uma un ...

132 Esta era uma nova versão de pobre "Meus melhores amigos Qua ...

291Rating: 1 dos 10.

904 Sinto muito mas eu realmente não posso recomendar o t ...

410 Um mundo melhor do que 95% do lixo no ...

55 Mas eu recomendo à espera de seu futuro effor ...

826 O filme merece fortes elogios para tomar este ...

100 Eu não acho que você vai ficar desapontado.

352 É vergonhoso.

171 Este filme agora se junta Revenge of the Boogeyman ...

814 Você compartilha a alegria requintado do general Loewenhielm ...

218 É este pandering para o público que sabot ...

168 Ainda assim, eu gosto deste filme para ele é empowerme ...

479 Naturalmente, a qualidade é blah.

31 de desperdiçar seu dinheiro em jogo.

805 O único lugar bom para este filme é na ga ...

127 meu único problema é que eu pensei que o ator que interpreta ...

613Go vê-lo!

764 Este filme também é revelador.

107 I love Lane, mas eu nunca a vi em um movi ...

674 Tom Wilkinson quebrou meu coração no final ... e ...

30 Há níveis enormes, enorme desbloqueáveis ​​c ...

667 Não é bom.

823 I luta para encontrar nada de ruim a dizer sobre i ...

739 O que na terra é Irons fazendo neste filme?

185 Altamente unrecommended.

621 Um script maduro, sutil que sugere e Occa ...

462 Considerando as relações fora da tela entre T ...

595 Facilmente, nenhuma outra banda desenhada me fez rir em uma ...

8 um pouco previsível.

446 Gosto de Armand Assante & soma da minha empresa de cabo ...

449 Eu não vou dizer mais nada - Eu não gosto de spoilers, ...

715 Im grande fã de jogos de RPG também, mas este filme, eu ...

241 Isso não seria mesmo bom como um feito para TV f ...

471 Em nenhum momento do processo ele se parece re ...

481 E, finalmente, depois de tudo isso, chegamos a um fim ...

104 Too politicamente correto.

522 Rating: 0/10 (Grau: Z) Nota: O show é tão B ...

filme 174This não tem características redentoras.

491 Este filme cria seu próprio universo, e é fa ...

Nome: revisão, dtipo: objeto


Publicações relacionadas