问题标签 [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.

0 投票
1 回答
2796 浏览

python - en_vectors_web_lg 和 Glove 向量之间的差异 (spaCy)

https://spacy.io/models/en#en_vectors_web_lg 表示该模型包含 1.1m 键,但 https://nlp.stanford.edu/projects/glove/ 表示 Glove 向量包含 2.2M 词汇

我可以知道缺少哪些词汇吗?

非常感谢。

0 投票
2 回答
109 浏览

tensorflow - TensorFlow - 预测下一个单词 - 损失函数 logit na 目标形状

我正在尝试创建一个语言模型。我有logit大小目标:[32, 312, 512]

在哪里:

  • .shape[0]batch_size
  • .shape[1]sequence_max_len
  • .shape[2]vocabulary size

问题是 - 当我传递logittarget损失函数时,如下所示:

它是否计算当前批次的适当损失?或者我应该重塑logittarget表达以下形状:[32, 312*512]

在此先感谢您的帮助!

0 投票
1 回答
1348 浏览

machine-learning - 如何标准化不同长度句子中单词的概率?

假设我们有一个 RNN 模型,它输出在语料库上训练的给定上下文(或没有上下文)的单词的概率。我们可以将序列中每个单词的概率链接起来,以获得句子本身的整体概率。但是,因为我们是链式的,句子的概率(或可能性)会随着长度的增加而下降。即使我们使用对数概率,情况也是如此。

无论如何我们可以标准化这些概率吗?这是我在构建语言模型时面临的一个有趣的子问题。我有一个包含 900 万个句子的语料库,其长度从 2 到 30 不等。但是所有的句子都是有效的,我用这些作为语料库来训练 LM。

现在,我正在获取一个数据子集并对其进行更改,例如将句子改组或切成两半,预先或附加一个随机单词等等。这是为了创建一个不需要有效的“假句子”。我想做的是在所有有效句子的可能性上获得某种阈值,然后当我使用 RNN 计算假句子的概率时,它应该相当小或与计算的阈值不同。

tldr; 像这样的句子

应该都具有可比较的概率/分数/度量,而句子如

有一个较低的分数。

0 投票
1 回答
377 浏览

nlp - NLP - 在进行愚蠢的退避平滑时,当语料库中不存在 unigram 时该怎么办

在对三元组进行平滑的愚蠢退避中,如果未找到三元组,则我们回退到二元组,如果也未找到二元组,我们将回退到一元组。但是,如果语料库中不存在 unigram 怎么办。在愚蠢的退避部分下的论文中提到

递归以 unigrams 结束

那么应该将什么概率分配给训练数据集中不存在的全新一元组。

0 投票
1 回答
810 浏览

python - 如何将整个句子的语言模型分数与句子成分的语言模型分数联系起来

我在大约 5000 个英语句子/段落上训练了一个 KENLM 语言模型。我想用两个或更多段查询这个 ARPA 模型,看看它们是否可以连接起来形成一个更长的句子,希望更“语法”。以下是我用来获取片段和“句子”的对数分数(以及基于 10 的幂值)的 Python 代码。我已经举了两个例子。显然,第一个例子中的句子比第二个例子中的句子更符合语法。但是,我的问题不是关于这个,而是关于如何将整个句子的语言模型分数与句子成分的分数联系起来。也就是说,如果句子在语法上优于其成分。

  • ************ 先生 。Yamada was elected Chairperson of -34.0706558228 8.49853715087e-35 the Drafting Committee by acclamation . -28.3745193481 4.22163470933e-29 先生。Yamada was elected Chairperson of the Drafting Committee by acclamation . -55.5128440857 3.07012398337e-56 ------------- 本卷 ix 引用的案例 -27.7353248596 1.83939558773e-28 本卷 xiii 引用的多边文书 -34.4523620605 3.52888852435e-35本卷 ix 本卷 xiii 中引用的多边文书 -60.7075233459 1.9609957573e-61
0 投票
1 回答
1154 浏览

neural-network - 如何使用训练有素的 CBOW 预测单词

我有一个关于 CBOW 预测的问题。假设我的工作是使用 3 个环绕词 w(t-3)、w(t-2)、w(t-1) 作为输入来预测一个目标词 w(t)。一旦模型经过训练,我想在一个句子之后预测一个缺失的单词。这个模型是否只适用于前三个已知而最后一个未知的四个单词的句子?如果我有一个 10 字的句子。前九个单词是已知的,我可以使用 9 个单词作为输入来预测该句子中最后一个缺失的单词吗?

0 投票
2 回答
388 浏览

deep-learning - 如何建立深度学习模型,从多个不同的袋子中挑选单词并形成有意义的句子

包的图像以及如何从中选择

想象一下,我有 10 个袋子,一个接一个地订购。即第 1 个袋子,第 2 个袋子……第 n 个袋子。

每个包都有不同的单词集。

为了理解包是什么,假设我们有一个 10,000 个单词的词汇表。第一个袋子包含单词 Hello , India , Manager 。

即 Bag 1 将在包中存在的单词索引处有 1。例如:如果 Hello 的索引为 1,则 Bag 1 的大小为 10000*1 印度的索引为 2 而经理的索引为 4 它将是 [0 , 1, 1, 0 , 1 ,0,0,0,0..... ....]

*我还没有模型。*我想用故事书,但对我来说还是有点抽象。

必须从每个袋子中选择一个词,并分配一个数字词 1(袋子 1 中的词)词 2(袋子 2 中的词),它们必须按数字顺序组成一个有意义的句子。!

0 投票
1 回答
93 浏览

machine-learning - 如何学习双语系统的pocketsphinx?

我确实在一个文件中创建了一本包含 2 种语言(英语/波斯语)的字典,如下所示:

并使用http://www.speech.cs.cmu.edu/tools/lmtool-new.html构建语言模型。然后我尝试使用该语言模型学习声学模型并对其进行测试。

它适用于波斯语的声音,但不适用于英语单词。经过一些尝试和错误后,我发现问题出在我的手机上。正如您在上面看到的,我使用了自己的手机,但pocketsphinx 似乎不接受这个手机的英语单词,它只接受它自己的英语手机!

所以我想知道我发现问题是真的吗?我也应该使用pocketsphinx phoneset 来输入我的波斯语单词吗?我应该在哪里找到它的完整电话集和学习如何将其用于波斯语单词的指南?

0 投票
0 回答
366 浏览

python - 位置编码导致更差的收敛,语言建模

这是一个棘手的问题,但我不妨试试。我正在实施本文https://arxiv.org/pdf/1503.08895.pdf中的架构以进行语言建模。有关图表,请参见第 2 页,有关位置或“时间”编码的部分,请参见第 5 页的顶部。有关位置编码的更多信息,请参见第 5 页底部/第 6 页顶部的https://arxiv.org/pdf/1706.03762.pdf。(我被第一篇的作者引导到第二篇论文。)

简而言之,这是我的 keras 实现:

BATCH_SIZE 目前是 128。在我添加 T_A 和 T_C 部分之前,这在大约 35,000 个训练样本上运行良好,最终达到 96% 的准确率。一旦我实现了 T_A 和 T_C(位置编码),训练以大约 10% 的准确率和 5.2-ish 的训练损失结束。我将训练数据增加了 10 倍,但没有看到任何真正的改进。这是我的 Additional_Weights 类:

在阅读了这两篇非常棒的论文明确指出它应该起作用之后,我正在为为什么这不起作用而苦恼。如果有人能设法帮助解决这个问题,那就太棒了。

0 投票
0 回答
543 浏览

nlp - 当词汇量非常大时,替代单热编码以输出到模型

我在关注这个博客。在其中他谈到了如何在 keras 中构建语言模型。他展示了如何在 keras 中构建一个简单的模型。

分离后,我们需要对输出词进行一次热编码。这意味着将其从整数转换为 0 值的向量,词汇表中的每个单词一个,1 表示单词整数值索引处的特定单词。

这样模型就可以学习预测下一个单词的概率分布,并且除了接下来出现的实际单词之外的所有单词,从中学习的基本事实都是 0。

Keras 提供了 to_categorical() 可用于对每个输入-输出序列对的输出单词进行一次热编码。

他使用以下内容:

y = to_categorical(y, num_classes=vocab_size)

在他的情况下,词汇量是可控的。我正在使用大于 1 亿的词汇量。我想我不应该像他那样对输出使用单热编码y。有没有其他选择?