我有一个功能:
def remove_stopwords(text):
return [[word for word in simple_preprocess(str(doc), min_len = 2) if word not in stop_words] for doc in texts]
我的输入是带有标记化句子的列表:
input = ['This', 'is', 'an', 'example', 'of', 'my', 'input']
假设stop_words
包含以下单词:“ this”,“ is”,“ an”,“ of”和“ my”,那么我想要得到的输出是:
desired_output = ['example', 'input']
但是,我现在得到的实际输出是:
actual_output = [[], [], [], ['example'], [], [], ['input']]
如何调整代码以获得此输出?
答案 0 :(得分:2)
您的问题有两种解决方案:
您的remove_stopwords
需要一系列文档才能正常工作,因此您需要像这样修改输入
input = [['This', 'is', 'an', 'example', 'of', 'my', 'input']]
您将remove_stopwords
功能更改为可处理单个文档
def remove_stopwords(text):
return [word for word in simple_preprocess(str(text), min_len = 2) if word not in stop_words]
答案 1 :(得分:1)
如果没有特定原因使用您的代码,则可以使用以下代码删除停用词。
wordsFiltered = []
def remove_stopwords(text):
for w in text:
if w not in stop_words:
wordsFiltered.append(w)
return wordsFiltered
input = ['This', 'is', 'an', 'example', 'of', 'my', 'input']
stop_words = ['This', 'is', 'an', 'of', 'my']
print remove_stopwords(input)
输出:
['example', 'input']