我想删除一词。
我有一个包含大约15,000个字符串的列表。那些字符串是小文本。我的代码如下:
h = []
for w in clean.split():
if w not in cachedStopWords:
h.append(w)
if w in cachedStopWords:
h.append(" ")
print(h)
我知道.split()
是必要的,因此不是每个字符串都与停用词列表进行比较。但它似乎不起作用,因为它不能拆分列表。 (没有任何分裂h =干净,因为没有明显的匹配。)
有没有人知道如何在保留不同情况的同时分割列表中的不同字符串呢?
答案 0 :(得分:0)
一个非常小的例子:
stops = {'remove', 'these', 'words'}
strings = ['please do not remove these words', 'removal is not cool', 'please please these are the bees\' knees', 'there are no stopwords here']
strings_cleaned = [' '.join(word for word in s.split() if word not in stops) for s in strings]
或者你可以这样做:
strings_cleaned = []
for s in strings:
word_list = []
for word in s.split():
if word not in stops:
word_list.append(word)
s_string = ' '.join(word_list)
strings_cleaned.append(s_string)
这比之前的单行更加丑陋(我认为),但也许更直观。
确保将您的停用词容器转换为set
(一个可以查找O(1)
而不是list
的可放入容器,其查找为O(n)
)
编辑:这只是一个如何删除停用词的一般,非常直接的例子。您的使用案例可能略有不同,但由于您尚未提供数据样本,因此我们无法提供任何帮助。