Как удалить стоп-слова из списка списков в python

#python #nltk #stop-words

#python #nltk #стоп-слова

Вопрос:

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

 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)
  

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

Комментарии:

1. Каковы подсписки в вашем списке списков?

2. возможно, вам следует создать новый список внутри for цикла, добавить слова внутри этого цикла и, наконец, добавить список в main-list в конце.

3. Таким образом, список списков имеет формат [[‘well’, ‘said’,’] , [‘loot’, ‘of’, ‘people’], …]

Ответ №1:

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))
  

Здесь вы добавляете твит в виде массива numpy в список. Следовательно, создается список списков.

Ответ №2:

Я угадаю.

Вы должны создать пустой список внутри 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)
  

Ответ №3:

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

 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)