これが可能な解決策です。regex
この方法で句読点記号を簡単に取り除くことができるので、私は を使用しています。また、collections.Counter
文字列に繰り返しの単語がたくさんある場合は、これを使用して効率を上げることができます。
tag_list = ["art","paint"]
s = "This is such an nice artwork, very nice artwork. This is the best painting I've ever seen"
from collections import Counter
import re
words = re.findall(r'(\w+)', s)
dicto = Counter(words)
def found(s, tag):
return s.startswith(tag)
words_found = []
for tag in tag_list:
for k,v in dicto.iteritems():
if found(k, tag):
words_found.append((k,v))
最後の部分はリスト内包表記で行うことができます:
words_found = [[(k,v) for k,v in dicto.iteritems() if found(k,tag)] for tag in tag_list]
結果:
>>> words_found
[('artwork', 2), ('painting', 1)]