由于 SSL 证书错误,我在从 HuggingFace 加载预训练的 BERT 模型时遇到以下问题。
SSLError: HTTPSConnectionPool(host='huggingface.co', port=443): 超过最大重试次数,网址为:/dslim/bert-base-NER/resolve/main/tokenizer_config.json (由 SSLError(SSLCertVerificationError(1, '[ SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1108)')))
tokenizer = AutoTokenizer.from_pretrained("dslim/bert-base-NER")
Run Code Online (Sandbox Code Playgroud)
from transformers import AutoTokenizer, AutoModelForTokenClassification
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("dslim/bert-base-NER")
model = AutoModelForTokenClassification.from_pretrained("dslim/bert-base-NER")
Run Code Online (Sandbox Code Playgroud)
我希望在 Windows 上的 jupyter 实验室中运行代码时下载预先训练的模型。
python-3.x bert-language-model huggingface-transformers huggingface-tokenizers huggingface
当使用 pytorch 中预先训练的 BERT 嵌入(然后进行微调)时,是否应该像任何标准 NLP 任务一样对输入模型的文本数据进行预处理?
例如,应该执行词干提取、删除低频单词、去大写字母化,还是应该将原始文本简单地传递给“transformers.BertTokenizer”?
我有一些自定义数据想用来进一步预训练BERT 模型。到目前为止,我\xe2\x80\x99已经尝试了以下两种方法:
\nMLM从预训练的 BERT 检查点开始,继续使用 Masked Language Modeling ( ) + Next Sentence Prediction ( ) 头进行预训练NSP(例如使用BertForPreTraining模型)MLM(例如,使用BertForMaskedLM模型,假设我们不需要 NSP 来进行预训练部分。)但我\xe2\x80\x99m仍然感到困惑,如果使用BertForPreTraining或BertForMaskedLM实际上对 BERT 进行持续预训练,或者这只是两个分别使用 MLM+NSP 和 MLM 微调 BERT 的模型。使用 MLM+NSP 微调 BERT 或使用这两个头持续预训练之间是否有任何区别,或者这是我们需要测试的东西?
\n我已经审查了类似的问题,例如这个问题,但我仍然想确保从技术上讲,从初始检查点持续预训练模型与使用相同的目标/头对其进行微调之间是否存在差异。
\nnlp deep-learning pre-trained-model bert-language-model huggingface-transformers
我想构建一个多类分类模型,将会话数据作为 BERT 模型的输入(使用 bert-base-uncased)。
提问:我想问一个问题。
答:当然可以,问吧。
询问:今天天气怎么样?
答:天气很好,阳光明媚。
问题:好的,很高兴知道。
回答:您还想了解其他信息吗?
除此之外,我还有两个输入。
我想知道是否应该在对话中添加特殊标记,以使其对 BERT 模型更有意义,例如:
[CLS]QUERY:我想问一个问题。[EOT]
答案:当然可以,问吧。[EOT]
查询:今天天气怎么样?[EOT]
答案:天气很好,阳光明媚。[EOT]
查询:好的,很高兴知道。[EOT]
解答:您还想了解其他信息吗?[九月]
但我无法添加新的 [EOT] 特殊令牌。
或者我应该为此使用 [SEP] 令牌?
编辑:重现步骤
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
print(tokenizer.all_special_tokens) # --> ['[UNK]', '[SEP]', '[PAD]', '[CLS]', '[MASK]']
print(tokenizer.all_special_ids) # --> [100, 102, 0, 101, 103]
num_added_toks = tokenizer.add_tokens(['[EOT]'])
model.resize_token_embeddings(len(tokenizer)) # --> Embedding(30523, 768)
tokenizer.convert_tokens_to_ids('[EOT]') # --> 30522
text_to_encode = '''QUERY: I want to ask a question. [EOT]
ANSWER: Sure, ask away. …Run Code Online (Sandbox Code Playgroud) 我正在关注一篇关于基于 BERT 的词汇替换的论文(特别是尝试实现等式(2)——如果有人已经实现了整篇论文,那就太好了)。因此,我想要获得最后一个隐藏层(我唯一不确定的是输出中各层的顺序:最后一个第一个还是第一个第一个?)以及来自基本 BERT 模型(bert-base-uncased)的注意力。
然而,我有点不确定Huggingface/transformers 库是否真的输出了 bert-base-uncased 的注意力(我使用的是 torch,但我愿意使用 TF)?
根据我读到的内容,我预计会得到一个元组(logits、hidden_states、attentions),但通过下面的示例(例如在 Google Colab 中运行),我得到的长度是 2。
我是否误解了我所得到的或以错误的方式处理这件事?我做了明显的测试并使用了output_attention=False(output_attention=True虽然output_hidden_states=True确实似乎按预期添加了隐藏状态)并且我得到的输出没有任何变化。这显然是我对图书馆的理解的一个不好的迹象,或者表明存在问题。
import numpy as np
import torch
!pip install transformers
from transformers import (AutoModelWithLMHead,
AutoTokenizer,
BertConfig)
bert_tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
config = BertConfig.from_pretrained('bert-base-uncased', output_hidden_states=True, output_attention=True) # Nothign changes, when I switch to output_attention=False
bert_model = AutoModelWithLMHead.from_config(config)
sequence = "We went to an ice cream cafe and had a chocolate ice cream."
bert_tokenized_sequence = …Run Code Online (Sandbox Code Playgroud) python attention-model bert-language-model huggingface-transformers
我正在处理一个 TextClassification 问题,为此我正在尝试在 huggingface-transformers 库中给出的 TFBertForSequenceClassification 上训练我的模型。
我按照他们的github页面上给出的示例进行操作,我能够使用给定的示例数据运行示例代码tensorflow_datasets.load('glue/mrpc')。但是,我无法找到有关如何加载我自己的自定义数据并将其传入
model.fit(train_dataset, epochs=2, steps_per_epoch=115, validation_data=valid_dataset, validation_steps=7).
我如何定义我自己的 X,对我的 X 进行标记化并使用我的 X 和 Y 准备 train_dataset。其中 X 代表我的输入文本,Y 代表给定 X 的分类类别。
样本训练数据框:
text category_index
0 Assorted Print Joggers - Pack of 2 ,/ Gray Pri... 0
1 "Buckle" ( Matt ) for 35 mm Width Belt 0
2 (Gagam 07) Barcelona Football Jersey Home 17 1... 2
3 (Pack of 3 Pair) Flocklined Reusable Rubber Ha... 1
4 (Summer …Run Code Online (Sandbox Code Playgroud) nlp pytorch tensorflow2.0 bert-language-model huggingface-transformers
我想使用 BertForMaskedLM 或 BertModel 来计算句子的困惑度,所以我编写了这样的代码:
\nimport numpy as np\nimport torch\nimport torch.nn as nn\nfrom transformers import BertTokenizer, BertForMaskedLM\n# Load pre-trained model (weights)\nwith torch.no_grad():\n model = BertForMaskedLM.from_pretrained(\'hfl/chinese-bert-wwm-ext\')\n model.eval()\n # Load pre-trained model tokenizer (vocabulary)\n tokenizer = BertTokenizer.from_pretrained(\'hfl/chinese-bert-wwm-ext\')\n sentence = "\xe6\x88\x91\xe4\xb8\x8d\xe4\xbc\x9a\xe5\xbf\x98\xe8\xae\xb0\xe5\x92\x8c\xe4\xbd\xa0\xe4\xb8\x80\xe8\xb5\xb7\xe5\xa5\x8b\xe6\x96\x97\xe7\x9a\x84\xe6\x97\xb6\xe5\x85\x89\xe3\x80\x82"\n tokenize_input = tokenizer.tokenize(sentence)\n tensor_input = torch.tensor([tokenizer.convert_tokens_to_ids(tokenize_input)])\n sen_len = len(tokenize_input)\n sentence_loss = 0.\n\n for i, word in enumerate(tokenize_input):\n # add mask to i-th character of the sentence\n tokenize_input[i] = \'[MASK]\'\n mask_input = torch.tensor([tokenizer.convert_tokens_to_ids(tokenize_input)])\n\n output = model(mask_input)\n\n prediction_scores = output[0]\n softmax = nn.Softmax(dim=0)\n …Run Code Online (Sandbox Code Playgroud) nlp transformer-model pytorch bert-language-model huggingface-transformers
我正在阅读 BERT 模型论文。在预训练 BERT 模型时的 Masked Language Model 任务中,论文称模型会随机选择 15% 的 token。在选择的标记(Ti)中,80%将被[MASK]标记替换,10%Ti不变,10%Ti被另一个单词替换。我认为模型只需要替换为[MASK]或其他单词就足够了。为什么模型必须随机选择一个单词并保持不变?预训练过程仅预测 [MASK] 标记还是预测整个随机标记的 15%?
我目前正在开展一个涉及句子向量的项目(来自 RoBERTa 预训练模型)。当句子很长时,这些向量的质量较低,并且我的语料库包含许多带有子句的长句子。
我一直在寻找子句提取/长句分割的方法,但令我惊讶的是,没有一个主要的 NLP 软件包(例如 spacy 或 stanza)提供开箱即用的功能。
我想这可以通过使用 spacy 或 stanza 的依赖解析来完成,但正确处理各种复杂的句子和边缘情况可能会非常复杂。
我遇到过使用 spacy实现ClausIE 信息提取系统,它可以执行类似的操作,但它尚未更新并且无法在我的计算机上运行。
我也遇到过这个用于简化句子的存储库,但是当我在本地运行它时,我收到了斯坦福 coreNLP 的注释错误。
有没有我忽略的明显的包/方法?如果没有,是否有一种简单的方法可以使用 stanza 或 spacy 来实现此目的?
我来这里是想问你们是否可以将现有的经过训练的 Huggingface-transformers 模型与 spacy 一起使用。
我的第一个天真的尝试是通过加载它spacy.load('bert-base-uncased'),它不起作用,因为 spacy 需要一定的结构,这是可以理解的。
现在我试图弄清楚如何使用该spacy-transformers库来加载模型,创建 spacy 结构,并从那时起将其用作正常的 spacy 感知模型。
我不知道这是否可能,因为我找不到有关该主题的任何信息。我尝试阅读文档,但我发现的所有指南、示例和帖子都是从 spacy/en_core_web_sm 这样的 spacy 结构化模型开始的,但该模型最初是如何创建的?我相信有人必须用 spacy 重新训练一切。
我可以向你寻求帮助吗?
谢谢。
spacy bert-language-model spacy-transformers huggingface-transformers