当前位置:   article > 正文

创建反向词典,为你打开神经网络的大门

反向词典

全文共8395字,预计学习时长17分钟

本文将介绍怎样用Word2Vec创建反向词典。除了Word2Vec之外,使用其他文字嵌入模型也会得到同样的结果。如果你不知道这意味着什么也不要紧,我们会解释清楚的。反向词典就是一种词典,需要先输入定义,然后找出与该定义相匹配的单词。

所需代码可以在companion repository中找到:https://github.com/unosviluppatore/reverse-dictionary

 

自然语言处理的应用

自然语言处理是一个很棒的领域。这个领域很有趣,客户也经常在应用程序中使用。因为自然语言处理是个很难进入的领域。你永远不知道,一个问题是能够在一天之内通过一个现成的库得以解决?还是需要一个研发团队研究两年才能获得不错的结果。简单点说:自然语言处理困难的地方不在于技术,而在于理解怎样成功运用。

基于机器学习解决上述问题时就更突出了,你需要了解一点机器学习的背景。有时即使解决方案行得通,仍需几个星期来调整参数和权重。

所以,本文中只列举一种技术,也就是一个简单的程序:反向词典。也就是说,怎么通过定义找到单词。这是一款简洁的程序,是买不到的,也无法用确定性算法来创建。

机器学习中的单词表征

机器学习的第一步是理解如何表达所处理的数据。最基本的方式就是使用one-hot编码,有以下几种方式:

· 收集所有的可能值(例如,10000个可能值)

· 每个可能值都用一个向量表示,这个向量包含尽可能多的分量(每个值由一个包含10000个组件的向量表示)

· 为了表达每个值,除了给一个组件赋值为1外,其他组件都赋值为0(即,每个组件都是0,除了一个组件是1)

将其应用于单词,就意味着:

· 需要10000个单词量

· 每个单词都用一个向量表示,这个向量包含10000个组件

· 单词 dog 表达为[1, 0, 0 …],单词 cat 表达为 [0, 1, 0 …],等等

这种方式可以表达所有单词,但还存在两大缺点:

· 每个向量都非常稀疏;大多数向量都是0

· 表达不具备任何语义;“father”和“mother”意思非常接近,但你永远不会看到这两个单词用one-hot编码

解决之道:单词嵌入

为了克服上面的两大缺点,单词嵌入应运而生。这种类型的单词表征的关键在于,具有相似含义的单词使用相似的表达。为了捕捉单词意思,或者与其他单词相关联,该表达允许有密集的向量。意思很简单,嵌入的单词并没有真正捕捉到father的意思,但是它的表达将与mother的表达类似。

这是一个强大的特点,可以应用于各种情况。例如,可以解决下面这个问题:

 

什么对于父亲相当于母亲对于女儿?

第一个单词嵌入模型是 Word2Vec ,我们将用它来创建反向词典。这一模型对该领域进行了革新,并催生了许多其他模型,例如FastText、GloVe这些模型之间有着细微差别——例如GloVe和Word2Vec是在单词层面上训练,而FastText则是在character n-grams上训练的。但是它们的原理、应用以及结果都非常相似。

Word2Vec的工作原理

Word2Vec的有效性得益于下面这个技巧:针对特定任务训练神经网络,然后将这个神经网络用于其他用途。这个技巧并不是Word2Vec所独有的,这是机器学习中最常用的一个技巧。基本上只需训练神经网络来得到一个特定的输出,然后去掉输出层,只保留神经网络隐藏层的权重。

训练过程和往常一样:给神经网络一个输入值以及一个与输入值相对应的输出。这样,神经网络可以慢慢学习如何生成正确的输出。

这个训练任务是为了计算在给定输入单词的情况下,在上下文中出现某个单词的概率。例如,如果有programmer这个单词,那么在上下文的短语中看到computer这个单词的概率是多少?

Word2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/621370
推荐阅读
相关标签
  

闽ICP备14008679号