分词算法

时间:2024-03-29 18:35:29编辑:奇事君

NLP自然语言处理

罗素悖论:由所有不包含自身的集合构成的集合 例子:理发师称只给那些不给自己理发的人理发。 基于集合论,理发师无论给自己理发还是不给自己理发都是矛盾的。 因此集合论不是完备的。 即使后面冯罗伊德等科学家提出了各种假定条件。 由于上述的原因,集合率无法很好的描述自然语言,科学家发现通过概率模型可以更好的描述自然语言。 深度学习来处理自然语言属于概率模型 证明最小点位于坐标轴上 h = f+c|x| 由于在x = 0处不可导 h-left'(0)*h-right'(0) = (f'+c)*(f'-c) 那么如果c>|f'(0)|可得,h在0处左右导数异号 0是最值。 那么在损失函数加入L1正则化后,可以得到某些维度容易为0,从而得到稀疏解 几乎所有的最优化手段,都将适用凸优化算法来解决 P(A|B) = P(A and B) / P(B) if A and B 独立 =》P(A and B| C) = P(A|C)*P(B|C) 也可以推出 =>A(A|B and C) = P(A|C) (B交C不为空) 抛9次硬币,硬币出现正面的概率是0.5,出现k次的概率分布如下如 服从正态分布 x的平均值 E = x*p(x) + ... x相对于期望的偏离 var = (x-E(x))^2 conv = (x - E(x))*(m - E(m)) 描述x,m是否有同分布 按理协方差为0,并不代表x和m没有关系 例如下图 如果点的分布对称的分布,会得到协方差为0,但是其实他们是有关系的。 把每个相关的概率累加,得到联合概率 P(x1=m1,x2=m2...) = n!*P1 m1/m1!*P2 m2/m2! T(n) = (n-1)! T(x)用一条曲线逼近n!,进而可以求得非整数的阶乘 由二项式分布推出 P = T(a+b)*x (a-1)*(1-x) (b-1)/(T(a)*T(b)) 则正态分布 y为0时,不考虑y‘。y为1时,y'越接近1,越小,越靠近0,越大 把D最小化,迫使y'逼近y 对于一个句子,有若干单词组成。例如 C1: The dog laughs. C2: He laughs. 那么计算P(C1) = P(The, Dog, laughs)的概率和P(C2) = P(He, laughs)的概率。 根据历史文本的统计学习。 可以得到P(C1)<<P(C2) P('I love the game') = P('I')*P('love')*P('the')*P('game') 其中P() = 频率/总单词数 计算一篇文章是积极的还是消极的。 P(y|x) = sigmod(wx) x是文章内每个单词的频率 y表示积极和消极情感 其中P(xk|x1, x2,..xk-1) = frequence(x1, x2 ,, xk)/frequence(x1, x2..xk-1) 2-gram模型例子 把多个gram的模型进行线性整合 P(y|x1, x2, .. xn) = P(y)*P(x1, x2, ... xn|y) / P(x1, x2, ... xn) y代表是否是垃圾邮件 x代表单词 广州市长寿路 -》 广州市长|寿路 广州市长寿路 -》 广州市|长寿路 匹配词袋:广州市,广州市长,长寿路 使用最大匹配发,第二个分词更优 通过统计P(A|B),得出各个option的概率,取最大的概率,则为最后的分词 word => [0, 0 , ... 1, ... 0] word => [0, 1, 0, 1, 0, ...] 可以解决词相似性问题 计算附近词的频率 word => [0, 3, 0, 1, 0, ...] w是附近词的one-hot encoding score是词的one-hot encoding 最后一层通过softmax,取拟合文本 最终中间层则为词向量 输入为词one-hot encoding 输出为附近此的one-hot encoding 最后通过softmax预测附近词 最后中间层则为结果词向量 混合模型是一种统计模型,问题中包含若干个子问题,每个子问题是一个概率分布,那么总问题就是若干个子问题的组合,也就是若干个子分部的组合,这样就形成了混合模型。 有红黑两种硬币,把它们放在盒子里,从盒子里随机抽取一个硬币并投币,抽到红色的概率是p,红色硬币正面的概率是q,黑色硬币正面的概率是m,假设我们没办法看到抽取出的硬币的颜色,只能看到最终是正面或者反面的结果,例如HTTHTTTTHHH (H:正面 T: 反面)。需要估计p,q,m三个参数。 此时可以计算出 通过EM算法迭代如下: 随机p q m 迭代以下过程: 计算上面table p = (aC(正)+cC(反))/total q = aC(正)/(aC正+cC正) m = bC(正)/(bC正 + dC正) 假设有上述数据,需要用混合模型来逼近,通过分析,红色和蓝色数据分别为高斯正态分布,N(u, v) 此时可以得到如下表 p = pN红x/(pN红x+(1-p)N蓝x) u = pN红x/n v = pN红(x-u)^2/n 词性转换概率 词性到单词的转换概率 通过EM递归算法,训练以上参数,得到隐马尔可夫模型 PLSA主题模型 只统计词的频率,不计算词的相对位置 计算文档和单词频率的矩阵 进行奇异矩阵分解 得到A矩阵的压缩U,U中的k则为k个主题 通过分析,LSA得到的主题是跟现实无法关联,它只是一个量,而没有明显的意义。 PLSA为了解决此问题,引入概率模型,先确定主题个数 然后通过构建Doc->topic的概率table,和topic->word的概率table。 然后通过EM模型,得到这两个table的所有概率值。 进而得到文档的主题表示 PLSA的缺陷是,对于预测未知的doc,无法计算此文档的相关概率。随着doc数量的增加,PLSA模型的参数会线性增加,从而会造成过拟合。 LDA通过引入先验概率来克服PLSA的问题。 类似于编译原理的上下文无法句法分析,一颗语法树 通过对CFG引入概率参数 有了概率,可以计算每颗语法树的极大似然概率,并取最大概率的树为最终输出 上一个状态中间层的输出作为下一隐层的输入 类似于HMM的2-gram模型。t状态受到t-1时刻输出的影响,受t-k的输出的k越大,影响越小 由于RNN几乎只受到上一时刻的影响,而忽略了久远信息的影响。从而造成了一定的局限性。 LSTM通过引入长短记忆方法,来维持长记忆的信息。 通过训练核内的sigmod函数,使得LSTM可以根据不同的句子,有条件的保留和过滤历史信息,从而达到长记忆的功能。 GRU是LSTM的简化版,它只需要处理两个sigmod函数的训练,而LSTM需要三个sigmod函数的训练,减少了训练的参数,加快了训练的速度,但也损失了一部分模型的复杂,在处理较复杂问题时,没有LSTM那么好。 auto-encoder-decoder的特点是输出的单元数是固定的。对于一般自然语言处理,例如机器翻译,输入的单元个数跟输出单元的个数并不是一一对应的,此时就需要动态的生成输出单元。Seq2Seq通过动态的输出结束符,代表是否输出完成,达到可以动态的根据输入输出不同的单元个数。 seq2seq的缺点是,所有的输入序列都转化为单一的单元c,导致很多信息都将消失,对于不同的输出yi,它可能依赖的输入xj有可能不一样,此时通过加入注意力模型,通过对xi进行softmax处理,并加入到y权重的训练中,可以让不同的y,有不同的x对它进行影响 softmax的输入为输入单元x,和上一个输出单元y,联合产生softmax的权重,进而对不同的序列,对于同一个x,会有不同的注意力到输出 q = Wq(x) k = Wk(x) v = Wv(x) x为词向量 通过训练,得到权重w,从而学习到这一层的softmax注意力参数 R是前一次encoder的输出 通过增加w的数量,产生多个z,并进行堆叠,通过前馈网络,最后产生z 在使用self attention处理句子时,是没有考虑单词在句子中的位置信息的。为了让模型可以加入考虑单词的位置信息,加入了位置编码的向量 计算如下: pos为单词在句子中的位置 i为词向量的位置 d为句子的长度 位置编码加上词向量形成tranformer的输入 加入了归一化和残差网络 最终通过softmax,输出每个单词的概率,并最终输出单词

