O processamento de linguagem natural é um aspecto do aprendizado de máquina que permite processar palavras escritas em uma linguagem amigável à máquina. Esses textos tornam-se então ajustáveis ​​e você pode executar algoritmos computacionais neles como desejar.

A lógica por trás dessa tecnologia cativante parece complexa, mas não é. E mesmo agora, com um conhecimento sólido da programação Python básica, você pode criar um novo processador de texto DIY com o kit de ferramentas de linguagem natural (NLTK).

Veja como começar a usar o NLTK do Python.

O que é NLTK e como funciona?

Escrito em Python, o NLTK apresenta uma variedade de funcionalidades de manipulação de strings. É uma biblioteca versátil de linguagem natural com um vasto repositório de modelos para vários aplicativos de linguagem natural.

Com o NLTK, você pode processar textos brutos e extrair recursos significativos deles. Ele também oferece modelos de análise de texto, gramáticas baseadas em recursos e ricos recursos lexicais para a construção de um modelo de linguagem completo.

Como configurar o NLTK

Primeiro, crie uma pasta raiz do projeto em qualquer lugar do seu PC. Para começar a usar a biblioteca NLTK, abra seu terminal na pasta raiz que você criou anteriormente e criar um ambiente virtual.

Em seguida, instale o kit de ferramentas de linguagem natural neste ambiente usando pip:

pip install nltk

NLTK, no entanto, apresenta uma variedade de conjuntos de dados que servem como base para novos modelos de linguagem natural. Para acessá-los, você precisa ativar o downloader de dados embutido do NLTK.

Portanto, depois de instalar o NLTK com êxito, abra seu arquivo Python usando qualquer editor de código.

Em seguida, importe o nltk módulo e instanciar o downloader de dados usando o seguinte código:

pip install nltk
nltk.download ()

Executar o código acima através do terminal traz uma interface gráfica de usuário para selecionar e baixar pacotes de dados. Aqui, você precisará escolher um pacote e clicar no botão Download botão para obtê-lo.

Qualquer pacote de dados que você baixa vai para o diretório especificado escrito no Baixar diretório campo. Você pode mudar isso se quiser. Mas tente manter o local padrão neste nível.

Relacionado: Os melhores editores de código gratuitos para escrever seu primeiro aplicativo

Observação: Os pacotes de dados são anexados às variáveis ​​do sistema por padrão. Portanto, você pode continuar a usá-los em projetos subsequentes, independentemente do ambiente Python que estiver usando.

Como usar tokenizadores NLTK

Em última análise, o NLTK oferece modelos de tokenização treinados para palavras e frases. Usando essas ferramentas, você pode gerar uma lista de palavras de uma frase. Ou transforme um parágrafo em uma matriz de frase sensata.

Aqui está um exemplo de como usar o NLTK word_tokenizer:

importar nltk
de nltk.tokenize import word_tokenize
word = "Este é um texto de exemplo"
tokenWord = word_tokenizer (word)
imprimir (tokenWord)
Saída:
['Este', 'é', 'um', 'exemplo', 'texto']

O NLTK também usa um tokenizador de frases pré-treinado chamado PunktSentenceTokenizer. Funciona dividindo um parágrafo em uma lista de frases.

Vamos ver como isso funciona com um parágrafo de duas frases:

importar nltk
de nltk.tokenize import word_tokenize, PunktSentenceTokenizer
frase = "Este é um texto de exemplo. Este é um tutorial para NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (frase)
imprimir (tokenized_sentence)
Saída:
['Este é um texto de exemplo.', 'Este é um tutorial para NLTK']

Você pode ainda tokenizar cada frase na matriz gerada a partir do código acima usando word_tokenizer e Python for loop.

Exemplos de como usar NLTK

Portanto, embora não possamos demonstrar todos os casos de uso possíveis de NLTK, aqui estão alguns exemplos de como você pode começar a usá-lo para resolver problemas da vida real.

Obtenha definições de palavras e suas partes do discurso

O NLTK apresenta modelos para determinar classes gramaticais, obter semântica detalhada e possível uso contextual de várias palavras.

Você pode usar o wordnet modelo para gerar variáveis ​​para um texto. Em seguida, determine seu significado e parte do discurso.

Por exemplo, vamos verificar as variáveis ​​possíveis para "Monkey:"

importar nltk
de nltk.corpus importar wordnet como wn
imprimir (wn.synsets ('macaco'))
Saída:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

O código acima mostra possíveis alternativas de palavras ou sintaxes e classes gramaticais para "Macaco".

