Kri*_*urg 5 python nlp machine-learning neural-network tensorflow
我试图了解 Google 的Smart Linkify背后的机器学习部分。文章陈述了以下关于他们的generate candidate entities
模型。
给定的输入文本首先被拆分为单词(基于空格分隔),然后生成特定最大长度(在我们的例子中为 15 个单词)的所有可能的单词子序列,并且为每个候选者评分神经网络分配一个值(介于 0 和1) 基于它是否代表有效实体:
接下来,删除重叠的生成实体,优先考虑得分较高的实体而不是得分较低的冲突实体。
如果我理解正确,模型会尝试句子中的每个单词以及最多 15 个单词的组合?
你如何训练这样的模型?我认为这是监督学习,但不明白如何标记这些数据。它是否类似于实体由字符位置指定的 NER?并且数据中只有 2 个实体,entity
并且non-entity
.
而对于模型的输出,也就是所谓的“候选分数”,一个神经网络怎么能返回一个单一的数值呢?(分数)。或者输出层只是一个节点?
更详细的解释:
Possible word subsequences of certain maximum length
意味着它会考虑每个单词之前的 7 个单词和单词之后的 7 个单词?entity
并且non-entity
?或者它们是指实体的概率分数?non-entity?
是我要找的,去了解。
可能的某个最大长度的单词子序列意味着它考虑每个单词前面的 7 个单词和后面的 7 个单词?
据我从文档中了解到,您的描述不太正确。由于评估长度最多为 15 个单词的每个可能序列,因此这将包括前后有 7 个单词的单词,还包括前后有 5 个单词和后 3 个单词的单词,等等(即 len 之间的每个可能的 N 元语法) (1) 和 len(15). 导出初始概率,比较重叠的字符串,并丢弃任何具有较低概率的重叠,以便最终候选不重叠。
当神经网络是实体和非实体的二元分类时,如何生成分数?或者它们是指实体的概率得分?
根据Google AI 博客,“对于每个候选者,评分神经网络会根据其是否代表有效实体分配一个值(0 到 1 之间)。” 所以这将是一个概率。
如何训练二进制NER?与任何其他 NER 一样,除了将所有实体替换为“实体”,然后为非实体生成负样本?
是的,但是,因为这是一个感知器模型,所以将训练许多二元分类器,并且每个分类器都将充当模型中的神经元。需要注意的是,分类器仅对实体/非实体进行分类,而不对实体的类型进行分类。该帖子还讨论了通过获取正样本(由字符串中的开始标记和结束标记标记)并故意在该实体之前或之后包含标记来自动生成负样本。这项技术将大大增加训练数据的大小。
正如他们声称的那样,当这个模型处理文本中的每个单词以及该单词之前和之后的 7 个单词时,它如何能够快速呢?
采用相对较小的字符串 (len 15) 并将其拟合到模型的计算成本很小。将较长字符串划分为该长度的子字符串的计算成本也相当小。即使文本有 5000 个单词长(对于此类查询来说这将是巨大的),也只需要评估大约 600,000 个 n 元语法,并且其中大多数的实体分数都非常低。据我了解,这些方法最重要的计算成本是训练模型。这就是利用帖子中讨论的“散列字符图嵌入”技术的地方。
归档时间: |
|
查看次数: |
158 次 |
最近记录: |