问题标签 [sentencepiece]

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 回答
895 浏览

python - 如何使用 conda 将语句包更新到最新版本?

我已经在 linux ubuntu 16 上安装了 conda。当我安装或更新一个名为sentencepiece的包时,它会安装 0.1.85 版本(根据 anaconda 网站,我猜是 2 个月前的版本)。但是最新版本是 0.1.91。

我无法安装最新版本,以便我可以在 python 中使用它,因为我猜它是指 conda 包。我尝试按照 github 上的包主页中的说明进行操作,并使用名为 vcpkg 的包管理器安装了最新版本。但是,我认为它对 python 或 conda 没有任何影响,因为示例程序没有编译并且 conda 仍然将其列为 0.1.85

请指导我该怎么做

0 投票
0 回答
825 浏览

python - “OSError: Model name './XX' was not found in tokenizers model name list” - 无法在 Transformers 中加载自定义标记器

我正在尝试使用 Sentencepiece 使用我自己的数据集/词汇创建自己的标记器,然后将其与 AlbertTokenizer 转换器一起使用。

我非常密切关注 HuggingFace 关于如何从头开始训练模型的教程:https ://colab.research.google.com/github/huggingface/blog/blob/master/notebooks/01_how_to_train.ipynb#scrollTo=hO5M3vrAhcuj

一切都很好,直到我尝试在转换器中重新创建标记器

这是我不断收到的错误消息:

出于某种原因,它适用于 RobertaTokenizerFast,但不适用于 AlbertTokenzier。

如果有人可以就如何将 Sentencepiece 与 AlberTokenizer 一起使用给我一个建议或任何指示,我将不胜感激。

0 投票
0 回答
89 浏览

python - RuntimeError: 图表已完成,无法修改

运行以下示例后:

引发以下错误:raise RuntimeError("Graph is finalized and cannot be modified.")

张量流版本:'2.2.0'

0 投票
0 回答
86 浏览

python - tf_sentencepiece、_sentencepiece_processor_ops.so.2.0.0-beta1 的问题:没有这样的文件或目录

我对 tensorflow 和 tf_sentencepiece 有疑问。首先我列出了我已经安装的软件包,我无法安装最新的 tensorflow,因为我的 CPU 不支持 AVX,只有 1.5 版适用于我。我也在使用 python 3.6 在 vi​​rtualenv 中工作,我的主要操作系统是 manjaro (arch linux)。

这是我需要运行的代码:

我遇到的第一个问题是以下问题:

这里的问题是我有那个文件(_sentencepiece_processor_ops.so.2.0.0-beta1)但不在它正在寻找的文件夹中,所以我试图通过修改 /home/simoneg/Scrivania/test/lib/python3 来解决它.6/site-packages/tf_sentencepiece/ sentencepiece_processor_ops.py。主要问题是这一行,_gen_sentencepiece_processor_op = tf.load_op_library(so_file),so_file指向了错误的路径,我修正了路径(正确的路径是/home/simoneg/Scrivania/test/lib/python3.6/site-packages /tf_sentencepiece/) 现在发生了一个新错误:

我在网上搜索了很多,但没有一个解决方案适用于 tensorflow 1.5,我认为问题在于 tf-sentencepiece 的版本,但我找不到一个有效的解决方案。您有任何建议或解决方案可以解决问题吗?(我也试过 tf-sentencepiece 版本,0.1.9 和 0.1.6)

0 投票
1 回答
451 浏览

python - 如何将新标记添加到使用句子的 T5 标记器

我训练t5基于tensorflow以下链接的变压器:

https://github.com/google-research/text-to-text-transfer-transformer

这是一个示例(输入,输出):

输入:

输出:

但是,对于我得到的预测:

替换<??,我应该怎么做才能解决这个问题?

更新:我发现奇怪<的是 t5 tokenizer 的词汇量不足,也就是说sentencepiece,我只是不知道如何添加它

0 投票
1 回答
539 浏览

google-colaboratory - Google Colab 中的 SentencePiece

我想在我正在训练 OpenNMT 模型的 Google Colab 项目中使用来自https://github.com/google/sentencepiece的句子。我对如何在 Google Colab 中设置句子二进制文件有点困惑。我需要用cmake构建吗?

当我尝试安装pip install sentencepiece并尝试在脚本的“转换”中包含句子时,我收到以下错误

运行此脚本后(与 OpenNMT 翻译教程匹配) !onmt_build_vocab -config en-sp.yaml -n_sample -1

我得到:

以下是我的脚本的编写方式。我不确定 not a string 来自什么。

编辑:所以我继续用谷歌搜索这个问题,发现了一个谷歌 colab 项目,它在这里使用 cmake 构建句子https://colab.research.google.com/github/mymusise/gpt2-quickly/blob/main/examples/gpt2_quickly .ipynb#scrollTo=dDAup5dxDXZW。但是,即使在使用 cmake 构建之后,我仍然遇到这个问题。

0 投票
1 回答
215 浏览

python - (OpenNMT) 西班牙语到英语模型改进

