Я пытаюсь найти теги (ключевые слова) для рецепта, анализируя длинную строку текста. Текст содержит ингредиенты рецепта, направления и короткий рекламный блок.
Как вы считаете, самый эффективный способ удалить общие слова из списка тегов?
Другими словами, я имею в виду такие слова, как "the", "at", "there", "the" и т.д.
У меня есть 2 методологии, которые я могу использовать, которые, по вашему мнению, более эффективны с точки зрения скорости и знаете ли вы более эффективный способ, которым я мог бы это сделать?
Методология 1:
- Определите количество раз, когда происходит каждое слово (с использованием библиотечных коллекций)
- Имейте список общих слов и удалите все "Обычные слова" из объекта "Коллекция", пытаясь удалить этот ключ из объекта "Коллекция", если он существует.
- Следовательно, скорость будет определяться длиной переменной delims
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()
Методология 2:
- Для общеупотребительных слов, которые могут быть множественными, посмотрите на каждое слово в строке рецепта и проверьте, содержит ли он частично не множественную версию общего слова. Например; Для строки "There the test" проверьте каждое слово, чтобы увидеть, содержит ли оно "там" и удалит его, если это произойдет.
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()