首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试将我的数据点分成多个数组,而不是只有一个大数组

尝试将我的数据点分成多个数组,而不是只有一个大数组
EN

Stack Overflow用户
提问于 2020-04-10 03:24:36
回答 1查看 26关注 0票数 0

我在一个nlp项目上工作,正在处理假新闻,其中一个输入是标题。我用以下格式标记化了我的标题:

代码语言:javascript
复制
[['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数组中。然而,当我删除停用词时,它变成了这样:

代码语言:javascript
复制
['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']

在一维阵列中,每个单词都是它自己的元素。我想让每个标题都有自己的数组,就像标记化的数组一样。我该怎么做呢?

下面是我的代码:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 03:33:26

您正在迭代每个单词,并将它们逐个附加到列表中,这就是它是扁平化的原因。您需要附加过滤后的列表,而不是附加每个单词。如果你以列表理解的方式来做,这可能会更清楚:

代码语言:javascript
复制
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]

结果:

代码语言:javascript
复制
[['Four', 'ways', 'Bob', 'Corker', 'skewered', 'Donald', 'Trump'],
 ['Linklater', 'war','veteran',...]
  ...etc
]

您可以使用filter()获得相同的效果

代码语言:javascript
复制
filtered = [list(filter(lambda word: word not in stopwords, sentence))
            for sentence in headline_vector]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61128739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档