我目前正在尝试使用 yaml 脚本训练西班牙语到英语的模型。我的数据集非常大,但对于初学者来说,我试图让一个 10,000 个训练集和 1000-2000 个验证集首先运行良好。然而,在尝试了几天之后,我认为我需要帮助,因为我训练的越多,我的验证准确度就会下降,而我的训练准确度会上升。

我的数据来自 ModelFront 的 ES-EN 冠状病毒评论数据集,可在此处找到https://console.modelfront.com/#/evaluations/5e86e34597c1790017d4050a。我发现平行句子非常准确。我正在使用数据集中的前 10,000 条平行线,跳过包含任何数字的句子。然后我将接下来的 1000 或 2000 用于我的验证集和接下来的 1000 用于我的测试集,只包含没有数字的句子。查看数据时,它看起来很干净,并且句子在各自的行中相互排列。

然后我使用句子来构建词汇模型。使用 spm_train 命令,我输入我的英语和西班牙语训练集,在参数中用逗号分隔,并输出一个 esen.model。另外,我选择使用 unigrams 和 16000 的词汇量

至于我的 yaml 配置文件:这是我指定的

我的源和目标训练数据(我为英语和西班牙语提取的 10,000 个在转换 [] 中带有“sentencepiece”)

我的源和目标验证数据(英语和西班牙语为 2,000 个,转换中带有“sentencepiece”[])

我的 Src 和目标词汇模型的词汇模型 esen.model

编码器:rnn 解码器:rnn 类型:LSTM 层数:2 bidir:true

优化:亚当学习率:0.001

训练步数:5000 有效步数:1000

其他记录数据。

使用 onmt_translate 开始训练后,我的训练准确度从 7.65 开始,到 5000 步结束时进入低 70 秒。但是,在那个时间范围内,我的验证准确度从 24 变为 19。

然后我使用 bleu 对我的测试集进行评分,其 BP 约为 0.67。

我注意到,在以 1 的学习率尝试 sgd 之后,我的验证准确率不断提高,但最终困惑度开始回升。

我想知道我是否做错了什么会导致我的验证准确度下降而训练准确度上升?我只是需要训练更多吗?任何人都可以推荐其他任何东西来改进这个模型吗?我已经盯着它看了几天。任何事情都值得赞赏。谢谢。

!spm_train --input=data/spanish_train,data/english_train --model_prefix=data/esen --character_coverage=1 --vocab_size=16000 --model_type=unigram

onmt_build_vocab -config en-sp.yaml -n_sample -1

onmt_train -config en-sp.yaml

0 投票
0 回答
22 浏览

thread-safety - 跨线程的句子阻塞?

我正在尝试使用互操作将 SentencePiece 与一些 C# 代码集成。我有 # of threads = # of cores,以及在每个线程中运行的 SentencePieceProcessor 实例。我在这些不同的实例上同时调用 EncodeAsIds。

我的日志显示有时对 Encode 的调用需要花费大量时间(> 1000 毫秒)。这不会发生在我在空载条件下运行编码的同一个字符串上,所以我怀疑有什么东西阻塞了……有没有其他人经历过这种情况或知道句子是否被阻塞?

0 投票
1 回答
1618 浏览

bert-language-model - 如何向标记器添加新的特殊标记?

我想构建一个多类分类模型,我将对话数据作为 BERT 模型的输入(使用 bert-base-uncased)。

问:我想问一个问题。
回答:当然,请走开。
问:今天天气怎么样?
回答:天气晴朗,阳光明媚。
问:好的,很高兴知道。
回答:你还想知道什么吗?

除此之外,我还有两个输入。

我想知道是否应该在对话中加入特殊标记,以使其对 BERT 模型更有意义,例如:

[CLS]QUERY:我想问一个问题。[EOT]
回答:当然,请走开。[EOT]
QUERY:今天天气怎么样?[EOT]
回答:天气晴朗,阳光明媚。[EOT]
QUERY:好的,很高兴知道。[EOT]
回答:你还想知道什么吗?[九月]

但我无法添加新的 [EOT] 特殊令牌。
或者我应该为此使用 [SEP] 令牌吗?

编辑:重现的步骤

结果:

['[CLS]', 'query', ':', 'i', 'want', 'to', 'ask', 'a', 'question', '.', '[', 'e' , '##ot', ']', 'answer', ':', 'sure', ',', 'ask', 'away', '.', '[', 'e', '## ot', ']', 'query', ':', 'how', 'is', 'the', 'weather', 'today', '?', '[', 'e', '## ot', ']', 'answer', ':', 'it', 'is', 'nice', 'and', 'sunny', '.', '[', 'e', '## ot', ']', 'query', ':', 'okay', ',', 'nice', 'to', 'know', '.', '[', 'e'、'##ot'、']'、'answer'、':'、'would'、'you'、'like'、'to'、'know'、'anything'、'else'、' ?', '[九月]']

0 投票
0 回答
12 浏览

python-3.x - 我在 MacOS 上下载句子时遇到问题

这是我得到的错误

有帮助吗?我该如何解决这个问题?任何帮助将不胜感激。