Python - Filtrar palavras duplicadas

Muitas vezes, temos necessidade de analisar o texto apenas pelas palavras únicas presentes no arquivo. Portanto, precisamos eliminar as palavras duplicadas do texto. Isso é conseguido usando a palavra tokenização e funções de definição disponíveis em nltk.

Sem preservar a ordem

No exemplo abaixo, primeiro simbolizamos a frase em palavras. Em seguida, aplicamos a função set () que cria uma coleção não ordenada de elementos únicos. O resultado possui palavras únicas que não são ordenadas.

import nltk
word_data = "The Sky is blue also the ocean is blue also Rainbow has a blue colour." 
# First Word tokenization
nltk_tokens = nltk.word_tokenize(word_data)
# Applying Set
no_order = list(set(nltk_tokens))
print no_order

Quando executamos o programa acima, obtemos a seguinte saída -

['blue', 'Rainbow', 'is', 'Sky', 'colour', 'ocean', 'also', 'a', '.', 'The', 'has', 'the']

Preservando a Ordem

Para obter as palavras depois de remover as duplicatas, mas ainda preservando a ordem das palavras na frase, lemos as palavras e as adicionamos à lista, anexando-as.

import nltk
word_data = "The Sky is blue also the ocean is blue also Rainbow has a blue colour." 
# First Word tokenization
nltk_tokens = nltk.word_tokenize(word_data)
ordered_tokens = set()
result = []
for word in nltk_tokens:
    if word not in ordered_tokens:
        ordered_tokens.add(word)
        result.append(word)
     
print result

Quando executamos o programa acima, obtemos a seguinte saída -

['The', 'Sky', 'is', 'blue', 'also', 'the', 'ocean', 'Rainbow', 'has', 'a', 'colour', '.']