如何在标记时仅返回实际标记而不是空变量?

时间:2019-04-12 10:10:07

标签: python apply tokenize gensim

我有一个功能:

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']]

如何调整代码以获得此输出?

2 个答案:

答案 0 :(得分:2)

您的问题有两种解决方案:

解决方案1:

您的remove_stopwords需要一系列文档才能正常工作,因此您需要像这样修改输入

input = [['This', 'is', 'an', 'example', 'of', 'my', 'input']]

解决方案2:

您将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']