问题标签 [bert-language-model]
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.
python - 删除 NLP 中句子比较的循环
我正在使用 BERT 来比较文本相似度,代码如下:
从那里我想使用余弦距离在 TEXT1 的一个句子中找到 sentence2 的最佳匹配
该代码正在运行,但是由于我想将 sentence2 不仅与 TEXT1 与 N 文本进行比较,因此我需要提高速度。是否可以对这个循环进行矢量化?或者有什么方法可以加快速度?
python - Python Flair 可以解释不连续的注释吗?
我正在用 Python Flair 训练一个顺序标记模型。我的原始文本数据包含我希望模型能够识别的概念短语,这些概念短语在某些情况下由一组不连续的标记表示,中间有单词。一个例子是“钾和镁替代”,其中“钾替代”是一个由不连续标记表示的概念,“镁替代”是另一个连续但与第一个概念重叠的概念。我训练了另一个 Flair 模型,其中所有概念都可以用一个标记来表示,并且为该数据构建语料库 CoNLL 文件非常简单。在这种情况下,不连续和重叠的概念带来了 3 个问题:
- 如果我在 CoNLL 文件中将其适当地标记为:
“镁B-CONC1
替换 I-CONC1"
- 它是否将不连续概念识别为上述短语中的“钾替代”:
"钾 B-CONC2
和 O
镁O
替换 I-CONC2"
- 如何在 CoNLL 文件中表示重叠的概念?有没有用原始文本和开始/结束索引列表表示语料库的替代方法?
PS 在上下文中必须非常清楚,但是对于单词概念,我的意思是我试图训练模型识别的单个或多个标记标签/术语。
感谢您的建议或信息
python - BERT - modify run_squad.py predictions file
I'm new to BERT and I'm trying to edit the output of run_squad.py for build up a Question Answering system and obtain an output file with the following structure:
First of all, in the read_squad_example
function (line 227 of run_squad.py) BERT read a SQuAD json file (the input file) into a list of SquadExample, this file contains the first four fields that I need: id, title, question and context.
Afterwards the SquadExamples are converted to features and then the write_predictions
phase (line 741) can start.
In write_predictions
BERT write an output file, called nbest_predictions.json
, that contains all possible answers for a specific context with a probability associated.
On lines 891-898 I think the last four fields that I need (text, probability, start_logit, end_logit) are appended:
The output file nbest_predictions.json
have the following structure:
Now...I don't exactly understand how the nbest_predictions file is generated. How can I edit this function and obtain a json file structured as I indicated at the beginning of my post?
Reflecting upon that I think I have two possibilities:
- Create a new data structure and append the fields that I need.
- Edit the
write_predictions
function to get thenbest_predictions.json
structured in the way I want to.
What is the best solution?
Currently I wrote a new function that read the input file and append to a data structure my id, title, question and context:
What I get is:
answers
在这一点上,我怎样才能将包含“文本”、“概率”、“start_logit”和“end_logit”的字段附加到这个数据结构中?
提前致谢。
python - pytorch中的Bert-多语言
我正在对法语文本数据使用 bert 嵌入。我在加载模型和词汇时遇到问题。
我使用以下代码进行标记化,效果很好,但是为了获得词汇,它给了我中文单词!!
我希望词汇中有法语单词,但我得到了中文单词,我应该在代码中的某处指定语言吗?
nlp - 基于意图分类任务的时期,微调 BERT 的准确性有很大差异
我在我的数据集中(大约)Bert base uncased
用作意图分类的嵌入和简单的余弦相似度。400 classes and 2200 utterances, train:test=80:20
基本 BERT 模型在测试数据集中执行 60% 的准确率,但不同时期的微调给了我非常不可预测的结果。
这是我的设置:
这些是我的实验:
我不明白它的行为是这样的。我希望任何微调时期都不应该比基本模型差,因为我在同一个数据集上进行了微调和推断。有什么我误解或应该关心的吗?
deep-learning - 使用 BERT 检测给定单词的语言
我有希伯来语单词。其中一部分最初是英文,一部分是“希伯来语英语”,意思是那些最初来自英语但用希伯来语单词写成的单词。例如:希伯来语中的“胰岛素”是“אינסולין”(同音)。
我有一个简单的二进制数据集。X:单词(用希伯来字符书写) y:如果单词最初是英文并且用希伯来字符书写,则标记 1,否则为 0
我试过使用分类器,但它的输入是全文,而我的输入只是单词。
我不希望任何 MASKING 发生,我只想要简单的分类。
是否可以将 BERT 用于此任务?谢谢
python - Google Colab 中的 BERT 多类文本分类
我正在研究一组社交媒体评论(包括 youtube 链接)作为输入功能,并将 Myers-Biggs 人格档案作为目标标签:
但据我发现,BERT 希望 DataFrame 采用这种格式:
生成的输出必须是对分成四列的测试评论集的预测,其中每一列用于每个人格档案,例如,'Mind' = 1 是 Extrovert 的标签。基本上将像 INFJ 这样的类型分为“Mind”、“Energy”、“Nature”、“Tactics”,如下所示:
我已经使用以下方法安装了 pytorch-pretrained-bert:
我已导入模型并尝试使用以下方法标记“帖子”列:
但收到此错误:
我根据 pytorch-pretrained-bert GitHub Repo 和 Youtube 视频进行了尝试。
我是一名数据科学实习生,完全没有深度学习经验。我只是想以最简单的方式来试验 BERT 模型来预测多类分类输出,这样我就可以将结果与我们目前正在研究的更简单的文本分类模型进行比较。我在 Google Colab 工作,结果输出应该是 .csv 文件。
我知道这是一个复杂的模型,并且围绕模型的所有文档和示例都很复杂(微调层等),但是对于具有最少软件的初学者数据科学家来说,对于简单实现(如果实际上有这样的事情)的任何帮助工程经验,将不胜感激。
python - 为什么BERT中的矩阵叫Query、Key和Value?
在BERT的转换器单元中,有称为 Query、Key 和 Value 的模块,或者简称为 Q、K、V。
基于 BERT论文和代码(特别是在modeling.py中),我对具有单个注意力头的注意力模块(使用 Q,K,V)的前向传递的伪代码理解如下:
请注意,BERT 使用“self-attention”,所以from_tensor
和to_tensor
在 BERT 中是一样的;我认为这两个都只是上一层的输出。
问题
- 为什么矩阵分别称为 Query、Key 和 Value?
- 我在算法的伪代码表示中犯了任何错误吗?
python - BERT 模型不学习新任务
我正在尝试在 amazon-review 数据集上微调预训练的 BERT 模型。为此,我run_classifier
通过以下处理器扩展了文件:
我正在 GPU 上的 colab 笔记本中进行培训,因此我也根据需要调整了主要方法:
我知道这是很多代码,但因为我无法指出我想呈现所有这些错误。
请注意,大多数日志记录输出似乎完全合理:
例如一个转换的例子:
或者从检查点文件加载模型:
但最终 eval_accuracy 始终保持不变:
完整的存储库可以在这里找到:https ://github.com/joroGER/bert/
这里是笔记本的要点:https ://colab.research.google.com/gist/joroGER/75c1c9c6383f0199bb54ce7b63d412d0/untitled4.ipynb
python - 尝试访问 bert.variables 时出现 BERT 模块错误
我试图让 BERT 从这里获得的代码中进行情绪分析:https ://github.com/strongio/keras-bert
但是当我尝试构建模型时,我收到一条错误消息,
当我尝试访问 self.bert.variables 时,这特别发生在 BertLayer 类的构建函数中。
我试图dir(self.bert)
获取对象的所有属性,它确实没有称为变量的属性。这些是我获得的属性:
我正在使用 tf 版本:1.13.0 和 Python:3.5