问题标签 [huggingface-tokenizers]

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 投票
0 回答
573 浏览

nlp - 从头开始训练 GPT2 和 Reformer

例如,我正在寻找用德语从头开始训练 GPT2 和 Reformer 模型的脚本/笔记本。类似于:

https://colab.research.google.com/github/huggingface/blog/blob/master/notebooks/01_how_to_train.ipynb

我正在尝试修改同一个笔记本,但 GPT2 似乎不接受 LinebyLineDataset 或填充。

我的错误是:

这是我当前的实现:

数据集看起来像这样(百万行):

首先我训练 Sentence Piece Tokenizer:

然后我加载我的 GPT2 标记器,如下所示:

这是我的 GPT2 配置和语言模型:

数据集准备的逻辑:

训练逻辑:

0 投票
2 回答
1365 浏览

tokenize - 有没有办法获取在 BERT 中生成某个令牌的子字符串的位置?

我正在向 BERT 模型(Hugging Face 库)输入句子。这些句子使用预训练的分词器进行分词。我知道您可以使用 decode 函数从标记返回到字符串。

然而,重建并不完美。如果您使用不加大小写的预训练模型,则大写字母会丢失。此外,如果分词器将一个单词分成 2 个词,则第二个词将以“##”开头。例如,单词“coronavirus”被分成 2 个标记:“corona”和“##virus”。

所以我的问题是:有没有办法获取创建每个令牌的子字符串的索引?例如,以“东京报告新冠病毒病例近370例,创下单日新纪录”为例。第 9 个令牌是与“病毒”对应的令牌。

我想要告诉我标记“##virus”来自原始字符串中的“病毒”子字符串的东西,它位于原始字符串的索引 37 和 41 之间。

0 投票
4 回答
12995 浏览

tokenize - ValueError: TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]] - 标记 BERT / Distilbert 错误

当我尝试使用 BERT 标记器从数据帧中拆分出来时,我遇到了这样的错误。

0 投票
1 回答
50 浏览

python - 如何使字节级标记器不拆分令牌?

我有带有自定义标记的文本,例如:<adjective>并且我正在尝试准备一个不会拆分它们的字节级标记器:

如何添加<adjective>不是特殊标记,而是标记器不应该拆分的标记?

0 投票
1 回答
504 浏览

python - GPT2 on Hugging face(pytorch transformers) RuntimeError: grad can be implicitly created only for scalar outputs

我正在尝试使用我的自定义数据集微调 gpt2。我使用来自拥抱脸转换器的文档创建了一个基本示例。我收到提到的错误。我知道这意味着什么:(基本上它是在非标量张量上向后调用)但由于我几乎只使用 API 调用,我不知道如何解决这个问题。有什么建议么?

0 投票
3 回答
1413 浏览

save - 有什么理由保存预训练的 BERT 标记器?

假设我正在使用tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True),并且我在微调新模型期间使用该标记器所做的只是标准tokenizer.encode()

我在大多数地方都看到人们在保存模型的同时保存该标记器,但我不清楚为什么需要保存,因为它似乎是一个开箱即用的标记器,没有在训练期间的任何方式。

0 投票
0 回答
447 浏览

nlp - 将保存的 NER 加载回 HuggingFace 管道?

我正在研究 HuggingFace 的迁移学习功能(特别是命名实体识别)。作为序言,我对 Transformer 架构有点陌生。我从他们的网站上简要介绍了他们的示例:

我想做的是在本地保存并运行它,而不必每次都下载“ner”模型(大小超过 1 GB)。在他们的文档中,我看到您可以使用“pipeline.save_pretrained()”函数将管道保存到本地文件夹。结果是我存储到特定文件夹中的各种文件。

我的问题是如何在保存后将此模型重新加载到脚本中以继续按照上面的示例进行分类?“pipeline.save_pretrained()”的输出是多个文件。

这是我到目前为止所尝试的:

1:遵循有关管道的文档

我得到的错误是:“str”对象没有属性“config”

2:按照 ner 上的 HuggingFace 示例:

这会产生错误:列表索引超出范围

我还尝试仅打印不返回标记的文本格式及其实体的预测。

任何帮助将非常感激!

0 投票
0 回答
43 浏览

pytorch - 如何将 huggingface RagRetriever 的预训练数据集下载到自定义目录

我正在玩来自 facebook (huggingface) https://huggingface.co/facebook/rag-token-nq#usage的 RAG 示例。

这里有一个很好的解释:https ://ai.facebook.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/

代码很简单,但是这一步下载的数据集有点大(75GB):

它将数据集下载到 中/root/.cache/huggingface/datasets/,如果可能的话,我想更改一些内容。这是那行代码的输出是:

我的问题是:如何将文件夹更改为将 RagRetriever.from_pretrained (75GB 的)使用的数据集下载到另一个不同的文件夹root/.cache/huggingface/datasets/ .

谢谢!。

0 投票
0 回答
171 浏览

huggingface-tokenizers - 用余数迭代 Huggingface 分词器

Transformer 模型具有最大令牌限制。如果我想对我的文本进行子串化以适应该限制,那么普遍接受的方式是什么?

由于对特殊字符的处理,标记器不会将其标记映射到适合循环的东西。天真地:

会让我循环使用类似的块:

但是," ".join(mytext.split(" ")[0:MAX_LEN])不等于 给出的长度tokenizer(text)

您可以在下面看到不同之处:

tokenizer对于较长的文档,普遍接受的迭代过程的函数参数是什么,或者如果没有可用的参数是什么?

0 投票
0 回答
27 浏览

pytorch - BERT 零层固定词嵌入

我想用 bert 零层向量(输入向量)做一个实验,我知道它的维度是 128。

我找不到在哪里可以获得带有令牌及其向量的文件。 有这样的事吗?是否有 Glove/word2vec 格式但包含 BERT 输入向量的文件?

我将不胜感激任何帮助!谢谢,