2 回答
![?](http://img1.sycdn.imooc.com/545865890001495702200220-100-100.jpg)
TA贡献2036条经验 获得超8个赞
您可以构建自己的自定义分类器(按照 polm23 的建议),但考虑到您是 NLP 新手,这可能过于复杂且耗时。
一种令人兴奋的新方法是所谓的“零样本分类”。这基本上意味着您采用其他人以非常通用的方式预先训练的通用机器学习模型进行文本分类,并且您只需将其应用到您的特定用例,而无需训练/微调它。
具体应用于您的用例,这看起来像这样:
# pip install transformers==3.1.0 # pip install in terminal
from transformers import pipeline
classifier = pipeline("zero-shot-classification")
sequence = "The biggest elephant in the world"
candidate_labels = ["animals", "fruits", "diseases"]
classifier(sequence, candidate_labels)
# output: {'sequence': 'The biggest elephant in the world',
# 'labels': ['animals', 'diseases', 'fruits'],
# 'scores': [0.9948041439056396, 0.0035726651549339294, 0.0016232384368777275]}
如果您希望算法为文本分配多个标签,您可以激活多标签分类,它会为每个文本考虑多个标签。
sequence = "I like mangos and gorillas"
candidate_labels = ["animals", "fruits", "diseases"]
classifier(sequence, candidate_labels, multi_class=True)
# output: {'sequence': 'I like mangos and gorillas',
# 'labels': ['animals', 'fruits', 'diseases'],
# 'scores': [0.9978452920913696, 0.989518404006958, 0.00015786082076374441]}
=>用你的话来说:它为每个文本“创建一个‘标签列表’”。即对于每个预定义标签,它提供一个置信度分数,然后您可以为“真实标签列表”选择具有最高置信度分数的标签。
我测试了它,实际输出在上面的代码中。它对所有内容进行了正确分类:)
它在其他用例上进行了尝试,虽然不是 100% 准确,但它相当不错,因为代码非常简单,而且您不必自己训练模型。
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1829条经验 获得超9个赞
你要做的就是所谓的多标签分类。您的“标签”是labels,每个文档可以有多个标签。
实现此目的的典型方法是为每个标签训练二元分类器,然后将预测中高于阈值的标签视为阳性。
spaCy 支持多标签分类。
添加回答
举报