【问题标题】:Text Classification of News Articles Using Spacy使用 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 是否在训练后根据我们的数据集生成标签?

有什么建议吗?

【问题讨论】:

    标签: machine-learning classification spacy text-classification multilabel-classification


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 如果我的数据看起来像 [('text...','label...'),('text...','label...')]我应该将这些多标签表示为数字,还是 spacy 可以用标签训练它?
    • @SubhaMaharjan 我将此添加到我的答案中
    • 谢谢 :) 这可行,但现在我不清楚如何指定猫的值。
    • @SubhaMaharjan 你是什么意思?
    • stackoverflow.com/questions/62340044/… 我已经在这里解释了我的问题。另外谢谢楼上的回答。真的很有帮助。
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2014-05-09
    • 2011-03-20
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多