Técnica para remover palavras comuns (e suas versões plurais) de uma string
Estou tentando encontrar tags (palavras-chave) para uma receita analisando uma longa sequência de texto. O texto contém os ingredientes da receita, instruções e uma breve sinops
O que você acha que seria a maneira mais eficiente de remover palavras comuns da lista de tags?
Por palavras comuns, quero dizer palavras como: 'the', 'at', 'there', 'their' etc.
Tenho duas metodologias que posso usar, o que você acha mais eficiente em termos de velocidade e conhece uma maneira mais eficiente de fazer isso?
Methodology 1:
- Determine o número de vezes que cada palavra ocorre (usando a biblioteca Coleções)
- Tenha uma lista de palavras comuns e remova todas as 'Palavras comuns' do objeto Collection, tentando excluir essa chave do objeto Collection, se existi
- Portanto, a velocidade será determinada pelo comprimento da variável delimita
import collections from Counter
delim = ['there','there\'s','theres','they','they\'re']
# the above will end up being a really long list!
word_freq = Counter(recipe_str.lower().split())
for delim in set(delims):
del word_freq[delim]
return freq.most_common()
Methodology 2:
- Para palavras comuns que podem ser plurais, observe cada palavra na sequência de receitas e verifique se ela contém parcialmente a versão não plural de uma palavra comum. Por exemplo; Para a sequência "Existe um teste", verifique cada palavra para ver se contém "lá" e exclua-a, se houve
delim = ['this','at','them'] # words that cant be plural
partial_delim = ['there','they',] # words that could occur in many forms
word_freq = Counter(recipe_str.lower().split())
for delim in set(delims):
del word_freq[delim]
# really slow
for delim in set(partial_delims):
for word in word_freq:
if word.find(delim) != -1:
del word_freq[delim]
return freq.most_common()