0

我想用句子做一些有监督的二元分类任务,并且一直在使用 spaCy,因为它易于使用。我使用 spaCy 将文本转换为向量,然后将向量馈送到机器学习模型(例如 XGBoost)以执行分类。然而,结果并不是很令人满意。

在 spaCy 中,很容易加载模型(例如 BERT / Roberta / XLNet)来将单词/句子转换为 nlp 对象。然而,直接调用对象的向量将默认为令牌向量的平均值。

这里有两个问题:

1)我们能不能比简单地获得标记向量的平均值更好,比如使用 spaCy 获得上下文/顺序感知的句子向量?例如,我们可以从 BERT 转换器的前一层提取句子嵌入,而不是 spaCy 中的最终标记向量吗?

2)直接使用spaCy训练下游的二分类任务会不会更好?例如,这里讨论了如何将文本分类器添加到 spaCy 模型。还是应用更强大的机器学习模型(如 XGBoost)通常更好?

提前致谢!

4

1 回答 1

0

我发现在下面的页面中对此进行了讨论。也许它有帮助。

“大多数人通常只采用最后一层的 [CLS] 标记的隐藏状态 - 对所有标记或多个层使用隐藏状态通常对您没有太大帮助。”

https://github.com/huggingface/transformers/issues/1950

于 2020-07-14T11:01:08.543 回答