Как убрать стоп-слова из списка списков в python - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть набор твитов, который отформатирован как список списков.Код, который я использовал, работает для удаления стоп-слов, но он не возвращает список списков, а скорее один большой список.Мне нужно, чтобы он оставался списком списков для последующего наивного байеса, так как я могу его изменить?

from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))

OAGTokensWOStop = []
for i in range(2708):
    for tweet in OAG_Tokenized[i]:
        if tweet not in stop_words:
            OAGTokensWOStop.append(tweet)

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

Ответы [ 3 ]

0 голосов
/ 20 апреля 2019

Я угадаю.

Вы должны создать пустой список внутри цикла for, добавить слова в этот список и, наконец, добавить список в OAGTokensWOStop в конце цикла.

OAGTokensWOStop = []
for i in range(2708):

    row = []
    for tweet in OAG_Tokenized[i]:
        if tweet not in stop_words:
            row.append(tweet)

    OAGTokensWOStop.append(row)
0 голосов
/ 20 апреля 2019

Вы создаете себе единый список.

from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))

OAGTokensWOStop = []
for item in OAG_Tokenized:
    temp = []
    for tweet in item:
        if tweet not in stop_words:
            temp.append(tweet)
    OAGTokensWOStop.append(temp)

0 голосов
/ 20 апреля 2019

append(tweet) добавляет содержимое твита в список OAGTokensWOStop.

Вы хотите, чтобы он добавлял твит в виде списка, поэтому вы должны сделать это вместо этого:

import numpy as np
OAGTokensWOStop = []
for i in range(2708):
    for tweet in OAG_Tokenized[i]:
        if tweet not in stop_words:
            OAGTokensWOStop.append(np.array(tweet))

Здесь вы добавляете твит в виде пустого массива в список. Отсюда создание списка списков.

...