我有一些关于使用转换器包加载 SpanBert 的问题。
我从SpanBert GitHub Repo 和vocab.txtBert下载了预训练文件。这是我用于加载的代码:
model = BertModel.from_pretrained(config_file=config_file,
pretrained_model_name_or_path=model_file,
vocab_file=vocab_file)
model.to("cuda")
Run Code Online (Sandbox Code Playgroud)
在哪里
config_file -> config.jsonmodel_file -> pytorch_model.binvocab_file -> vocab.txt但我得到了UnicodeDecoderError上面的代码说'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
我还尝试使用此处提到的方法加载 SpanBert 。但它回来了OSError: file SpanBERT/spanbert-base-cased not found。
您对正确加载预训练模型有什么建议吗?任何建议都非常感谢。谢谢!
我试图从 Transformer 导入 BertModel,但失败了。这是我正在使用的代码
from transformers import BertModel, BertForMaskedLM
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
ImportError: cannot import name 'BertModel' from 'transformers'
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题吗?
python nlp pytorch bert-language-model huggingface-transformers
我有以下代码片段并试图了解 BertWordPieceTokenizer 和 BertTokenizer 之间的区别。
from tokenizers import BertWordPieceTokenizer
sequence = "Hello, y'all! How are you Tokenizer ?"
tokenizer = BertWordPieceTokenizer("bert-base-uncased-vocab.txt")
tokenized_sequence = tokenizer.encode(sequence)
print(tokenized_sequence)
>>>Encoding(num_tokens=15, attributes=[ids, type_ids, tokens, offsets, attention_mask, special_tokens_mask, overflowing])
print(tokenized_sequence.tokens)
>>>['[CLS]', 'hello', ',', 'y', "'", 'all', '!', 'how', 'are', 'you', 'token', '##izer', '[UNK]', '?', '[SEP]']
Run Code Online (Sandbox Code Playgroud)
from transformers import BertTokenizer
tokenizer = BertTokenizer("bert-base-cased-vocab.txt")
tokenized_sequence = tokenizer.encode(sequence)
print(tokenized_sequence)
#Output: [19082, 117, 194, 112, 1155, 106, 1293, 1132, 1128, 22559, 17260, 100, 136]
Run Code Online (Sandbox Code Playgroud)
nlp bert-language-model huggingface-transformers huggingface-tokenizers
我知道 BERT 的总词汇量为 30522,其中包含一些单词和子词。我想获得 BERT 的初始输入嵌入。所以,我的要求是获取一个大小表[30522, 768],我可以通过 token id 对其进行索引以获取其嵌入。我在哪里可以得到这张桌子?
每个人!我正在阅读有关 Bert 的文章,并想利用其词嵌入进行文本分类。我遇到了这行代码:
pooled_output, sequence_output = self.bert_layer([input_word_ids, input_mask, segment_ids])
Run Code Online (Sandbox Code Playgroud)
进而:
clf_output = sequence_output[:, 0, :]
out = Dense(1, activation='sigmoid')(clf_output)
Run Code Online (Sandbox Code Playgroud)
但我无法理解合并输出的用途。序列输出不是包含了包括['CLS']的词嵌入在内的所有信息吗?如果是这样,为什么我们要汇总输出?
提前致谢!
neural-network python-3.x text-classification tensorflow bert-language-model
我有一个用于情绪分析的小数据集。Bert分类器将是一个简单的 KNN,但我想从库中获取模型的词嵌入transformers。请注意,我刚刚发现这个库 - 我仍在学习。
因此,查看在线示例,我试图了解从模型返回的尺寸。
例子:
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
tokens = tokenizer.encode(["Hello, my dog is cute", "He is really nice"])
print(tokens)
tokens = tokenizer.encode("Hello, my dog is cute", "He is really nice")
print(tokens)
tokens = tokenizer.encode(["Hello, my dog is cute"])
print(tokens)
tokens = tokenizer.encode("Hello, my dog is cute")
print(tokens)
Run Code Online (Sandbox Code Playgroud)
输出如下:
[101, 100, 100, 102]
[101, 7592, 1010, 2026, 3899, 2003, 10140, 102, 2002, 2003, 2428, 3835, 102]
[101, 100, 102]
[101, 7592, …Run Code Online (Sandbox Code Playgroud) python nlp machine-learning bert-language-model huggingface-transformers
我正在使用 SQuaD 数据集进行答案范围选择。使用 来BertTokenizer标记段落后,对于某些示例,答案的开始和结束索引不再与段落标记中的真实答案范围位置匹配。如何解决这个问题呢?一种方法是相应地修改答案索引(也是训练目标)?但怎么做呢?
transformer-model nlp-question-answering bert-language-model squad huggingface-tokenizers
当我运行此行时,出现此错误“PipelineException:在输入中找不到 mask_token ([MASK])”。fill_mask("汽车。")
我在 Colab 上运行它。我的代码:
from transformers import BertTokenizer, BertForMaskedLM
from pathlib import Path
from tokenizers import ByteLevelBPETokenizer
from transformers import BertTokenizer, BertForMaskedLM
paths = [str(x) for x in Path(".").glob("**/*.txt")]
print(paths)
bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
from transformers import BertModel, BertConfig
configuration = BertConfig()
model = BertModel(configuration)
configuration = model.config
print(configuration)
model = BertForMaskedLM.from_pretrained("bert-base-uncased")
from transformers import LineByLineTextDataset
dataset = LineByLineTextDataset(
tokenizer=bert_tokenizer,
file_path="./kant.txt",
block_size=128,
)
from transformers import DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(
tokenizer=bert_tokenizer, mlm=True, mlm_probability=0.15
)
from transformers import Trainer, TrainingArguments …Run Code Online (Sandbox Code Playgroud) python nlp pytorch bert-language-model huggingface-transformers
对于主题建模,我正在尝试 BERTopic:链接
我在这里有点困惑,我正在我的自定义数据集上尝试 BERTopic。
由于 BERT 的训练方式使其能够保存文本/文档的语义,因此我是否应该在将文档传递到 BERTopic 之前删除停用词并对文档进行词干/词形还原?因为我担心这些停用词是否会作为显着术语进入我的主题,而它们并不是
请大家提出建议和建议!
我使用 SentenceTransformers 和 BERT 实现了一个字符串比较方法,如下所示
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
model = SentenceTransformer('sentence-transformers/all-distilroberta-v1')
sentences = [
"I'm a good person",
"I'm not a good person"
]
sentence_embeddings = model.encode(sentences)
cosine_similarity(
[sentence_embeddings[0]],
sentence_embeddings[1:]
)
Run Code Online (Sandbox Code Playgroud)
请注意我的句子示例非常相似,但含义相反。问题是余弦相似度返回 0.9,这表明当我期望它返回接近于零的值时,这两个字符串在上下文中非常相似,因为它们具有相反的含义。
如何调整我的代码以返回更准确的结果?
nlp transformer-model sentence-similarity bert-language-model sentence-transformers