- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Gensim 对几个不同语料库中的单词进行矢量化,得到的结果让我重新思考 Word2Vec 的功能。我的理解是 Word2Vec 是确定性的,一个词在向量空间中的位置不会因训练而改变。如果“My cat is running”和“your dog can't be running”是语料库中的两个句子,那么“running”(或其词干)的值似乎必然是固定的。
但是,我发现该值确实因模型而异,并且当我训练模型时,单词在向量空间中的位置不断变化。这些差异并不总是意义重大,但它们确实表明存在某种随机过程。我在这里缺少什么?
最佳答案
这在 Gensim FAQ 中有详细介绍,我在这里引用:
Q11: I've trained my
Word2Vec
/Doc2Vec
/etc model repeatedly using the exact same text corpus, but the vectors are different each time. Is there a bug or have I made a mistake? (*2vec training non-determinism)Answer: The *2vec models (word2vec, fasttext, doc2vec…) begin with random initialization, then most modes use additional randomization during training. (For example, the training windows are randomly truncated as an efficient way of weighting nearer words higher. The negative examples in the default negative-sampling mode are chosen randomly. And the downsampling of highly-frequent words, as controlled by the
sample
parameter, is driven by random choices. These behaviors were all defined in the original Word2Vec paper's algorithm description.)Even when all this randomness comes from a pseudorandom-number-generator that's been seeded to give a reproducible stream of random numbers (which gensim does by default), the usual case of multi-threaded training can further change the exact training-order of text examples, and thus the final model state. (Further, in Python 3.x, the hashing of strings is randomized each re-launch of the Python interpreter - changing the iteration ordering of vocabulary dicts from run to run, and thus making even the same string-of-random-number-draws pick different words in different launches.)
So, it is to be expected that models vary from run to run, even trained on the same data. There's no single "right place" for any word-vector or doc-vector to wind up: just positions that are at progressively more-useful distances & directions from other vectors co-trained inside the same model. (In general, only vectors that were trained together in an interleaved session of contrasting uses become comparable in their coordinates.)
Suitable training parameters should yield models that are roughly as useful, from run-to-run, as each other. Testing and evaluation processes should be tolerant of any shifts in vector positions, and of small "jitter" in the overall utility of models, that arises from the inherent algorithm randomness. (If the observed quality from run-to-run varies a lot, there may be other problems: too little data, poorly-tuned parameters, or errors/weaknesses in the evaluation method.)
You can try to force determinism, by using
workers=1
to limit training to a single thread – and, if in Python 3.x, using thePYTHONHASHSEED
environment variable to disable its usual string hash randomization. But training will be much slower than with more threads. And, you'd be obscuring the inherent randomness/approximateness of the underlying algorithms, in a way that might make results more fragile and dependent on the luck of a particular setup. It's better to tolerate a little jitter, and use excessive jitter as an indicator of problems elsewhere in the data or model setup – rather than impose a superficial determinism.
关于nlp - Word2Vec 的随机方面是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165109/
我尝试进行词形还原,即识别动词的词形和可能的阿拉伯语词根,例如: يتصل ==> lemma(动词的不定式)==> اتصل ==> root(三字根/Jidr thoulathi) ==> و ص
在执行 NLP 或 IR/IE 相关任务时,是否有人们通常用来删除标点符号和关闭类别词(例如 he, she, it)的停用词列表? 我一直在尝试使用 gibbs 抽样来进行词义消歧的主题建模,并且它
我不知道StackOverflow是否涵盖NLP,所以我来试试。 我有兴趣从特定 Realm 中找到两个词的语义相关性,即“图像质量”和“噪声”。我正在做一些研究,以确定相机的评论对于相机的特定属性是
是否有算法或方法可以评估文本项之间的共同趋势/主题? 例如,假设有四个数据点(文本条目): “我发现学校今天压力很大” “物理测试非常容易。” “我的物理测试根本没有挑战” “每个人都提早离开了,因为
我有兴趣了解有关 Natural Language Processing 的更多信息(NLP)并且我很好奇目前是否有任何不基于字典识别的策略来识别文本中的专有名词?另外,任何人都可以解释或链接到解释当
特征用于模型训练和测试。自然语言处理中的词汇特征和正字法特征有什么区别?例子首选。 最佳答案 我不知道这样的区别,大多数时候当人们谈论词汇特征时,他们谈论的是使用这个词本身,而不是仅使用其他特征,即它
在 NLP 任务中,人们用 SOC(句子开头)和 EOC(句子结尾)注释句子是很常见的。他们为什么这样做? 这是一个任务相关的表现吗?例如,您在 NER 问题中进行填充的原因与您在翻译问题中进行填充的
我一直在研究 NLP 并使用 notepad++ 来处理文本文件。这很好,在某些情况下,但问题是无法使用包含大量文本的大型文件进行锻炼。 VIM 不支持 UTF-8。哪一个是最好的支持 unicode
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我在 Stanford CoreNLP demo page 中解析了以下句子和 Stanford parser demo page .尽管两者都会导致可以暗示目的语义的解析(相应地取决于 advcl
语义网和自然语言处理之间究竟有什么区别? 语义网是自然语言处理的一部分吗? 最佳答案 这是两个独立的学科领域,但它们在某些地方确实重叠。因为文档,无论其格式如何,都是由异构语法和语义组成的,所以目标是
我需要解析非结构化文本并将相关概念转换为格式,以便所有三元组可以合并形成一个图。例如如果我有 2 个句子,比如 A improves B 和 B improves C,我应该能够创建一个像这样的图 A
使用 GATE 时,本体在自然语言处理中的作用是什么? 据我了解,在较高层次上,本体允许对由类、它们的实例、这些实例的属性以及域中类之间的关系组成的域进行建模。 但是,在使用 GATE 时创建自定义本
我最后一年的工程项目要求我使用 Java 或 Python 构建一个应用程序,该应用程序使用自然语言处理来总结文本文档。我什至如何开始编写这样的应用程序? 根据一些研究,我刚刚注意到基于提取的摘要对我
我想知道是否可以使用 Stanford CoreNLP检测一个句子是用哪种语言写的?如果是这样,这些算法的精确度如何? 最佳答案 几乎可以肯定,此时斯坦福 COreNLP 中没有语言识别。 “几乎”
我在一家制造可以与 child 交谈的玩具车的公司工作。我们想使用斯坦福核心 NLP 作为解析器。但是,它以 GPL 许可:他们不允许在商业上使用 NLP。我可以从斯坦福 NLP 小组购买其他许可证吗
我想使用 Natural Language Processing Libraries 从句子中找到谓词和主语.这种技术在NLP的世界里有什么名字吗?或者有没有办法做到这一点? Example : He
所以,这个问题可能有点幼稚,但我认为询问 Stackoverflow 的友好人士不会有什么坏处。 我现在的公司已经使用第三方 API 进行 NLP 一段时间了。我们基本上对一个字符串进行 URL 编码
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
这可能是一个愚蠢的问题,但是如何迭代解析树作为 NLP 解析器(如斯坦福 NLP)的输出?它都是嵌套的括号,既不是 array 也不是 dictionary 或我使用过的任何其他集合类型。 (ROOT
我是一名优秀的程序员,十分优秀!