一文看懂自然语言处理NLP(4个应用+5个难点+6个实现步骤)

在人工智能出现之前,机器智能处理结构化的数据(例如 Excel 里的数据)。但是网络中大部分的数据都是非结构化的,例如:文章、图片、音频、视频… 在非结构数据中,文本的数量是最多的,他虽然没有图片和视频占用的空间大,但是他的信息量是最大的。 为了能够分析和利用这些文本信息,我们就需要利用 NLP 技术,让机器理解这些文本信息,并加以利用。 每种动物都有自己的语言,机器也是! 自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。 人类通过语言来交流,狗通过汪汪叫来交流。机器也有自己的交流方式,那就是数字信息。 不同的语言之间是无法沟通的,比如说人类就无法听懂狗叫,甚至不同语言的人类之间都无法直接交流,需要翻译才能交流。 而计算机更是如此,为了让计算机之间互相交流,人们让所有计算机都遵守一些规则,计算机的这些规则就是计算机之间的语言。 既然不同人类语言之间可以有翻译,那么人类和机器之间是否可以通过“翻译”的方式来直接交流呢? NLP 就是人类和机器之间沟通的桥梁! 为什么是“自然语言”处理? 自然语言就是大家平时在生活中常用的表达方式,大家平时说的「讲人话」就是这个意思。 NLP 有2个核心的任务: 自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以 NLU 是至今还远不如人类的表现。 自然语言理解的5个难点: 想要深入了解NLU,可以看看这篇文章《一文看懂自然语言理解-NLU(基本概念+实际应用+3种实现方式)》 NLG 是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。 NLG 的6个步骤: 想要深入了解NLG,可以看看这篇文章《一文看懂自然语言生成 – NLG(6个实现步骤+3个典型应用)》 情感 分析 互联网上有大量的文本信息,这些信息想要表达的内容是五花八门的,但是他们抒发的 情感 是一致的:正面/积极的 – 负面/消极的。 通过 情感 分析,可以快速了解用户的舆情情况。 聊天机器人 过去只有 Siri、小冰这些机器人,大家使用的动力并不强,只是当做一个 娱乐 的方式。但是最近几年智能音箱的快速发展让大家感受到了聊天机器人的价值。 而且未来随着智能家居,智能 汽车 的发展,聊天机器人会有更大的使用价值。 语音识别 语音识别已经成为了全民级的引用,微信里可以语音转文字, 汽车 中使用导航可以直接说目的地,老年人使用输入法也可以直接语音而不用学习拼音… 机器翻译 目前的机器翻译准确率已经很高了,大家使用 Google 翻译完全可以看懂文章的大意。传统的人肉翻译未来很可能会失业。 NLP 可以使用传统的机器学习方法来处理,也可以使用深度学习的方法来处理。2 种不同的途径也对应着不同的处理步骤。详情如下: 方式 1:传统机器学习的 NLP 流程 方式 2:深度学习的 NLP 流程 英文 NLP 语料预处理的 6 个步骤 中文 NLP 语料预处理的 4 个步骤 自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。 NLP的2个核心任务: NLP 的5个难点: NLP 的4个典型应用: NLP 的6个实现步骤: 百度百科版本 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。 维基百科版本 自然语言处理(NLP)是计算机科学,信息工程和人工智能的子领域,涉及计算机与人类(自然)语言之间的交互,特别是如何对计算机进行编程以处理和分析大量自然语言数据。自然语言处理中的挑战通常涉及语音识别,自然语言理解和自然语言生成。

上一篇:代理服务器地址

下一篇:逆变器原理