Как возвращать только токены, а не пустые переменные при токенизации? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть функция:

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 ]

2 голосов
/ 12 апреля 2019

Существует два решения вашей проблемы:

Решение 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 голос
/ 12 апреля 2019

Вы можете использовать приведенный ниже код для удаления стоп-слов, если нет особых причин использовать ваш код.

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