Pitão

Tutorial de NLTK em Python

Tutorial de NLTK em Python
A era dos dados já está aqui. A taxa na qual os dados são gerados hoje é maior do que nunca e está sempre crescendo. Na maioria das vezes, as pessoas que lidam com dados todos os dias trabalham principalmente com dados textuais não estruturados. Alguns desses dados têm elementos associados, como imagens, vídeos, áudios, etc. Algumas das fontes desses dados são sites, blogs diários, sites de notícias e muitos mais. Analisar todos esses dados em uma taxa mais rápida é necessário e, muitas vezes, crucial também.

Por exemplo, uma empresa pode executar um mecanismo de análise de texto que processa os tweets sobre seu negócio mencionando o nome da empresa, localização, processo e analisa a emoção relacionada a esse tweet. Ações corretas podem ser tomadas mais rapidamente se essa empresa souber sobre o crescimento de tweets negativos para ela em um local específico para se salvar de um erro crasso ou qualquer outra coisa. Outro exemplo comum será para YouTube. Os administradores e moderadores do Youtube ficam sabendo sobre o efeito de um vídeo, dependendo do tipo de comentários feitos em um vídeo ou nas mensagens de chat de vídeo. Isso os ajudará a encontrar conteúdo impróprio no site com muito mais rapidez, porque agora eles erradicaram o trabalho manual e empregaram robôs automatizados de análise de texto inteligente.

Nesta lição, estudaremos alguns dos conceitos relacionados à análise de texto com a ajuda da biblioteca NLTK em Python. Alguns desses conceitos envolverão:

A PNL será a principal área de enfoque nesta lição, pois é aplicável a enormes cenários da vida real onde pode resolver problemas grandes e cruciais. Se você acha que isso parece complexo, é verdade, mas os conceitos são igualmente fáceis de entender se você tentar exemplos lado a lado. Vamos começar a instalar o NLTK em sua máquina para começar.

Instalando NLTK

Só uma observação antes de começar, você pode usar um ambiente virtual para esta lição que podemos fazer com o seguinte comando:

python -m virtualenv nltk
fonte nltk / bin / activate

Assim que o ambiente virtual estiver ativo, você pode instalar a biblioteca NLTK dentro do ambiente virtual para que os exemplos que criaremos a seguir possam ser executados:

pip install nltk

Faremos uso do Anaconda e do Jupyter nesta lição. Se você deseja instalá-lo em sua máquina, veja a lição que descreve “Como instalar o Anaconda Python no Ubuntu 18.04 LTS ”e compartilhe seu feedback se você enfrentar quaisquer problemas. Para instalar o NLTK com o Anaconda, use o seguinte comando no terminal do Anaconda:

conda install -c anaconda nltk

Vemos algo assim quando executamos o comando acima:

Depois que todos os pacotes necessários estiverem instalados e prontos, podemos começar a usar a biblioteca NLTK com a seguinte instrução de importação:

importar nltk

Vamos começar com exemplos básicos de NLTK agora que temos os pacotes de pré-requisitos instalados.

Tokenização

Começaremos com a tokenização, que é a primeira etapa na realização da análise de texto. Um token pode ser qualquer parte menor de um texto que pode ser analisado. Existem dois tipos de tokenização que podem ser realizados com NLTK:

Você pode adivinhar o que acontece em cada tokenização, então vamos mergulhar nos exemplos de código.

Tokenização de sentença

Como o nome reflete, os Tokenizers de frase dividem um trecho de texto em frases. Vamos tentar um trecho de código simples para o mesmo, onde usamos um texto que escolhemos do tutorial do Apache Kafka. Faremos as importações necessárias

importar nltk
de nltk.tokenize import sent_tokenize

Observe que você pode enfrentar um erro devido a uma dependência ausente para nltk chamado punkt. Adicione a seguinte linha logo após as importações no programa para evitar quaisquer avisos:

nltk.download ('punkt')

Para mim, deu o seguinte resultado:

Em seguida, usamos o tokenizer de frase que importamos:

text = "" "Um Tópico em Kafka é algo para onde uma mensagem é enviada. O consumidor
aplicativos que estão interessados ​​naquele tópico puxam a mensagem dentro desse
tópico e pode fazer qualquer coisa com esses dados. Até um momento específico, qualquer número de
os aplicativos do consumidor podem puxar essa mensagem quantas vezes quiser."" "
sentenças = sent_tokenize (texto)
imprimir (frases)

