标签: bert-language-model

无法加载带有变压器包的 SpanBert 模型

我有一些关于使用转换器包加载 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.json
  • model_file -> pytorch_model.bin
  • vocab_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

您对正确加载预训练模型有什么建议吗?任何建议都非常感谢。谢谢!

python bert-language-model huggingface-transformers

3
推荐指数
1
解决办法
889
查看次数

无法从 Transformer 导入 BertModel

我试图从 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

3
推荐指数
1
解决办法
2万
查看次数

来自 HuggingFace 的 BertWordPieceTokenizer 与 BertTokenizer

我有以下代码片段并试图了解 BertWordPieceTokenizer 和 BertTokenizer 之间的区别。

BertWordPieceTokenizer(基于 Rust)

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)
  1. 为什么编码在两者中的工作方式不同?在 BertWordPieceTokenizer 中,它给出了 …

nlp bert-language-model huggingface-transformers huggingface-tokenizers

3
推荐指数
1
解决办法
4382
查看次数

在哪里可以获得 BERT 的预训练词嵌入?

我知道 BERT 的总词汇量为 30522,其中包含一些单词和子词。我想获得 BERT 的初始输入嵌入。所以,我的要求是获取一个大小表[30522, 768],我可以通过 token id 对其进行索引以获取其嵌入。我在哪里可以得到这张桌子?

embedding bert-language-model huggingface-transformers

3
推荐指数
1
解决办法
2430
查看次数

bert层中的池化输出和序列输出有什么区别?

每个人!我正在阅读有关 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

3
推荐指数
1
解决办法
4854
查看次数

从encode() 在 Transformer Bert 模型中返回的令牌

我有一个用于情绪分析的小数据集。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

3
推荐指数
1
解决办法
5575
查看次数

如何将 SQuAD 数据中的令牌索引映射到 BERT 令牌生成器中的令牌?

我正在使用 SQuaD 数据集进行答案范围选择。使用 来BertTokenizer标记段落后,对于某些示例,答案的开始和结束索引不再与段落标记中的真实答案范围位置匹配。如何解决这个问题呢?一种方法是相应地修改答案索引(也是训练目标)?但怎么做呢?

transformer-model nlp-question-answering bert-language-model squad huggingface-tokenizers

3
推荐指数
1
解决办法
4010
查看次数

PipelineException:在输入中找不到 mask_token ([MASK])

当我运行此行时,出现此错误“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

3
推荐指数
1
解决办法
2990
查看次数

BERTopic 的停用词删除和词干提取/词形还原

对于主题建模,我正在尝试 BERTopic:链接

我在这里有点困惑,我正在我的自定义数据集上尝试 BERTopic。
由于 BERT 的训练方式使其能够保存文本/文档的语义,因此我是否应该在将文档传递到 BERTopic 之前删除停用词并对文档进行词干/词形还原?因为我担心这些停用词是否会作为显着术语进入我的主题,而它们并不是

请大家提出建议和建议!

python nlp topic-modeling bert-language-model

3
推荐指数
1
解决办法
6313
查看次数

与 BERT 进行字符串比较似乎忽略了句子中的“not”

我使用 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

3
推荐指数
1
解决办法
1093
查看次数