Попытка разделить мои точки данных на несколько массивов вместо одного большого массива - PullRequest
0 голосов
/ 09 апреля 2020

Я работаю над проектом nlp и работаю с фальшивыми новостями, одним из которых является заголовок. Я пометил заголовки в следующем формате:

[['Four', 'ways', 'Bob', 'Corker', 'skewered', 'Donald', 'Trump'], ['Linklater', "'s", 'war', 'veteran', 'comedy', 'speaks', 'to', 'modern', 'America', ',', 'says', 'star'], ['Trump', '’', 's', 'Fight', 'With', 'Corker', 'Jeopardizes', 'His', 'Legislative', 'Agenda']

Прямо сейчас каждый заголовок находится в своем собственном массиве, в массиве 2d. Однако, когда я удалил стоп-слова, это превратилось в следующее:

['Four', 'ways', 'Bob', 'Corker', 'skewered', 'Donald', 'Trump', 'Linklater', "'s", 'war', 'veteran', 'comedy', 'speaks', 'modern', 'America', ',', 'says', 'star', 'Trump', '’', 'Fight', 'With', 'Corker', 'Jeopardizes', 'His', 'Legislative', 'Agenda']

Каждое слово является собственным элементом в массиве 1-й. Я хочу сделать так, чтобы у каждого заголовка был свой массив, как с массивом с токенами. Как мне go сделать это?

Вот мой код:

data = pd.read_csv("/Users/amanpuranik/Desktop/fake-news-detection/data.csv")
data = data[['Headline', "Label"]]

x = np.array(data['Headline'])
y = np.array(data["Label"])

# tokenization of the data here'
headline_vector = []

for  headline in x:
    headline_vector.append(word_tokenize(headline))

#print(headline_vector)



stopwords = set(stopwords.words('english'))

#removing stopwords at this part
filtered = []

for sentence in headline_vector:
    for word in sentence:
        if word not in stopwords:
            filtered.append(word)

1 Ответ

0 голосов
/ 09 апреля 2020

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

headline_vector = [['Four', 'ways', 'Bob', 'Corker', 'skewered', 'Donald', 'Trump'], ['Linklater', "'s", 'war', 'veteran', 'comedy', 'speaks', 'to', 'modern', 'America', ',', 'says', 'star'], ['Trump', '’', 's', 'Fight', 'With', 'Corker', 'Jeopardizes', 'His', 'Legislative', 'Agenda']]
stopwords = set(["'s", "to", "His", ","])

filtered = [[word for word in sentence if word not in stopwords]
            for sentence in headline_vector]

Результаты:

[['Four', 'ways', 'Bob', 'Corker', 'skewered', 'Donald', 'Trump'],
 ['Linklater', 'war','veteran',...]
  ...etc
]

Вы можете получить тот же эффект с помощью filter():

filtered = [list(filter(lambda word: word not in stopwords, sentence))
            for sentence in headline_vector]
...