Vemos algo assim quando executamos o script acima:

Como esperado, o texto foi organizado corretamente em frases.

Tokenização de palavras

Como o nome reflete, os tokenizadores de palavras dividem um trecho de texto em palavras. Vamos tentar um trecho de código simples para o mesmo com o mesmo texto do exemplo anterior:

de nltk.tokenize import word_tokenize
palavras = palavra_tokenizar (texto)
imprimir (palavras)

Vemos algo assim quando executamos o script acima:

Como esperado, o texto foi organizado corretamente em palavras.

Distribuição de frequência

Agora que quebramos o texto, também podemos calcular a frequência de cada palavra no texto que usamos. É muito simples de fazer com NLTK, aqui está o snippet de código que usamos:

de nltk.probabilidade de importação FreqDist
distribuição = FreqDist (palavras)
imprimir (distribuição)

Vemos algo assim quando executamos o script acima:

A seguir, podemos encontrar as palavras mais comuns no texto com uma função simples que aceita o número de palavras a serem mostradas:

# Palavras mais comuns
distribuição.most_common (2)

Vemos algo assim quando executamos o script acima:

Finalmente, podemos fazer um gráfico de distribuição de frequência para limpar as palavras e sua contagem no texto fornecido e compreender claramente a distribuição das palavras:

Palavras irrelevantes

Assim como quando falamos com outra pessoa por meio de uma chamada, tende a haver algum ruído durante a chamada, o que é uma informação indesejada. Da mesma maneira, o texto do mundo real também contém ruído, que é denominado como Palavras irrelevantes. As palavras irrelevantes podem variar de um idioma para outro, mas podem ser facilmente identificadas. Algumas das palavras de irritação em inglês podem ser - é, são, a, o, um etc.

Podemos ver palavras que são consideradas palavras irrelevantes pela NLTK para o idioma inglês com o seguinte snippet de código:

de nltk.corpus import stopwords
nltk.download ('stopwords')
idioma = "inglês"
stop_words = set (stopwords.palavras (idioma))
imprimir (stop_words)

Como é claro, o conjunto de palavras de parada pode ser grande, ele é armazenado como um conjunto de dados separado que pode ser baixado com NLTK como mostramos acima. Vemos algo assim quando executamos o script acima:

Estas palavras de parada devem ser removidas do texto se você deseja realizar uma análise precisa do texto para o pedaço de texto fornecido. Vamos remover as palavras de parada de nossos tokens textuais:

filter_words = []
por palavra em palavras:
se a palavra não estiver em stop_words:
filter_words.anexar (palavra)
filter_words

Vemos algo assim quando executamos o script acima:

Word Stemming

O radical de uma palavra é a base dessa palavra. Por exemplo:

Faremos a base das palavras filtradas das quais removemos as palavras irrelevantes na última seção. Vamos escrever um snippet de código simples em que usamos o lematizador de NLTK para realizar a operação:

de nltk.importação de haste PorterStemmer
ps = PorterStemmer ()
stemmed_words = []
por palavra em palavras_filtradas:
stemmed_words.anexar (ps.radical (palavra))
print ("Frase com derivação:", palavras-tronco)

Vemos algo assim quando executamos o script acima:

Tagging POS

O próximo passo na análise textual é após a derivação identificar e agrupar cada palavra em termos de seu valor, i.e. se cada palavra for um substantivo, verbo ou outra coisa. Isso é denominado como marcação de parte da fala. Vamos realizar a marcação de POS agora:

tokens = nltk.word_tokenize (frases [0])
imprimir (tokens)

Vemos algo assim quando executamos o script acima:

Agora, podemos realizar a marcação, para a qual teremos que baixar outro conjunto de dados para identificar as tags corretas:

nltk.download ('averaged_perceptron_tagger')
nltk.pos_tag (tokens)


Aqui está o resultado da marcação:

Agora que finalmente identificamos as palavras marcadas, este é o conjunto de dados no qual podemos realizar uma análise de sentimento para identificar as emoções por trás de uma frase.

Conclusão

Nesta lição, vimos um excelente pacote de linguagem natural, NLTK, que nos permite trabalhar com dados textuais não estruturados para identificar quaisquer palavras irrelevantes e realizar análises mais profundas, preparando um conjunto de dados preciso para análise de texto com bibliotecas como sklearn.

Encontre todo o código-fonte usado nesta lição no Github. Compartilhe seus comentários sobre a lição no Twitter com @sbmaggarwal e @LinuxHint.

Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...