Extração de palavras-chave | Extração de palavras-chave em Python

Conteúdo

Esta postagem foi lançada como parte do Data Science Blogathon.

Introdução

extração de palavras-chave

Dados não estruturados contêm uma grande quantidade de informações. É como energia quando aproveitada, criará alto valor para seus stakeholders. Várias empresas já estão a fazer muito trabalho nesta área. Não há dúvida de que dados não estruturados são ruidosos e um trabalho significativo precisa ser feito para limpá-los., analisá-los e torná-los significativos para uso. Este post fala sobre uma área que ajuda a analisar grandes quantidades de dados resumindo conteúdos e identificando tópicos de interesse.: Extração de palavras-chave

Visão geral da extração de palavras-chave

É uma técnica de análise de texto. Podemos obter insights importantes sobre o assunto em um curto período de tempo. Ajuda a concisar o texto e obter palavras-chave relevantes. Economize tempo revisando todo o documento. Exemplos de casos de uso são encontrar tópicos de interesse em uma postagem de notícias e identificar problemas com base no feedback do cliente, etc. Uma das técnicas usadas para extração de palavras-chave é o TF-IDF (frequência do termo – frequência de documentos reversos)

TF – Visão geral do IDF

Frequência do termo – Com que frequência uma definição aparece em um texto. É medido como o número de vezes que uma definição t aparece no texto / Número total de palavras no documento

Reverter a frequência do documento – Quão relevante é uma palavra em um documento. Se mide como log (número total de frases / Número de frases com termo t)

TF-IDF – A relevância das palavras é medida por este escore. Medido como TF * IDF

Usaremos o mesmo conceito e tentaremos codificar linha por linha usando Python. Pegaremos um conjunto menor de documentos de texto e executaremos todas as etapas acima. Embora já existam conceitos mais avançados para extração de palavras-chave no mercado, Este post tem como objetivo entender o conceito básico por trás da identificação da relevância das palavras. Vamos começar!

Implementação

1. Pacotes de importação

Precisamos tokenizar para criar tokens de palavras, itemgetter para classificar o dicionário e matemática para executar a operação de registro base e

from nltk import tokenize
from operator import itemgetter
import math

2. Declarar variáveis

Vamos declarar uma variável de string. este será um espaço reservado para o documento de texto amostral.

doc="Eu sou um graduado. Eu quero aprender Python. Eu gosto de aprender Python. Python é fácil. Python é interessante. Aprender aumenta o pensamento. Todos devem investir tempo no aprendizado"

3. Remova palavras vazias

Palavras vazias são as palavras que aparecem com frequência e podem não ter relevância para nossa análise.. Podemos excluir o uso da biblioteca nltk

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize 
stop_words = set(stopwords.words('inglês'))

4. Encontre o número total de palavras no documento.

Isso será necessário ao calcular a frequência de termo

total_words = doc.split()
total_word_length = len(total_words)
imprimir(total_word_length)

5. Calcule o número total de sentenças

isso será necessário ao calcular a frequência reversa do documento.

total_sentences = tokenize.sent_tokenize(doc)
total_sent_len = len(total_sentences)
imprimir(total_sent_len)

6. Calcular TF para cada palavra

Começaremos calculando a contagem de palavras para cada palavra sem parar e em conclusão dividiremos cada elemento pelo resultado da etapa 4

tf_score = {}
para each_word em total_words:
    each_word = each_word.replace('.','')
    se não each_word em stop_words:
        se each_word em tf_score:
            tf_score[each_word] += 1
        outro:
            tf_score[each_word] = 1

# Dividing by total_word_length for each dictionary element
tf_score.update((x, e/int(total_word_length)) para x, e em tf_score.itens())
imprimir(tf_score)

7. Função para verificar se a palavra está presente em uma lista de frases.

Este método será necessário no cálculo do IDF.

def check_sent(palavra, frases): 
    fim = [tudo([w em x para w em palavra]) para x em frases] 
    sent_len = [frases[eu] para eu no alcance(0, len(final)) se final[eu]]
    int retorno(len(sent_len))

8. Calcule o IDF para cada palavra.

Vamos usar a função na etapa 7 para iterar a palavra sem parar e armazenar o resultado para a frequência reversa do documento.

idf_score = {}
para each_word em total_words:
    each_word = each_word.replace('.','')
    se não each_word em stop_words:
        se each_word em idf_score:
            idf_score[each_word] check_sent(each_word, total_sentences)
        outro:
            idf_score[each_word] = 1

# Performing a log and divide
idf_score.update((x, math.log(int(total_sent_len)/e)) para x, e em idf_score.itens())

imprimir(idf_score)

9. Calcular TF * IDF

Uma vez que a chave de ambos os dicionários é a mesma, podemos iterar um dicionário para obter as chaves e multiplicar os valores de ambos

tf_idf_score = {chave: tf_score[chave] * idf_score.get(chave, 0) para chave em tf_score.keys()}
imprimir(tf_idf_score)

10. criar uma função para obter n palavras importantes no documento

def get_top_n(dict_elem, n):
    resultado = dict(classificado(dict_elem.itens(), chave = itemgetter(1), reverso = Verdadeiro)[:n]) 
    resultado de retorno

11. Pegue o 5 palavras mais importantes

imprimir(get_top_n(tf_idf_score, 5))

conclusão

Então, esta é uma das maneiras que você pode construir seu próprio extrator de palavras-chave em Python!! Los pasos anteriores se pueden resumir de una manera simple como Documento -> Borrar palabras vacías -> Buscar frecuencia de término (TF) -> Buscar frecuencia de documento inverso (IDF) -> Buscar TF * IDF -> Obtener las N mejores palabras clave. Por favor, compartilhe seus pensamentos se este post foi interessante ou ajudou você de alguma forma. Sempre aberto a melhorias e sugestões. Você pode encontrar o código em GitHub

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.