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