使用 Spacy 对新闻文章进行文本分类

Posted

技术标签:

【中文标题】使用 Spacy 对新闻文章进行文本分类【英文标题】:Text Classification of News Articles Using Spacy 【发布时间】:2020-09-28 10:01:27 【问题描述】:

数据集:包含大约 1500 列数据的 Csv 文件,其中列 (Text,Labels) 其中 Text 是 尼泊尔语的新闻文章语言和标签是它的类型(健康、世界、旅游、天气)等等。

我正在使用Spacy 来训练我的文本分类模型。到目前为止,我已经将数据集转换为一个看起来像这样的数据框 然后通过代码变成一个spacy可接受的格式

dataset['tuples'] = dataset.apply(
    lambda row: (row['Text'],row['Labels']), axis=1)
training_data = dataset['tuples'].tolist()

这给了我训练数据集中的元组列表,例如 [('text...','label...'),('text...','label...')]

现在,如何在这里进行文本分类?

在 spacy 的文档中,我发现

textcat.add_label("POSITIVE")
textcat.add_label("NEGATIVE")

我们必须根据标签添加标签还是应该使用正/负? spacy 是否在训练后根据我们的数据集生成标签?

有什么建议吗?

【问题讨论】:

【参考方案1】:

您必须添加自己的标签。所以,在你的情况下:

textcat.add_label('Health')
textcat.add_label('World')
textcat.add_label('Tourism')
...

spacy 则只能预测您在上述代码块中添加的那些类别

训练数据有一种特殊的格式:列表中每个带有数据的元素都是一个元组,其中包含:

    文字 只有一个元素的字典。 cats 是一个键,另一个字典是一个值。另一个字典包含您的所有类别作为键,10 作为值,指示此类别是否正确。

因此,您的数据应如下所示:

[('text1', 'cats' : 'category1' : 1, 'category2' : 0, ...), ('text2', 'cats' : 'category1' : 0, 'category2' : 1, ...), ...]

【讨论】:

如果我的数据看起来像 [('text...','label...'),('text...','label...')]我应该将这些多标签表示为数字,还是 spacy 可以用标签训练它? @SubhaMaharjan 我将此添加到我的答案中 谢谢 :) 这可行,但现在我不清楚如何指定猫的值。 @SubhaMaharjan 你是什么意思? ***.com/questions/62340044/… 我已经在这里解释了我的问题。另外谢谢楼上的回答。真的很有帮助。

以上是关于使用 Spacy 对新闻文章进行文本分类的主要内容,如果未能解决你的问题,请参考以下文章

原创 | 一点资讯分类新闻爬虫及其文本挖掘

朴素贝叶斯实战:新闻文本分类

基于汉字字频特征实现99.99%准确率的新闻文本分类器

课后作业——新闻文本分类

NLP新闻主题分类任务

如何从文本中提取 COMPLAINT 特征,以便对非投诉文本中的投诉进行分类