長いテキスト文字列を解析して、レシピのタグ (キーワード) を見つけようとしています。テキストには、レシピの材料、指示、および短い宣伝文句が含まれています。
タグリストから一般的な単語を削除する最も効率的な方法は何だと思いますか?
一般的な言葉とは、「the」、「at」、「there」、「their」などの言葉を意味します。
使用できる方法が 2 つあります。どちらが速度の点でより効率的だと思いますか?また、これを行うためのより効率的な方法を知っていますか?
方法 1:
- 各単語が出現する回数を決定します (ライブラリ Collections を使用)
- 一般的な単語のリストを用意し、コレクション オブジェクトからそのキーを削除しようとすることで、コレクション オブジェクトからすべての「一般的な単語」を削除します (存在する場合)。
- したがって、速度は変数 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's a test」について、各単語に「there」が含まれているかどうかを確認し、含まれている場合は削除します。
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()