Техника удаления общих слов (и их множественного числа) из строки
Я пытаюсь найти теги (ключевые слова) для рецепта, анализируя длинную строку текста. Текст содержит рецепт ингредиентов, указания и краткую аннотацию.
Как вы думаете, что будет наиболее эффективным способом удаления общих слов из списка тегов?
Под общими словами я подразумеваю такие слова, как: «там», «там», «их» и т. Д.
У меня есть 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:
- Для общих слов, которые могут быть во множественном числе, посмотрите на каждое слово в строке рецепта и проверьте, содержит ли оно частично не-множественную версию общего слова. Например; Для строки «Есть тест» проверьте каждое слово, чтобы увидеть, содержит ли оно «там», и удалите его, если оно есть.
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()