Agora verifique o significado de "Macaco" usando o definição método:

Monkey = wn.synset ('monkey.n.01'). Definição ()
Saída:
qualquer um dos vários primatas de cauda longa (excluindo os prosímios)

Você pode substituir a string entre parênteses por outras alternativas geradas para ver o que o NLTK produz.

o pos_tag modelo, no entanto, determina as classes gramaticais de uma palavra. Você pode usar isso com o word_tokenizer ou PunktSentenceTokenizer () se você estiver lidando com parágrafos mais longos.

É assim que funciona:

importar nltk
de nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Este é um texto de exemplo. Este é um tutorial sobre NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (palavra)
para i em tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
imprimir (partsOfSpeech)
Saída:
[('Este', 'DT'), ('é', 'VBZ'), ('um', 'DT'), ('exemplo', 'NN'), ('texto', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

O código acima emparelha cada palavra tokenizada com sua tag de fala em uma tupla. Você pode verificar o significado dessas tags em Penn Treebank.

Para um resultado mais limpo, você pode remover os pontos na saída usando o substituir() método:

para i em tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
imprimir (partsOfSpeech)
Saída do limpador:
[('Este', 'DT'), ('é', 'VBZ'), ('um', 'DT'), ('exemplo', 'NN'), ('texto', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Visualizando tendências de recursos usando o gráfico NLTK

Extrair recursos de textos brutos costuma ser tedioso e demorado. Mas você pode visualizar os determinantes de recursos mais fortes em um texto usando o gráfico de tendência de distribuição de frequência NLTK.

NLTK, no entanto, sincroniza com matplotlib. Você pode aproveitar isso para visualizar uma tendência específica em seus dados.

O código abaixo, por exemplo, compara um conjunto de palavras positivas e negativas em um gráfico de distribuição usando seus dois últimos alfabetos:

importar nltk
from nltk import ConditionalFreqDist
Listas de palavras negativas e positivas:
negativos = [
'anormal', 'abolir', 'abominável',
'abominavelmente', 'abominável', 'abominação'
]
positivos = [
'abundância', 'abundância', 'abundância',
'abundante', 'acessível', 'acessível'
]
# Divida os itens em cada matriz em pares de tupple rotulados
# e combine as duas matrizes:
pos_negData = ([("negativo", neg) para negativo em negativos] + [("positivo", pos) para pos em positivos])
# Extraia os dois últimos alfabetos da matriz resultante:
f = ((pos, i [-2:],) for (pos, i) em pos_negData)
# Crie um gráfico de distribuição desses alfabetos
cfd = ConditionalFreqDist (f)
cfd.plot ()

O gráfico de distribuição do alfabeto é assim:

Olhando atentamente para o gráfico, palavras que terminam com ce, ds, le, WL, e nt têm maior probabilidade de serem textos positivos. Mas aqueles que terminam com al, mente, sobre, e te são palavras negativas mais prováveis.

Observação: Embora tenhamos usado dados autogerados aqui, você pode acessar alguns dos conjuntos de dados integrados do NLTK usando seu leitor Corpus, chamando-os do corpus classe de nltk. Você pode querer olhar para o documentação do pacote corpus para ver como você pode usá-lo.

Com o surgimento de tecnologias como Alexa, detecção de spam, chatbots, análise de sentimento e muito mais, o processamento de linguagem natural parece estar evoluindo para sua fase subumana. Embora tenhamos considerado apenas alguns exemplos do que o NLTK oferece neste artigo, a ferramenta tem aplicativos mais avançados, além do escopo deste tutorial.

Depois de ler este artigo, você deve ter uma boa idéia de como usar o NLTK em um nível básico. Tudo o que resta a você fazer agora é colocar esse conhecimento em prática você mesmo!

CompartilhadoTweetO email
7 bibliotecas de aprendizado de máquina para aspirantes a especialistas

Interessado na área de Aprendizado de Máquina? Comece com essas bibliotecas.

Leia a seguir

Tópicos relacionados
  • Programação
  • Pitão
  • Linguagens de programação
  • Programação
Sobre o autor
Idowu Omisola (96 artigos publicados)

Idowu é apaixonado por qualquer tecnologia inteligente e produtividade. Em seu tempo livre, ele brinca com codificação e muda para o tabuleiro de xadrez quando está entediado, mas também adora quebrar a rotina de vez em quando. Sua paixão por mostrar às pessoas o caminho da tecnologia moderna o motiva a escrever mais.

Mais de Idowu Omisola

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever