问题标签 [word-embedding]
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.
tensorflow - 使用带有 LSTM 的 Word 嵌入来防止文本分类的过度拟合
客观的 :
- 使用用户输入的问题(如问答系统)识别类标签。
- 从大 PDF 文件中提取的数据,需要根据用户输入预测页码。
- 主要用于政策文件,用户对政策有疑问,需要显示特定的页码。
以前的实现:应用了弹性搜索,但准确性非常低,因为用户输入任何文本,如“我需要”==“想要”
数据集信息:数据集包含每一行,文本(或段落)和标签(作为页码)。这里的数据集很小,我只有 500 行。
当前实施:
- 在 Keras 中使用 LSTM 应用词嵌入(Glove),后端是 Tensor-flow
- 应用辍学
- 应用活动正则化
- 应用 L2 W_regularizer(从 0.1 到 0.001)
- 应用了从 10 到 600 的不同 nb_epoch
- 将手套数据的 EMBEDDING_DIM 从 100 更改为 300
应用自然语言处理,
- 转换为小写
- 删除英语的停用词
- 词干
- 删除号码
- 删除 URL 和 IP 地址
结果:测试数据(或验证数据)的准确性为 23%,但训练数据的准确性为 91%
代码 :
tensorflow - 使用预训练的 fasttext 权重在 Tensorflow 嵌入层中更新权重
我不确定我的理解是否正确,但是...
在训练 seq2seq 模型时,我想在嵌入层中启动一组预训练的 fasttext 权重的目的之一是减少测试环境中的未知词(这些未知词不在训练集中)。由于预训练的fasttext模型具有较大的词汇量,在测试环境中,未知词可以用fasttext的词汇外词向量来表示,这些词向量应该与训练集中的语义相似词具有相似的方向。
然而,由于嵌入层中的初始快速文本权重将通过训练过程更新(更新权重会产生更好的结果)。我想知道更新的嵌入权重是否会扭曲单词之间的语义相似性关系并破坏快速文本词汇外词向量的表示?(并且,在初始嵌入层中那些更新的嵌入权重和词向量之间,但它们对应的 ID 没有出现在训练数据中)
如果输入 ID 可以是从预训练模型中提取的分布式表示向量,然后,通过查找表将这些预训练词向量(训练时固定权重)映射到嵌入层(这些权重将在训练时更新),这会是一个更好的解决方案吗?
任何建议将不胜感激!
python-3.x - 使用 The Glove 方法时谈论 skip-gram 和 cbow 有意义吗?
我正在尝试不同的词嵌入方法,以便选择最适合我的方法。我试过 word2vec 和 FastText。现在,我想试试 Glove。在 word2vec 和 FastText 中,都有两个版本:Skip-gram(从单词预测上下文)和 CBOW(从上下文预测单词)。但是在 Glove python 包中,没有参数可以让你选择是使用 skipg-gram 还是 Cbow。
鉴于 Glove 的工作方式与 w2v 不同,我想知道:在使用 The Glove 方法时谈论 skip-gram 和 cbow 是否有意义?
提前致谢
vector - 如何为特殊目的正确训练 Word2Vec 模型
我的问题涉及对模型的正确培训,以实现 Word2Vec 模型的独特和真正具体的使用。在此处查看 Word2Vec 详细信息
我正在努力识别词嵌入中的名词形容词(或)关系。
(例如,我们在数据集的一个句子中有“nice car”。鉴于语料库的词嵌入以及所有标记的名词和形容词,我正在尝试设计一种技术来找到将“nice”与'车'。)
当然,我并不想只连接那对单词,但该技术应该适用于所有关系。此时采用有监督的方法,然后尝试设计一种无监督的方法。
既然您了解了我要做什么,我将解释这个问题。我显然知道 word2vec 需要在大量数据上进行训练,才能尽可能准确地学习正确的嵌入,但我害怕给它提供比带有标记句子的数据集 (500-700) 更多的数据。
我担心如果我给它更多的数据来训练(例如最新的维基百科转储数据集),它会学习更好的向量,但是额外的数据会影响我的单词的定位,那么这个单词关系就会被额外的训练数据。(例如,如果额外的训练数据中还有“nice Apple”,那么“nice”这个词的定位可能会受到影响)。
希望这是有道理的,我并没有做出错误的假设,但我只是因为没有足够的训练数据,或者有很好的向量,但在词嵌入中的向量定位受损而陷入了困境。
什么是正确的训练方法?尽可能多的训练数据(数十亿字)还是只标记数据集(500-700 个句子)?
感谢您抽出宝贵时间,如果我解释的任何内容没有意义,请告诉我。
machine-learning - 来自 Keras 中 lm_1b 的字符-词嵌入
我想在 Keras NN 模型中使用一些预训练的词嵌入,这些模型已由 Google 在一篇非常著名的文章中发表。他们提供了训练新模型的代码,以及此处的嵌入。
但是,从文档中不清楚如何从简单的 python 函数调用中从给定的字符串(单词)中检索嵌入向量。许多文档似乎都集中在将向量转储到文件中以获取整个句子,大概是为了进行情感分析。
到目前为止,我已经看到您可以使用以下语法输入预训练的嵌入:
但是,将不同的文件及其结构转换pre_trained_matrix_here
为我不太清楚。
他们有几个 softmax 输出,所以我不确定哪个属于 - 以及如何将我输入中的单词与他们拥有的单词字典对齐。
是否有一种简单的方法可以在 keras 中使用这些词/字符嵌入和/或在 keras 中构建模型的字符/词嵌入部分,以便可以为其他 NLP 任务添加更多层?
python - 将 tensorflow 中的词向量导入 gensim
我想导入从 tensorflow 创建的词向量并在 gensim 中使用它。
有一种方法gensim.models.KeyedVectors.load_word2vec_format
所以我通过在 Tensorflow 中的训练 wordvec 中遵循完全相同的方式尝试了这种方法,导入到 Gensim
例子:
2 3
字0 -0.000737 -0.002106 0.001851
字1 -0.000878 -0.002106 0.002834
保存文件,然后使用 kwarg binary=False 加载:
但错误喜欢
提高
我怎么解决这个问题?
word2vec - 在句子级别实现预训练的词嵌入?
我正在尝试进行文本分类,并在句子级别使用预训练的 Glove 词嵌入。我目前正在使用非常幼稚的方法,即平均单词向量来表示句子。
问题是如果句子中没有出现预训练的单词怎么办,如果出现这种情况怎么办?只是忽略这句话还是给这个句子向量随机分配一些值?我找不到处理这个问题的参考资料,大多数论文只是说他们使用平均预训练词嵌入来生成句子嵌入。
python - tensorflow word2vec 教程如何更新嵌入?
该线程接近:tensorflow word2vec 示例中权重和偏差的目的是什么?
但是我对此的解释仍然遗漏了一些东西:https ://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py
据我了解,您向网络提供字典中目标词和上下文词的索引。
然后查找批输入以返回开始时随机生成的向量
然后优化器调整权重和偏差以最好地预测标签,而不是 num_sampled 随机选择
我的问题如下:
嵌入变量在哪里更新?. 在我看来,我可以通过神经网络运行单词的索引,或者仅获取
final_embeddings
向量并使用它来获得最终结果。但我不明白embeddings
它的随机初始化在哪里发生了变化。如果我要绘制这个计算图,它会是什么样子(或者更好的是,实际这样做的最佳方法是什么)?
这是一次运行批处理中的所有上下文/目标对吗?还是一个一个?
tensorflow - tensorflow word2vec:参数和预处理
我正在使用https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py中的 word2vec_basic ,我有一些(一般)问题。
我应该如何确定num_steps
?在示例中,它设置为 100001。
askip_window
是 5 还是应该更大(10、25)?
此外,是否应该从训练数据集中删除停用词和标点符号,是否应该将所有单词转换为小写?
谢谢。