我在一个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']在一维阵列中,每个单词都是它自己的元素。我想让每个标题都有自己的数组,就像标记化的数组一样。我该怎么做呢?
下面是我的代码:
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)发布于 2020-04-10 03:33:26
您正在迭代每个单词,并将它们逐个附加到列表中,这就是它是扁平化的原因。您需要附加过滤后的列表,而不是附加每个单词。如果你以列表理解的方式来做,这可能会更清楚:
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]https://stackoverflow.com/questions/61128739
复制相似问题