Python Dictionary - Most Common Word Count

Asked

Viewed 147 times

-2

good night.

I am studying dictionaries, I have developed the following algorithm for word accounting in articles contained in TXT’s files and display of more frequent words, but I am not able to perform prepositions removal in the count, thus, it becomes ineffective, for I always find words like ( A, even, of, the, and ...)

Note: I was able to remove scores, however, it is not working for characters and words.

def converte_texto(texto):

    pontuacao = ['.', ',', ':', ';', '!', '?', '"','(', ')','DE','A','a','para','do','o','O','Em','em']    
    novo_texto = ''.join(c for c in texto if c not in pontuacao).upper()
    lista = novo_texto.split()
    return lista

def palavras(texto):

    contagem = dict()
    for palavra in texto :
        contagem[palavra] = contagem.get(palavra, 0) + 1
    return contagem

def mais_comum(texto):

    frequencias = texto.values()
    maior = max(frequencias)

    palavras = []
    for chave in texto:
        if texto[chave] == maior:
           palavras.append(chave)

    return (palavras, maior)

def palavras_mais_frequentes(texto, min_vezes):

    resultado = []
    fim = False

    while not fim :
        temp = mais_comum( texto )  
        if temp[1] >= min_vezes :      
            resultado.append(temp)
            for palavra in temp[0]:
                del( texto[ palavra ] )
        else :
            fim = True
    return resultado


def abrir_arquivo(nome):

    pontuacao = ['.', ',', ':', ';', '!', '?', '"','(', ')','DE','A','a','para','do','o','O','Em','em']   
    texto = open(nome, 'r') 
    texto = texto.read()
    texto_final = ''.join(c for c in texto if c not in pontuacao).upper()
    lista = texto_final.split()
    return lista


lista = abrir_arquivo('Novo Rodizio - G1.txt')
dicionario = palavras( lista )


print("Palavra Mais Comum Fonte - G1 : ", mais_comum( dicionario ) )
print( )
print("Palavras Mais Frequentes Fonte G1: ", palavras_mais_frequentes( dicionario, 10 ) )
print( )

1 answer

1

Your code does not work because you are selecting one character at a time and comparing it with a two or three letter word.

You can try to turn the text into a list using the method split and remove the words you want:

preposicoes = [...]
texto = "..."
palavras = texto.split()
for prep in preposicoes:
    palavras.remove(prep)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.