自然语言处理

       自然语言处理用于拼写检查、关键字检索、文本挖掘、文本分类、机器翻译、客服系统以及负责对话系统。

1.语言模型

       举一个例子,我  今天 下午 打  篮球,P(S)称为语言模型,即用来计算一个句子概率的模型,P(S)的表达式如下:

自然语言处理_第1张图片

 存在两个问题:

       1.数据过于稀疏

       2.参数空间太大

N-gram模型:

       在意识到这两个问题后,想办法优化一下模型,其实一个词出现的概率只可能跟他前面一个或者N个词相关,再往前的词实际上就没什么关系了,这就是N-gram模型,所以我们可以优化成这样:

自然语言处理_第2张图片

2.词向量

          将词转换为向量,意思相近的词的词向量越接近

自然语言处理_第3张图片

 神经网络模型:

       比如我输入“我今天下午打”,我想让神经网络模型预测一下打后面接什么东西,如下图构造出神经网络模型,将“我”,“今天”,“下午”,“打”,这几个词的词向量输入,拼接成一个大的列向量,然后进入隐藏层和输出层,就和传统的神经网络是一样的了。

自然语言处理_第4张图片

        训练样本:包括前n-1个词的分别的向量,假定每个词向量大小为m

        投影层:(n-1)*m首尾拼接起来的大向量

        输   出:表示上下文为context(w)时,下一个词恰好为词典中第i个词的概率。

         归一化:

         神经网络优势:只要语料库中出现其中一个,那么其他相似句子的概率也会增大,求解的空间符合真实的逻辑。

        神经网络实现模型:

        CNOW模型:输入上下文,预测中间的词是什么

自然语言处理_第5张图片

       输入层:输入层是上下文的词语的词向量,在训练CBOW模型,词向量只是个副产品,确切来说,是CBOW模型的一个参数。训练开始的时候,词向量是个随机值,随着训练的进行不断被重新)。

       投影层:投影层对其求和,所谓求和,就是简单的向量加法。

       输出层:输出层输出最可能的w。由于语料库中词汇量是固定个,所以上述过程其实可以看做一个多分类问题。从|C|个分类中挑”一个。

       举个例子来说明,在输入中给出上下文的词向量,并且组合成一个大的列向量,然后将语料库中的词按照他们出现的频率构造出一个哈夫曼树(出现频率高的比较靠前),然后在每一层根据机器算出的参数\theta来计算出sigmoid函数值,计算出正例概率和负例概率(如下图),如果是正例就规定往右边走,如果是负例,就规定往左边走,如下图,最终就走到了“足球”这个点。那么得到“足球”的概率就如下图表示:

     自然语言处理_第6张图片

       CBOW求解目标:就是让足球出现的概率最大,一直优化参数\theta和输入,让概率p最大

   自然语言处理_第7张图片

   CBOW梯度上升求解过程:

            计算出似然函数对输入的导数和参数\theta的导数:

            自然语言处理_第8张图片

       不过Xw是上下文的词向量的和,不是上下文单个词的词向量。怎么把这个更新量应用到单个词的词向量上去呢? word2vec采取的是直接将Xw的更新量整个应用到每个单词的词向量上去。

       Skip-gram模型:输入当前的词,想要得出上下文。

自然语言处理_第9张图片

     

你可能感兴趣的:(机器学习,自然语言处理,机器学习,算法)