【问题标题】:Trying to separate my data points into multiple arrays, instead of having one big array试图将我的数据点分成多个数组,而不是一个大数组
【发布时间】:2020-04-09 19:24:36
【问题描述】:

我正在从事一个 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']

现在,每个标题都在自己的数组中,在一个二维数组中。但是,当我删除停用词时,它变成了这样:

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

【问题讨论】:

    标签: python arrays nlp vectorization tokenize


    【解决方案1】:

    您正在迭代每个单词并一次将它们附加到列表中,这就是它变平的原因。您需要附加过滤列表,而不是附加每个单词。如果您将其作为列表理解,这可能会更清楚:

    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]
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2016-02-20
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多