用于文本分类的预训练模型

sci*_*bot 7 python machine-learning text-classification keras pre-trained-model

所以我没有标签的单词很少,但我需要将它们分为 4-5 类。我可以明显地说这个测试集是可以分类的。虽然我没有训练数据,所以我需要使用预训练的模型来对这些单词进行分类。哪种模型适合这种范式以及它已经在哪个数据集上进行了训练?

谢谢

小智 9

我们正在执行的任务称为零样本主题分类 - 预测模型尚未经过训练的主题。Hugging Face 库支持此范例,您可以在此处阅读更多内容。最常见的预训练模型是 Bart Large MNLI -在MNLI 数据集上训练后bart-large的检查点。这是一个简单的例子,展示了在没有任何初步训练的情况下对短语“I like hot dogs”的分类:

  1. 首先,请安装 Transformers 库:

    pip install --upgrade transformers
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后导入并初始化管道:

    from transformers import pipeline
    
    classifier = pipeline('zero-shot-classification', model='facebook/bart-large-mnli')
    
    Run Code Online (Sandbox Code Playgroud)
  3. 输入我们的玩具数据集:

     labels = ["artifacts", "animals", "food", "birds"]
     hypothesis_template = 'This text is about {}.'
     sequence = "I like hot dogs"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 预测标签:

    prediction = classifier(sequence, labels, hypothesis_template=hypothesis_template, multi_class=True)
    
    print(prediction)
    
    Run Code Online (Sandbox Code Playgroud)

输出将类似于

`{'sequence': 'i like hot dogs', 
'labels': ['food', 'animals', 'artifacts', 'birds'], 
'scores': [0.9971900582313538, 0.00529429130256176, 0.0020991512574255466, 
0.00023589911870658398]}`
Run Code Online (Sandbox Code Playgroud)

可以解释为,模型将最高概率 (0.997..) 分配给标签“食物”,这是正确的答案。