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

Compartilhar no Facebook
Compartilhar no Twitter
Compartilhar no LinkedIn
Compartilhar no telegrama
Compartilhar no Whatsapp

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ê.