问题标签 [spacy-transformers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5801 浏览

python - 如何加载部分预训练的 pytorch 模型?

我正在尝试让 pytorch 模型在句子分类任务上运行。在处理医学笔记时,我正在使用 ClinicalBert ( https://github.com/kexinhuang12345/clinicalBERT ) 并希望使用其预先训练的权重。不幸的是,ClinicalBert 模型仅将文本分类为 1 个二进制标签,而我有 281 个二进制标签。因此,我正在尝试实现此代码https://github.com/kaushaltrivedi/bert-toxic-comments-multilabel/blob/master/toxic-bert-multilabel-classification.ipynb,其中 bert 之后的最终分类器为 281 长。

如何在不加载分类权重的情况下从 ClinicalBert 模型加载预训练的 Bert 权重?

天真地尝试从预训练的 ClinicalBert 权重中加载权重,我收到以下错误:

我目前尝试从 pytorch_pretrained_bert 包中替换 from_pretrained 函数,并像这样弹出分类器权重和偏差:

我收到以下错误消息: INFO -modeling_diagnosis - BertForMultiLabelSequenceClassification 的权重未从预训练模型初始化:['classifier.weight','classifier.bias']

最后,我想从clinicalBert预训练权重中加载bert嵌入,并随机初始化顶级分类器权重。

0 投票
1 回答
204 浏览

nlp - Spacy中向量的顺序/上下文感知文档/句子

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

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

这里有两个问题:

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

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

提前致谢!

0 投票
1 回答
453 浏览

python-3.x - Spacy python错误的多实体识别

我被困在一个问题上并寻求你的帮助。我正在尝试使用 spacy 训练多个实体

以下是我的火车数据

这是我有问题的火车代码

错误:ValueError:[E103] 试图设置冲突的 doc.ents:'(0, 14, 'jobtitle')' 和 '(0, 4, 'skills')'。令牌只能是一个实体的一部分,因此请确保您设置的实体不重叠。

0 投票
1 回答
602 浏览

python - Huggingface Bert:输出打印

我是编码新手,可以使用指导来了解为什么它会像现在这样奇怪地打印。虽然这与 NLP 有关,但我相信这个错误很可能是由比我有更多编码知识的人解释的。我希望这是提出这个问题的正确地方。感谢您的帮助!

输出:

[4]

0 投票
1 回答
355 浏览

deep-learning - 两个图像上的相同随机裁剪 Pytorch 变换

我正在尝试将两个图像输入网络,并且我想在这两个图像之间进行相同的转换。transforms.Compose()一次拍摄一张图像并产生彼此独立的输出,但我想要相同的转换。我现在做了自己的编码,hflip()我有兴趣得到随机作物。有没有办法在不编写自定义函数的情况下做到这一点?

0 投票
0 回答
281 浏览

pytorch - 使用 Pytorch 运行 Bert 时 CUDA 内存不足(以前工作过)

我正在使用 Pytorch 在 SageMaker 上构建 BERT 二进制分类。

之前在运行模型时,我将 Batch size 设置为 16,模型能够成功运行。但是,昨天我停止 SageMaker 并在今天早上重新启动后,我无法再运行 Batch size 为 16 的模型。我能够运行批量大小为 8的模型。
但是,模型没有产生相同的结果(当然)。中间我没有改变任何东西。所有其他设置都相同。(除了我将 SageMaker 卷从 30GB 更改为 200GB。)

有谁知道什么可能导致这个问题?我真的很想重现批量大小为 16 的结果。

任何答案都会有所帮助,并在此先感谢您!

0 投票
1 回答
1074 浏览

python - Spacy BILOU 格式转 spacy json 格式

我正在尝试将我的 spacy 版本升级到 nightly 特别是对于使用 spacy 变压器

所以我转换了spacy简单的火车数据集,格式如下

td = [["Who is Shaka Khan?", {"entities": [(7, 17, "FRIENDS")]}],["I like London.", {"entities": [(7, 13, "LOC")]}],]

以上到

[[{"head": 0, "dep": "", "tag": "", "orth": "Who", "ner": "O", "id": 0}, {"head": 0, "dep": "", "tag": "", "orth": "is", "ner": "O", "id": 1}, {"head": 0, "dep": "", "tag": "", "orth": "Shaka", "ner": "B-FRIENDS", "id": 2}, {"head": 0, "dep": "", "tag": "", "orth": "Khan", "ner": "L-FRIENDS", "id": 3}, {"head": 0, "dep": "", "tag": "", "orth": "?", "ner": "O", "id": 4}], [{"head": 0, "dep": "", "tag": "", "orth": "I", "ner": "O", "id": 0}, {"head": 0, "dep": "", "tag": "", "orth": "like", "ner": "O", "id": 1}, {"head": 0, "dep": "", "tag": "", "orth": "London", "ner": "U-LOC", "id": 2}, {"head": 0, "dep": "", "tag": "", "orth": ".", "ner": "O", "id": 3}]]

使用以下脚本

0 投票
3 回答
3629 浏览

machine-learning - 从拥抱脸特征提取管道中获取句子嵌入

我如何从拥抱脸的特征提取管道中获得整个句子的嵌入?

我了解如何获取每个标记的特征(如下),但我如何获得整个句子的整体特征?

0 投票
0 回答
402 浏览

model - IndexError:PyTorch 中的 Transformers 上的尺寸超出范围(预计在 [-2, 1] 的范围内,但得到了 2)

我有 14 个属性和 1 个标签输出和输出类编号 10,我想在变压器上运行它,但出现此错误。当我在 MLP 模型中运行此代码时,我没有问题,但我在这里遇到了问题.

这是我的键值的示例: [ 1.3870e-01, -5.7892e-02, 2.0621e-01, -6.8972e-02, 7.8414e-02, 5.7779e-02, 3.0018e-01, -6.9849e -02] 错误已经在这里,在 multiHeadAttetionself._scores = torch.bmm(queries, keys.transpose(1,2)) / np.sqrt(K)

https://github.com/nurkbts/error/blob/main/error.ipynb

K=64

这是代码:

0 投票
0 回答
1066 浏览

python - spacy v3 en_core_web_trf 管道和 en_core_web_lg 管道之间的区别

我正在使用 spacy 版本 3 进行一些性能测试,以便在生产中正确调整我的实例大小。我正在观察以下内容

观察:

型号名称 没有NER的时间 NER时间 注释
en_core_web_lg 4.89 秒 21.9 秒 NER 将原始时间增加 350%
en_core_web_trf 43.64 秒 52.83 秒 NER 只比原来的时间增加了 20%

为什么在 Transformer 模型的情况下,有 NER没有 NER场景之间没有显着差异?在 en_core_web_trf 的情况下,NER 只是 POS 标记后的增量任务吗?

测试环境: GPU实例

测试代码: