使用 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
是一个键,另一个字典是一个值。另一个字典包含您的所有类别作为键,1
或 0
作为值,指示此类别是否正确。
因此,您的数据应如下所示:
[('text1', 'cats' : 'category1' : 1, 'category2' : 0, ...),
('text2', 'cats' : 'category1' : 0, 'category2' : 1, ...),
...]
【讨论】:
如果我的数据看起来像 [('text...','label...'),('text...','label...')]我应该将这些多标签表示为数字,还是 spacy 可以用标签训练它? @SubhaMaharjan 我将此添加到我的答案中 谢谢 :) 这可行,但现在我不清楚如何指定猫的值。 @SubhaMaharjan 你是什么意思? ***.com/questions/62340044/… 我已经在这里解释了我的问题。另外谢谢楼上的回答。真的很有帮助。以上是关于使用 Spacy 对新闻文章进行文本分类的主要内容,如果未能解决你的问题,请参考以下文章