数据集:包含大约1500条数据的Csv文件,列为(Text,Labels),其中Text是尼泊尔语的新闻文章,Label是其类型(健康、世界、旅游、天气等)。
我正在使用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在训练后会根据我们的数据集生成标签吗?
有什么建议吗?
回答:
你必须添加自己的标签。所以,在你的情况下:
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, ...}}), ...]