如何在Sagemaker中训练多标签文本分类?

时间:2019-09-13 04:49:26

标签: text-classification amazon-sagemaker multilabel-classification

我选择了Sagemaker提供的BlazingText算法。

我的训练集中的文本可以有一个或多个标签,我想预测一篇文章最可能的标签。

我没有找到如何为此正确设置培训文件的方法。我已经按照以下格式

__label__1 __label__2 token1 token2 ... __label__2 token token token ...

我做对了吗?

2 个答案:

答案 0 :(得分:1)

以下是使用SageMaker内置算法(包括BlazingText)进行多标签文本分类的可能选项:

  1. 使用诸如SageMaker Object2vec之类的2臂嵌入模型,该模型可以了解一段文本和任意数量的标签之间的相似性。实际上有一个demo for multilabel text classification here
  2. 使用一个BlazingText实例作为多标签分类器:在训练时,每行提供多个以空格分隔的标签(虽然尝试不使用BlazingText,但似乎受fastText支持)或所有可能的标签-文本对,并进行推断时间,请使用"k" parameter"configuration": {"k": N}来查询前N个预测标签。
  3. 使用多个Blazingtext分类器,每个标签一个。这可能会更多 比上面的选项开发起来复杂,但不一定更多 考虑到BlazingText是非常浅且快速的神经 网络

答案 1 :(得分:0)

通常,多标签意味着您有多个标签要分类,而不是每个句子在训练集中都应有多个标签。

如果同一句子有多个标签,则可以为每个标签复制该句子。

代替:

package mainpackage;

import javafx.application.Application;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Window");

        primaryStage.show();
    }   

    public static void main(String[] args) {
        Application.launch(args);
    }

}



Error: Could not find or load main class mainpackage.Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

使用:

__label__1 __label__2 token1 token2 

在检索前k个预测的测试或预测时间内,您可以在配置中设置k:

__label__1 token1 token2 
__label__2 token1 token2 
相关问题