• [技术干货] 多语言人工智能​​分析是释放客户体验潜力以促进业务增长的关键
    作者:Michalis Michael对于正在意识到围绕其业务具有大量非结构化数据的企业高管来说,人工智能在文本分析方面不受语言限制的可能性是一个至关重要(但很容易被忽视)的问题。文本分析是一门强大的学科,能够发现和注释客户意见的每个示例,而不用考虑客户采用哪一种语言。对于正在意识到围绕其业务具有大量非结构化数据的企业高管来说,人工智能在文本分析方面不受语言限制的可能性是一个至关重要(但很容易被忽视)的问题。毕竟,非结构化数据(UD)并不是以电子表格等格式结构化的数据,通常是在各种社交媒体、博客、网站评论、呼叫中心电话、私人聊天等的大量数据——而这些数据对于有兴趣改善客户体验(CX)的企业来说意味着具有更多价值的大量资源。大多数数据都是非结构化数据。根据麻省理工学院的估计,如今80%~90%的数据是非结构化数据,并且正在快速增长。而这一事实意味着,客户的所有意见都可以供那些投资于技术和专业知识的企业进行整理和分析。这是文本分析人工智能发挥的作用。这导致在任何平台上对企业品牌发表评论的每一位客户都可以前所未有地了解他们的想法、观点和想法。它可以让企业准确而快速地发现优先解决的客户痛点,从而减少客户流失。鉴于这种普遍性,认识到语言不可知论的价值就显得尤为重要。将分析和注释仅限于英语的观点(当其他观点存在时)会破坏非结构化数据的规模和这种文本分析的普遍性。因此,有必要了解多语言人工智能分析的工作原理,以及其收集客户意见综合概述的潜力。自然语言处理的力量人工智能驱动的文本分析的基础是机器学习(ML)和自然语言处理(NLP)的结合。机器学习是一种旨在模仿人类学习的人工智能方法。虽然传统的编程需要执行人类创建的规则,但机器学习使用数据分析来学习可用于推断的极其复杂的模式,这使得机器学习非常擅长解决问题和执行复杂的任务。与此同时,自然语言处理(NLP)属于处理语言。实际上,它可以理解为是机器学习支持的复杂任务之一。在这种情况下,自然语言处理(NLP)的用途是多种多样的。它可以用于更简单的目标,例如计算给定的术语或单词在文本中出现的频率。或者可以承担更艰巨的挑战,即确定给定文本的情绪甚至情感。显然,这两者对于希望详细了解所有可用客户意见的企业都有很大的用处。自然语言处理(NLP)的这些用途使企业能够评估大量数据,以发现他们的品牌在网上或线下被谈论的频率,以及了解是积极的还是消极的评论,还是与一系列更细微的情绪有关。多语言的方法至关重要的是,这种方法的好处在于其包含所有客户意见的能力——文本分析适用于每种意见,而不是样本或选择。然而,为了实现这一目标,不能限制表达给定意见的语言,而是需要人工智能完全与语言无关,特别是如果一家企业是跨国组织的话。可以通过使用无监督和有监督的机器学习来实现这一点。监督机器学习意味着所涉及的算法由人类对训练数据进行注释“训练”,在涉及大量数据(也称为大数据)的任务时,人工智能可以比人类做得更好。为了确保满足所有语言的需求,研究人员利用了一个由大约300名以各种语言为母语的人员组成的团队,他们对非结构化数据进行阅读、理解和人工注释。例如,确定某条推特是正面还是负面的,其主题是否存在讽刺意味,甚至是电子邮件或聊天消息的内容所暗示的客户旅程。一旦人工智能接受母语训练(不需要翻译成英语和使用英语的机器学习模型)以非常准确地实现其目标(无论是建立情绪还是识别主题),其结果可以很容易地使用英语可视化,以客户可以理解的语言为客户体验(CX)专业人员、客户保留经理等解锁所有客户的意见。最重要的是,人工智能精度还可以不断提高。例如,当一个人用某种情绪对一小部分推文进行注释时,就可以衡量其准确性。可以看到80%~90%或更多内容与算法匹配,无论这些推文是用什么语言写的。考虑到表达情感的主观性,这表明这些人工智能技术已经变得多么强大。在非结构化数据中大海捞针非结构化数据(UD)无处不在,它代表了一个了解所有客户意见的机会,而不是像民意调查那样,根据定义只能提供基于样本的客户意见。然而,为了真正实现这种不受限制地获取消费者意见的能力,跨国公司不仅需要聘请人工智能专家和技术人员,还需要确保他们的人工智能系统在所有相关语言的数据上都得到与英语相同的高精度训练。这样一来,文本分析不仅与源无关,而且与语言无关。让企业领导可以自信地断言,他们对客户的观点、痛点和收获点的理解是详细、精确以及全面的。责任编辑:姜华   来源: 企业网D1Net
  • [技术干货] 自然语言处理序列模型——HMM隐马尔可夫模型
    在上一篇中主要讲了对于文本语料的提取和预处理的过程,接下来就要进入到核心步骤,即对于处理模型的掌握,处理模型这块的篇幅会很长,对于不同的模型,其优缺点各不相同,因此有必要对这一块进行一个全方面的掌握。在深度学习技术还未应用到领域中之前,在自然语言处理领域中最通用的模型都是基于概率统计的。而其中最为核心的模型就是HMM(隐马尔可夫模型)。下面就让本篇文章为读者揭开HMM的面纱吧,提前说明,对于这一块模型的掌握需要具备一定的概率论的基础知识,对于这一块内容,本文不再作过多的赘述,因为大学本科的高数基本都包含了概率论这门课程。1.概率模型在掌握HMM模型之前,首先需要对概率模型进行一个掌握。概率模型,顾名思义,就是将学习任务归结到计算变量的概率分布的模型。针对于自然语言处理领域,即通过概率分布的形式来表达不同词汇之间的关联和区别。概率模型的提出是基于生活中一些观察到的现象来推测和估计未知的事务这一任务的,在概率模型中这种推测和估计也叫推断。推断的本质也就是利用已经有的或者可观测到的变量,来推测未知变量的条件分布。1.1.生成模型和判别模型目前概率模型又可以分为两类,即生成模型和判别模型。由上文可知,概率模型是通过可观测变量来推断未知变量分布,因此为了更好的掌握生成模型和判别模型之间的差异,可以将可观测的变量命名为X,而需要推断的未知的变量命名为Y。那么对于生成模型,其需要学习的是X和Y之间的联合概率分布P(X,Y),而判别模型学习的是条件概率分布P(Y|X)。而对于联合概率分布和条件概率分布已经是概率论的基础理论知识,在这不再赘叙了,望不了解的读者自行查阅。对于这两种不同概率分布的模型,其各自模型的能力不同。例如,对于某一个给定的观测值X,运用条件概率分布P(Y|X),即可以很容易的得出未知Y的值(P(Y)=P(X)*P(Y|X))。因此对于分类问题,就可以直接运用判别模型,即观测对于给定的X,得到的Y的概率哪一个最大,就可以判别为哪一个类别。因此判别模型更适用于分类任务,其在分类任务上具备显著的优势。而对于生成模型,直接用该模型来做分类任务是比较困难的,除非将联合概率分布转化为条件概率分布,即将生成模型转化为判别模型去做分类任务。但是,生成模型主要并不是处理分类问题的,其有专门的用途,之后讲的HMM就是一种生成模型,在这先卖个小关子。1.2.概率图模型在掌握生成模型和判别模型的主要过程和任务之后,还需要对概率图模型有个基本的掌握。它是一种用图结构作为表示工具,来表达变量之间的关系的概率模型。这里的图与数据结构中图的结构是类似的,即由节点和连接节点的边组成。在概率图模型中,一般会用节点来表示某一随机变量,而节点之间的边则表示不同变量之间的概率关系。同时类比于数据结构,边也是分为有方向和无方向的,从而也就分为有向图模型(贝叶斯网络)和无向图模型(马尔可夫网)。虽然HMM的名字里有“马尔可夫”,但是HMM模型是贝叶斯网络的一种,在这里不要弄混淆了。HMM是最为普遍的动态贝叶斯网络,即对变量序列建模的贝叶斯网络,属于有向图模型。为了后续HMM模型更好的理解,在这里先对马尔可夫链进行介绍,马尔可夫链是一个随机过程模型,该模型描述了一系列可能的事件,而这一系列中的每一个事件的概率仅仅依赖于前一个事件。如下图所示:该图就是一个简单的马尔可夫链,图中的两个节点就分别表示晴天和下雨两个事件,图中节点之间的边就表示事件之间的转移概率。即:晴天以后,有0.9的概率还是晴天,0.1的概率会下雨;而雨天以后,有0.4的概率是晴天,0.6的概率还会继续下雨。因此这个模型对于今天天气的预测,只与昨天天气有关,与前天以及更早的天气无关。因此由马尔可夫链可知,只要知道前一天的天气,即可以推测今天的天气的可能性了。2.HMM——隐马尔可夫模型在掌握了概率模型的基础上,进一步去掌握HMM模型将会加深读者对HMM这一模型的理解。HMM属于概率模型的一种,即时序的概率模型。2.1.序列模型HMM是一个时序的概率模型,其中的变量分为状态变量和观测变量两组,各自都是一个时间序列,每个状态或者观测值都和一个时刻相对应,如下图所示(其中箭头表示依赖关系):上图中,状态变量分别为 , …… ,观测变量分别为 , …… 。一般情况下,状态序列都是隐藏的,也就是不能被观测到的,所以状态变量是隐变量,即HMM中的Hidden的缘由。其中这个隐藏的、不可观测的状态序列就是由一个马尔可夫链随机生成的,即HMM中的第一个M即马尔可夫的含义。同时,一般的HMM的状态变量取值都是离散的,观测变量的取值可以是离散的,也可以是连续的。为了下文进行方便地阐述,仅讨论状态变量和观测变量都是离散的情况,并且这也是大多数应用中出现的情况。2.2.基本假设HMM模型是建立在两个基本假设之上的:1. 假设隐藏的马尔可夫链在任意时刻t的状态只依赖于前一个时刻(t-1)的状态,而与其他时刻的状态和观测无关,这一假设也叫齐次马尔可夫假设,公式表示为:P( …… )= P( ),t=1,2,……k2. 假设任意时刻的观测只依赖于该时刻的马尔可夫链状态,而与其他观测和状态无关,这一假设也叫观测独立性假设,公式表示为:P( …… …… )= P( )2.3.HMM确定条件确定一个HMM模型的条件为两个空间和三组参数,两个空间也就是上文提到的观测值和状态值空间,即观测空间W和状态空间S。确定这两个空间后,还需要三组参数,也就是三个概率矩阵。分别为:· 初始状态概率:模型在初始时刻各个状态出现的概率,该概率矩阵即表示每个状态初始的概率值,通常定义为=(,……),其中就表示模型初始状态为的概率;· 状态转移概率:即模型在不同状态之间切换的概率,通常将该概率矩阵定义为A=,矩阵中的就表示在任意时刻下,状态到下个时刻状态的概率;· 输出观测概率:模型根据当前的状态来获得不同观测值的概率,通常将该概率矩阵定义为:B=,矩阵中的 就表示在任意时刻下,状态为时,观测值被获取的概率。(这个概率矩阵针对于有时候已知,而未知的情况)。有了上述的状态空间S、观测空间O以及三组参数 =[A,B, ]后,一个HMM模型就可以被确定下来了。2.4.HMM解决问题确定好HMM模型后,就需要用该模型去解决一系列问题,其中主要包括概率计算问题、预测问题以及学习问题。· 概率计算问题,即评价问题,对给定模型设置参数 后,给定观测序列,来求其与模型之间的匹配度。· 预测问题,即解码问题,对给定模型设置参数 后,给定观测序列,求最有可能(概率值最大)与其对应的装填序列。· 学习问题,即训练问题,给定观测序列及状态序列,来估计模型的参数,使得在该模型参数下,观测序列概率最大。即训练模型,来更好地用模型表示观测数据。以上三个问题中,前两个问题都是已知模型参数(模型已经确定),如何使用该模型的问题,而第三个问题则是如何通过训练来得到模型参数(确定模型)的问题。3.模型学习算法HMM模型的学习算法可根据训练数据的不同,分为有监督学习和无监督学习两种。这两种学习方法在今后深度学习技术模型中也是应用最为广泛的。即对于模型来说,若训练数据既包括观测值(观测序列),又包括状态值(状态序列),并且两者之间的对应关系已经标注了(即训练之前确定了对应关系),那么采用的学习算法就是有监督学习。否则,对于只有观测序列而没有明确对应的状态序列,则使用的就是无监督学习算法进行训练。3.1.有监督学习在模型训练过程中,训练数据是由观测序列和对应的状态序列的样本对组成,即训练数据不仅包含观测序列,同时包含每个观测值对应的状态值,这些在训练前都是已知的。这样就可以频数来估计概率。首先通过统计训练数据中的状态值和观测值,分别得到状态空间( , …… ),观测变量分别为( , …… )。然后当样本在时刻t时处于状态 ,等到了t+1时刻,状态属于 的频数为 ,则可以用该频数来表达估计状态转移概率 为:当样本状态为 ,观测为 的频数为 ,则可以用该频数来表示观测概率 为:而初始状态概率 即为训练数据中所有初始状态为 的样本的频率。所以,有监督学习通过对训练数据进行统计估计就可以得到模型的相应参数 =[A,B, ]。3.2.无监督学习无监督学习即训练数据仅仅只有观测值(观测序列),而没有与其对应的状态序列,因此状态序列S实际上是处于隐藏状态,也就无法通过频数来直接估计概率了。对于这一算法有专门的类似前向-后向算法的Baum-Welch算法来学习。该算法与聚类算法中用到的EM算法类似,即运用迭代思想解决数据缺失情况下的参数估计问题,其基本过程是根据已经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值来估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。4.总结在深度学习模型运用在自然语言处理之前,对于自然语言领域的序列数据进行处理是采用概率统计模型,具体的概率统计模型有HMM和CRF两种,其中最为核心的是HMM模型,CRF也是是类似HMM的一个模型。该篇文章主要针对HMM模型进行阐述,有助于读者更为全面地掌握HMM模型,由于篇幅缘故,CRF模型将在后续进行阐述。该模型也是在HMM基础上进行延申的,适用性低于HMM模型。因此,对于HMM模型的掌握至关重要,同时目前针对于自然语言处理领域深度学习技术的瓶颈问题(难以取得较大改善的结果),不妨考虑换个思维,使用下概率统计模型HMM来处理,也许能取得不错的效果。作者介绍稀饭,51CTO社区编辑,曾任职某电商研发中心大数据技术部门,做推荐算法。目前攻读智能网络与大数据方向的研究生,主要擅长领域有推荐算法、NLP、CV,使用代码语言有Java、Python、Scala。       原文标题 : 自然语言处理序列模型——HMM隐马尔可夫模型
  • [技术干货] 自然语言处理序列模型——HMM隐马尔可夫模型
    在上一篇中主要讲了对于文本语料的提取和预处理的过程,接下来就要进入到核心步骤,即对于处理模型的掌握,处理模型这块的篇幅会很长,对于不同的模型,其优缺点各不相同,因此有必要对这一块进行一个全方面的掌握。在深度学习技术还未应用到领域中之前,在自然语言处理领域中最通用的模型都是基于概率统计的。而其中最为核心的模型就是HMM(隐马尔可夫模型)。下面就让本篇文章为读者揭开HMM的面纱吧,提前说明,对于这一块模型的掌握需要具备一定的概率论的基础知识,对于这一块内容,本文不再作过多的赘述,因为大学本科的高数基本都包含了概率论这门课程。1.概率模型在掌握HMM模型之前,首先需要对概率模型进行一个掌握。概率模型,顾名思义,就是将学习任务归结到计算变量的概率分布的模型。针对于自然语言处理领域,即通过概率分布的形式来表达不同词汇之间的关联和区别。概率模型的提出是基于生活中一些观察到的现象来推测和估计未知的事务这一任务的,在概率模型中这种推测和估计也叫推断。推断的本质也就是利用已经有的或者可观测到的变量,来推测未知变量的条件分布。1.1.生成模型和判别模型目前概率模型又可以分为两类,即生成模型和判别模型。由上文可知,概率模型是通过可观测变量来推断未知变量分布,因此为了更好的掌握生成模型和判别模型之间的差异,可以将可观测的变量命名为X,而需要推断的未知的变量命名为Y。那么对于生成模型,其需要学习的是X和Y之间的联合概率分布P(X,Y),而判别模型学习的是条件概率分布P(Y|X)。而对于联合概率分布和条件概率分布已经是概率论的基础理论知识,在这不再赘叙了,望不了解的读者自行查阅。对于这两种不同概率分布的模型,其各自模型的能力不同。例如,对于某一个给定的观测值X,运用条件概率分布P(Y|X),即可以很容易的得出未知Y的值(P(Y)=P(X)*P(Y|X))。因此对于分类问题,就可以直接运用判别模型,即观测对于给定的X,得到的Y的概率哪一个最大,就可以判别为哪一个类别。因此判别模型更适用于分类任务,其在分类任务上具备显著的优势。而对于生成模型,直接用该模型来做分类任务是比较困难的,除非将联合概率分布转化为条件概率分布,即将生成模型转化为判别模型去做分类任务。但是,生成模型主要并不是处理分类问题的,其有专门的用途,之后讲的HMM就是一种生成模型,在这先卖个小关子。1.2.概率图模型在掌握生成模型和判别模型的主要过程和任务之后,还需要对概率图模型有个基本的掌握。它是一种用图结构作为表示工具,来表达变量之间的关系的概率模型。这里的图与数据结构中图的结构是类似的,即由节点和连接节点的边组成。在概率图模型中,一般会用节点来表示某一随机变量,而节点之间的边则表示不同变量之间的概率关系。同时类比于数据结构,边也是分为有方向和无方向的,从而也就分为有向图模型(贝叶斯网络)和无向图模型(马尔可夫网)。虽然HMM的名字里有“马尔可夫”,但是HMM模型是贝叶斯网络的一种,在这里不要弄混淆了。HMM是最为普遍的动态贝叶斯网络,即对变量序列建模的贝叶斯网络,属于有向图模型。为了后续HMM模型更好的理解,在这里先对马尔可夫链进行介绍,马尔可夫链是一个随机过程模型,该模型描述了一系列可能的事件,而这一系列中的每一个事件的概率仅仅依赖于前一个事件。如下图所示:该图就是一个简单的马尔可夫链,图中的两个节点就分别表示晴天和下雨两个事件,图中节点之间的边就表示事件之间的转移概率。即:晴天以后,有0.9的概率还是晴天,0.1的概率会下雨;而雨天以后,有0.4的概率是晴天,0.6的概率还会继续下雨。因此这个模型对于今天天气的预测,只与昨天天气有关,与前天以及更早的天气无关。因此由马尔可夫链可知,只要知道前一天的天气,即可以推测今天的天气的可能性了。2.HMM——隐马尔可夫模型在掌握了概率模型的基础上,进一步去掌握HMM模型将会加深读者对HMM这一模型的理解。HMM属于概率模型的一种,即时序的概率模型。2.1.序列模型HMM是一个时序的概率模型,其中的变量分为状态变量和观测变量两组,各自都是一个时间序列,每个状态或者观测值都和一个时刻相对应,如下图所示(其中箭头表示依赖关系):上图中,状态变量分别为 , …… ,观测变量分别为 , …… 。一般情况下,状态序列都是隐藏的,也就是不能被观测到的,所以状态变量是隐变量,即HMM中的Hidden的缘由。其中这个隐藏的、不可观测的状态序列就是由一个马尔可夫链随机生成的,即HMM中的第一个M即马尔可夫的含义。同时,一般的HMM的状态变量取值都是离散的,观测变量的取值可以是离散的,也可以是连续的。为了下文进行方便地阐述,仅讨论状态变量和观测变量都是离散的情况,并且这也是大多数应用中出现的情况。2.2.基本假设HMM模型是建立在两个基本假设之上的:1. 假设隐藏的马尔可夫链在任意时刻t的状态只依赖于前一个时刻(t-1)的状态,而与其他时刻的状态和观测无关,这一假设也叫齐次马尔可夫假设,公式表示为:P( …… )= P( ),t=1,2,……k2. 假设任意时刻的观测只依赖于该时刻的马尔可夫链状态,而与其他观测和状态无关,这一假设也叫观测独立性假设,公式表示为:P( …… …… )= P( )2.3.HMM确定条件确定一个HMM模型的条件为两个空间和三组参数,两个空间也就是上文提到的观测值和状态值空间,即观测空间W和状态空间S。确定这两个空间后,还需要三组参数,也就是三个概率矩阵。分别为:· 初始状态概率:模型在初始时刻各个状态出现的概率,该概率矩阵即表示每个状态初始的概率值,通常定义为=(,……),其中就表示模型初始状态为的概率;· 状态转移概率:即模型在不同状态之间切换的概率,通常将该概率矩阵定义为A=,矩阵中的就表示在任意时刻下,状态到下个时刻状态的概率;· 输出观测概率:模型根据当前的状态来获得不同观测值的概率,通常将该概率矩阵定义为:B=,矩阵中的 就表示在任意时刻下,状态为时,观测值被获取的概率。(这个概率矩阵针对于有时候已知,而未知的情况)。有了上述的状态空间S、观测空间O以及三组参数 =[A,B, ]后,一个HMM模型就可以被确定下来了。2.4.HMM解决问题确定好HMM模型后,就需要用该模型去解决一系列问题,其中主要包括概率计算问题、预测问题以及学习问题。· 概率计算问题,即评价问题,对给定模型设置参数 后,给定观测序列,来求其与模型之间的匹配度。· 预测问题,即解码问题,对给定模型设置参数 后,给定观测序列,求最有可能(概率值最大)与其对应的装填序列。· 学习问题,即训练问题,给定观测序列及状态序列,来估计模型的参数,使得在该模型参数下,观测序列概率最大。即训练模型,来更好地用模型表示观测数据。以上三个问题中,前两个问题都是已知模型参数(模型已经确定),如何使用该模型的问题,而第三个问题则是如何通过训练来得到模型参数(确定模型)的问题。3.模型学习算法HMM模型的学习算法可根据训练数据的不同,分为有监督学习和无监督学习两种。这两种学习方法在今后深度学习技术模型中也是应用最为广泛的。即对于模型来说,若训练数据既包括观测值(观测序列),又包括状态值(状态序列),并且两者之间的对应关系已经标注了(即训练之前确定了对应关系),那么采用的学习算法就是有监督学习。否则,对于只有观测序列而没有明确对应的状态序列,则使用的就是无监督学习算法进行训练。3.1.有监督学习在模型训练过程中,训练数据是由观测序列和对应的状态序列的样本对组成,即训练数据不仅包含观测序列,同时包含每个观测值对应的状态值,这些在训练前都是已知的。这样就可以频数来估计概率。首先通过统计训练数据中的状态值和观测值,分别得到状态空间( , …… ),观测变量分别为( , …… )。然后当样本在时刻t时处于状态 ,等到了t+1时刻,状态属于 的频数为 ,则可以用该频数来表达估计状态转移概率 为:当样本状态为 ,观测为 的频数为 ,则可以用该频数来表示观测概率 为:而初始状态概率 即为训练数据中所有初始状态为 的样本的频率。所以,有监督学习通过对训练数据进行统计估计就可以得到模型的相应参数 =[A,B, ]。3.2.无监督学习无监督学习即训练数据仅仅只有观测值(观测序列),而没有与其对应的状态序列,因此状态序列S实际上是处于隐藏状态,也就无法通过频数来直接估计概率了。对于这一算法有专门的类似前向-后向算法的Baum-Welch算法来学习。该算法与聚类算法中用到的EM算法类似,即运用迭代思想解决数据缺失情况下的参数估计问题,其基本过程是根据已经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值来估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。4.总结在深度学习模型运用在自然语言处理之前,对于自然语言领域的序列数据进行处理是采用概率统计模型,具体的概率统计模型有HMM和CRF两种,其中最为核心的是HMM模型,CRF也是是类似HMM的一个模型。该篇文章主要针对HMM模型进行阐述,有助于读者更为全面地掌握HMM模型,由于篇幅缘故,CRF模型将在后续进行阐述。该模型也是在HMM基础上进行延申的,适用性低于HMM模型。因此,对于HMM模型的掌握至关重要,同时目前针对于自然语言处理领域深度学习技术的瓶颈问题(难以取得较大改善的结果),不妨考虑换个思维,使用下概率统计模型HMM来处理,也许能取得不错的效果。作者介绍稀饭,51CTO社区编辑,曾任职某电商研发中心大数据技术部门,做推荐算法。目前攻读智能网络与大数据方向的研究生,主要擅长领域有推荐算法、NLP、CV,使用代码语言有Java、Python、Scala。       原文标题 : 自然语言处理序列模型——HMM隐马尔可夫模型
  • [其他] 最常见的NLP任务
    NLP任务可以大致分为词法分析、句法分析、语义分析三个层面。具体的,本文按照单词-】句子】文本做顺序展开,并介绍各个层面的任务及对应技术。本节上半部分的分词、命名实体识别、词向量等等可以视为NLP基础的任务。分词分词是指将文档划分为单个单词的列表。你可能想要删除停用词或为句子中的单个词查找词性标签。为此,你首先需要将句子分成单独的单词。为了分词,你可以使用NLTK库中的word_tokenize()方法来分词。停用词删除停用词是常用的词,例如a、is、am、it、he和she。这些词在训练深度学习算法时可能会也可能不会发挥任何作用,具体取决于手头的任务。有时,停用词会从数据集中完全删除。要删除停用词,你必须首先从NLTK下载停用词列表。接下来,你需要对文本进行分词,然后检查该词是否存在于停用词列表中。如果在停用词列表中找到该词,则忽略该词。否则,将该词添加到不是停用词的词列表中。词干提取和词形还原词干化是指将一个词缩减为其词干形式。例如,计算机、计算和计算这个词的词干是“计算”。要执行词干提取,你可以使用nltk.stem模块中的PorterStemmer。你想要应用词干提取的那个单词会被传递给PorterStemmer对象的stem()函数。词性标注和命名实体识别你经常需要查找句子中单词的词性。例如,你可能想要查找一个词是名词、代词还是人名等。使用NLTK,你可以轻松查找一个词是动词、名词、代词还是任何其他词性。要查找词性和命名实体,你可以使用NLTK模块中的pos_tags功能。你必须将分词后的单词传递给pos_tags函数。这里提供一个例子。文本语义相似度语义相似度是指不同文本文档在意义上的相似度。要查找语义相似性,你可以再次使用SpaCy库。Similarity函数返回的是两个文本之间的语义相似度。该方法返回一个介于0和1之间的值,其中1表示100%的相似性。词义消歧一个词在不同的语境中可以有不同的含义。例如,当你说“I live on a bank of reiver”时,你指的”bank”是河边。如果你说“I withdraw some money from my bank”,那么在这种情况下,bank这个词是指管理资金的地方。在给定上下文中识别单词正确含义的过程就叫做词义消歧。要执行词义消歧,你可以使用 pywsd 库,它代表“Python 词义消歧”。图片来源:https://github.com/aialgorithm/AiPy
  • [其他] 人工智能-自然语言处理
    早在20世纪50年代,随着电子计算机的出现,产生了许多自然语言处理的任务需求,其中最典型的就是机器翻译。当时存在两派不同的自然语言处理方法:**基于规则方法的符号派**和**基于概率方法的随机派**。受限于当时的数据和算力,随机派**无法发挥出全部的功力**,使得符号派的研究略占上风。体现到翻译上,人们认为机器翻译的过程是在解读密码,试图通过查询词典来实现逐词翻译,这种方式产出的翻译效果不佳、难以实用。当时的一些成果包括1959年宾夕法尼亚大学研制成功的TDAP系统(Transformation and Discourse Analysis Project,最早的、完整的英语自动剖析系统)、布朗美国英语语料库的建立等。IBM701计算机进行了世界上第一次机器翻译试验,将几个简单的俄语句子翻译成了英文。在这之后,苏联、英国、日本等国家也陆续进行了机器翻译试验。1966年,美国科学院的语言自动处理咨询委员会(ALPAC)发布了一篇题为《语言与机器》的研究报告,报告全面否定了机器翻译的可行性,认为机器翻译不足以克服现有困难,难以投人使用。这篇报告浇灭了之前的机器翻译热潮,许多国家开始削减这方面的经费投人,许多相关研究被迫暂停,自然语言研究陷人低谷。 许多研究者痛定思痛,意识到两种语言间的差异不仅体现在词汇上,还体现在**句法结构**的差异上,为了提升译文的可读性,应该加强语言模型和语义分析的研究。里程碑事件出现在1976年,加拿大蒙特利尔大学与加拿大联邦政府翻译局联合开发了名为TAUM-METEO的机器翻译系统,提供天气预报服务。这个系统每小时可以翻译6万-30万个词,每天可翻译1000-2000篇气象资料,并能够通过电视、报纸立即公布。在这之后,欧盟、日本也纷纷开始研究多语言机器翻译系统,但并未取得预期的成效。 到了90年代,自然语言处理进人了发展繁荣期。随着计算机的计算速度和存储量大幅增加、**大规模真实文本的积累产生,以及被互联网发展激发出的、以网页搜索为代表的基于自然语言的信息检索和抽取需求出现,人们对自然语言处理的热情空前高涨**。在传统的基于规则的处理技术中,人们引人了更多数据驱动的统计方法,将自然语言处理的研究推向了一个新高度。除了机器翻译之外,网页搜索、语音交互、对话机器人等领域都有自然语言处理的功劳。 进人2010年以后,基于大数据和浅层、深层学习技术,自然语言处理的效果得到了进一步优化。机器翻译的效果进一步提升,出现了专门的智能翻译产品。对话交互能力被应用在客服机器人、智能助手等产品中。 这一时期的一个重要里程碑事件是IBM研发的Watson系统参加**综艺问答**节目Joepardy。比赛中Watson没有联网,但依靠4TB磁盘内200万页结构化和非结构化的信息,成功战胜了人类选手取得冠军,向世界展现了自然语言处理技术的实力。机器翻译方面,谷歌推出的神经网络机器翻译(GNMT)相比传统的基于词组的机器翻译(PBMT),英语到西班牙语的错误率下降了87%,英文到中文的错误率下降了58%,取得了非常强劲的提升。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20225/22/1653208135085416118.png)
  • [技术干货] 微软朱晨光:预训练模型下一步怎么走?突破PLM的「不可能三角」
    作者:机器之心文章虽然不长短短四页,却简明地涵盖了 PLM 过去的一系列工作。​近年来,大规模预训练语言模型(PLM)已经显著提升了各种 NLP 任务的性能。从 BERT 和 GPT-2 开始,自监督预训练 + 监督式微调的范式取得了巨大的成功,刷新了语义相似度、机器阅读理解、常识推理和文本摘要等很多 NLP 领域的 SOTA 结果。此外,中等规模的 PLM 实现了广泛和快速的模型微调和调整。但是,在很多实际尤其是新颖的 NLP 场景中,受限于预算或者时间,用于有效微调的标注数据极其有限。这种情况刺激了零样本和小样本 NLP 模型的发展。从 GPT-3 开始,当仅给出任务描述以及可能的一些手动示例时,超级大规模 PLM(SL-PLM)在一般 NLP 任务上显示出了更强的性能。这种能力在以往的中等规模 PLM 中没有观察到。然而,SL-PLM 的前所未有的规模在很大程度上也限制了它们的广泛应用。小的科技公司和研究人员很难获得加载这些模型所需要的足够的计算资源,更不用说高效的部署和可能的微调了。近日,微软认知服务研究小组(Cognitive Services Research,CSR)的两位研究者在其新论文《Impossible Triangle: What’s Next for Pre-trained Language Models?》中对未来的预训练语言模型进行了展望。论文一作朱晨光(Chenguang Zhu)本科毕业于清华姚班,2016 年博士毕业于斯坦福大学。之后,他进入微软工作,现任 CSR 首席研究经理。论文地址:https://arxiv.org/pdf/2204.06130.pdf他们首先根据不可能三角(Impossible Triangle)的概念详细阐述当前使用 PLM 模型的难点,这里的不可能三角包括中等模型大小、SOTA 小样本学习能力和 SOTA 微调能力。研究者认为,所有现有的 PLM 模型都缺少不可能三角中的一个或多个属性。为了弥补 PLM 缺失的这些属性,人们提出了各种技术,例如知识蒸馏、数据增强和提示学习,这些不可避免地对 PLM 在真实场景中的应用带来了额外的工作。针对这些情况,研究者对未来 PLM 的研究方向提出了自己的见解以实现不可能三角,并将任务分解成了三个关键阶段。不可能三角该研究用「不可能三角」这个经济学理论来形容 PLM 研究当前遇到的障碍,如图 1 所示。这个三角描述了高效使用 PLM 三个关键属性:P1 表示模型尺寸,P2 表示 SOTA 小样本学习能力,P3 表示 SOTA 自监督学习能力。这三个要素对应 PLM 在实际应用中的三个需求:P1 用于使用合理数量的计算资源进行高效部署;P2 用于标记数据为零或很少的场景;P3 针对标注数据比较丰富的场景。不可能三角存在的一个潜在原因是,在当前阶段,只有当 PLM 规模足够大、容量足够高,小样本学习能力才会出现。虽然有研究设计出了中等规模的 PLM(例如 iPET),以实现比 GPT-3 更好的小样本学习能力,但该模型被后来的 SL-PLM 超越,之后随着模型的不断扩展,零样本或小样本学习性能不断得到提高。例如,与具有 8B 和 62B 参数的模型变体相比,具有 540B 参数的 PaLM 在许多任务上的准确率都有了大幅提升。因此,在保持卓越的监督学习能力的同时,开发具有 SOTA 零 / 小样本学习性能的中等规模模型仍然是一个巨大的挑战。尽管没有 PLM 实现不可能三角中的所有三个属性,但它们中的许多已经获得了其中的一两个功能:中等规模 PLM(P1 + P3):这些语言模型具有中等规模,参数小于 10 亿,能够有效地进行调优和部署。这类模型在一般的 NLP 任务中(例如 GLUE 基准、文本摘要、open-domain 问答、尝试推理)可以达到 SOTA 性能。然而,这类模型通常具有相对较弱的零 / 小样本学习能力,这意味着使用这些模型取决于目标域中足够的标记数据。超大规模 PLM(P2):这些语言模型具有超大规模,参数 1 到 10000 亿,并且在大规模数据上进行了预训练。例如,具有 5400 亿参数的 PaLM 在具有 7800 亿个 token 的不同文本语料库上进行了预训练。当具有 prompt 任务描述和一些少量的输入 - 输出样本对时,这类模型在一般的零 / 小样本 NLP 任务上实现了 SOTA 性能。然而,一般而言,SL-PLM 的零 / 小样本性能低于有监督训练模型的性能;在微调之后,许多 SL-PLM 的性能仍然低于最佳微调的中等规模的 PLM,可能是由于这类模型尺寸巨大难以微调。当前都有哪些弥补方法由于不可能三角关系的存在,研究者采取不同措施来解决。可总结如下:巨大的模型规模(缺少 P1)。当 SL-PLM 显示出极好的小样本学习能力以及微调后性能强大,就会发生这种情况。为了获得性能与 SL-PLM 相似的中等大小的模型,一种常见的做法是知识蒸馏 (KD)。在 KD 中,较大的模型充当教师,较小的模型是学生,学生从教师的预测分布或参数中学习。知识蒸馏在创建更有效的模型方面非常有效,但性能却略有降低。然而,知识蒸馏仍然存在两个问题:首先,学生模型很难达到与老师模型相同的性能;其次,SL-PLM 大尺寸阻碍了推理,使其作为教师模型不方便使用。较差的零 / 小样本性能(缺少 P2):这对于中等规模的 PLM 最常见,它们在微调后可以实现 SOTA 性能,但具有相对较低的零 / 小样本学习能力。当缺少足够的标记数据时,部署这样的模型是比较好的。数据增强是一种常用方法,通过从其他模型或噪声注入生成伪标签和伪数据实例,该模型可以利用这些额外数据进行有效的监督训练。然而,伪数据质量的变化和不同任务中数据类型的多样性对普遍适用的解决方案提出了挑战。监督训练性能较差(缺少 P3):这在微调 SL-PLM 时很典型,在这种情况下,计算资源有限或训练数据的数量不足以调整一个超大型模型。一个典型的解决方案是 prompt 学习。可以利用 hard prompt(即离散文本模板)或 soft prompt(即连续模板),以便在微调期间仅更新 hard prompt 词或 soft prompt 参数。这已被证明对于提高给定标记数据的 SL-PLM 的性能非常有效。但是,但这种方式对 prompt 的设计非常敏感,同时效果不如有监督学习的中等规模 PLM。三个关键阶段虽然目前 NLP 模型存在不可能三角,研究者认为它可以通过以下三个阶段来解决。阶段 1:PLM 的开发目标是实现三角中的一些期望属性,同时对其他缺失的属性进行改进。例如,具备 SOTA 监督学习能力的中等规模的模型可以提升其小样本学习性能;或者具备小样本学习能力的 SL-PLM 被压缩成具有更强监督学习性能的更小模型。阶段 2:开发在少数 NLP 任务之一(如 NER 或文本摘要)上实现所有三种期望属性的 PLM。为此,我们可以利用目标任务的独特属性,例如性能对训练数据规模的依赖更少、零 / 小样本和监督学习性能之间的差距更小等。阶段 3:在阶段 1 和阶段 2 进展的基础上,开发在一般 NLP 任务上实现所有三种期望属性的 PLM。潜在的方法包括使用更大的数据预训练中等规模的模型、开发更好的知识蒸馏、泛化数据增强方法等。一旦 PLM 模型在一般 NLP 任务上具备了不可能三角的所有三种属性,它将改变 NLP 研究和应用的整个局面,促进快速、高效和高质量的模型开发和部署。​责任编辑:张燕妮   来源: 机器之心
  • [新手课堂] 自然语言处理
    常见自然语言处理库:nltk、snownlp、TextBlob、Polyglot、jiebanltk:自然语言处理领域中最为重要的python工具包snownlp:国人开发,可以方便的处理中文文本内容TextBlob:可进行词性标注、名词性成分提取、情感分析、文本翻译Polyglot:多语言的文本处理jieba:用于切分中文语句段
  • [其他] NLP(自然语言处理)技术简介
    处理自然语言的关键是要让计算机“理解”自然语言,所以自然语言处理又叫做自然语言理解(NLU,NaturalLanguage Understanding),也称为计算语言学(Computational Linguistics。一方面它是语言信息处理的一个分支,另一方面它是人工智能(AI, Artificial Intelligence)的核心课题之一。分类及国内概况按照技术实现难度的不同,这类系统可以分成简单匹配式、模糊匹配式和段落理解式三种类型。简单匹配式辅导答疑系统主要通过简单的关键字匹配技术来实现对学生提出问题与答案库中相关应答条目的匹配,从而做到自动回答问题或进行相关辅导。模糊匹配式辅导答疑系统则在此基础上増加了同义词和反义词的匹配。这样,即使学生所提问题中按原来的关键字在答案库中找不到直接匹配的答案,但是假若与该关键字同义或反义的词能够匹配则仍可在答案库中找到相关的应答条目。段落理解式辅导答疑系统是最理想的、也是真正智能化的辅导答疑系统(简单匹配式和模糊匹配式,严格说只能称之为“自动辅导答疑系统”而非“智能辅导答疑系统”)。但是由于这种系统涉及自然语言的段落理解,对于汉语来说,这种理解涉及自动分词、词性分析、句法分析和语义分析等NLP领域的多种复杂技术,所以实现难度很大。迄今为止,在国内的网络教学中还没有一个实用化的、能真正实现汉语段落理解的智能辅导答疑系统。但是在我国有些大学的人工智能实验室或中文信息处理实验室中,已有少数研究人员正在研发这类系统的实验原型。相信在不久的将来,就会有这一类的实用性智能系统问世。这是优质网络课程的重要研究方向之一。现实应用领域机器翻译机器翻译因其效率高、成本低满足了全球各国多语言信息快速翻译的需求。机器翻译属于自然语言信息处理的一个分支,能够将一种自然语言自动生成另一种自然语言又无需人类帮助的计算机系统。目前,谷歌翻译、百度翻译、搜狗翻译等人工智能行业巨头推出的翻译平台逐渐凭借其翻译过程的高效性和准确性占据了翻译行业的主导地位。自动问答传统的搜索引擎技术已经不能满足人们越来越高的需求,而自动问答技术成为了解决这一问题的有效手段。自动问答是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务,在回答用户问题时,首先要正确理解用户所提出的问题,抽取其中关键的信息,在已有的语料库或者知识库中进行检索、匹配,将获取的答案反馈给用户。打击垃圾邮件当前,垃圾邮件过滤器已成为抵御垃圾邮件问题的第一道防线。不过,有许多人在使用电子邮件时遇到过这些问题:不需要的电子邮件仍然被接收,或者重要的电子邮件被过滤掉。事实上,判断一封邮件是否是垃圾邮件,首先用到的方法是“关键词过滤”,如果邮件存在常见的垃圾邮件关键词,就判定为垃圾邮件。但这种方法效果很不理想,一是正常邮件中也可能有这些关键词,非常容易误判,二是将关键词进行变形,就很容易规避关键词过滤。自然语言处理通过分析邮件中的文本内容,能够相对准确地判断邮件是否为垃圾邮件。目前,贝叶斯(Bayesian)垃圾邮件过滤是备受关注的技术之一,它通过学习大量的垃圾邮件和非垃圾邮件,收集邮件中的特征词生成垃圾词库和非垃圾词库,然后根据这些词库的统计频数计算邮件属于垃圾邮件的概率,以此来进行判定。文本情感分析情感分析作为一种常见的自然语言处理方法的应用,可以让我们能够从大量数据中识别和吸收相关信息,而且还可以理解更深层次的含义。比如,企业分析消费者对产品的反馈信息,或者检测在线评论中的差评信息等。信息提取金融市场中的许多重要决策正日益脱离人类的监督和控制。算法交易正变得越来越流行,这是一种完全由技术控制的金融投资形式。但是,这些财务决策中的许多都受到新闻的影响。因此,自然语言处理的一个主要任务是获取这些明文公告,并以一种可被纳入算法交易决策的格式提取相关信息。例如,公司之间合并的消息可能会对交易决策产生重大影响,将合并细节(包括参与者、收购价格)纳入到交易算法中,这或将带来数百万美元的利润影响。内容参考百度百科
  • [新手课堂] 自然语言处理
    常见自然语言处理库:nltk、snownlp、TextBlob、Polyglot、jiebanltk:自然语言处理领域中最为重要的python工具包snownlp:国人开发,可以方便的处理中文文本内容TextBlob:可进行词性标注、名词性成分提取、情感分析、文本翻译Polyglot:多语言的文本处理jieba:用于切分中文语句段
  • [技术干货] 不拆分单词也可以做NLP,哈工大最新模型在多项任务中打败BERT,还能直接训练中文
    众所周知,BERT在预训练时会对某些单词进行拆分 (术语叫做“WordPiece”)。比如把“loved”、“loving”和“loves”拆分成“lov”、“ed”、“ing”和”es”。目的是缩减词表、加快训练速度,但这样一来,在某些时候反而会阻碍模型的理解能力。比如把”lossless”分成”loss”和”less”的时候。现在,来自哈工大和腾讯AI Lab的研究人员,尝试利用不做单词拆分的词汇表开发了一个BERT风格的预训练模型——WordBERT。结果,这个WordBERT在完形填空测试和机器阅读理解方面的成绩相比BERT有了很大提高。在其他NLP任务,比如词性标注(POS-Tagging)、组块分析(Chunking)和命名实体识别(NER)中,WordBERT的表现也都优于BERT。由于不用分词,这个WordBERT还可以直接进行中文训练。更值得一提的是,它在性能提升的同时,推理速度并没有变慢。可谓一举多得。NO WordPieces与BERT类似,WordBERT包含两个组件:词向量(word embedding)和Transformer层。和以前的模型一样,WordBERT采用多层双向Transformer来学习语境表示(contextualized representation)。word embedding则是用来获得单词向量表示的参数矩阵,与把单词分成WordPiece的BERT相比,WordBERT的词汇由完整的单词组成。他们用自然语言处理软件包Spacy处理数据,生成了两个词汇表,一个规模为500K,一个为1M。词汇表中还被单独添加了5个特殊单词:[PAD]、[UNK]、 [CLS]、[SEP]和[MASK]。通过不同的词汇表规模、初始化配置和不同语言,最后研究人员一共训练出四个版本的WordBERT:WordBERT-500K、WordBERT-1M、WordBERT-Glove和WordBERT-ZH。它们的配置如上,嵌入参数都是随机初始化的,嵌入维数和基准BERT保持一致。其中WordBERT-Glove用的词汇表是现成的Glove vocabulary,里面包含约190万个未编码的单词,该模型由相应的单词向量(word vectors)在WordBERT之上初始化而来。WordBERT-ZH则是用中文词汇训练出来的WordBERT,它也保持了768的词嵌入维数。性能与速度兼具在测试环节中,完形填空的测试数据集来自CLOTH,它由中学教师设计,通常用来对中国初高中学生进行入学考试。其中既有只需在当前句子中进行推理的简单题,也有需要在全文范围内进行推理的难题。WordBERT-1M获得了最佳成绩,并接近人类水平。它在高中题比BERT高了3.18分,初中题高了2.59分,这说明WordBERT在复杂任务中具有更高的理解和推理能力。在词性标注、组块分析和命名实体识别(NER)等分类任务中,WordBERT的成绩如下:相比来看,它在NER任务上的优势更明显一些(后两列)。研究人员推测,这可能是WordBERT在学习低频词的表征方面有优势,因为命名实体(named entities)往往就是一些不常见的稀有词。对于“中文版”WordBERT-ZH,研究人员在CLUE benchmark上的各种任务中测试其性能。除了BERT,对比模型还包括WoBERT和MarkBERT,这也是两个基于BERT预训练的中文模型。结果,WordBERT-ZH在四项任务中都打败了所有其他对比模型,在全部五项任务上的表现都优于基线BERT,并在TNEWS(分类)、OCNLI(推理)和CSL(关键字识别)任务上取得了3分以上的差距。这说明,基于词的模型对中文也是非常有效的。最后,实验还发现:性能不差的WordBERT,在不同任务上的推理速度也并未“落于下风”。
  • [其他] NLP目标与其解决的5个基本问题
    NLP是什么?交叉学科: Computer Science,Artificial Intelligence and Computational Linguistics目标:解决计算机和人类((自然)语言的交互问题,尤其是自动处理大规模自然语言语料难点:语言本身复杂、语境相关、抽象概念联想、软硬件技术限制,等等.NLP解决的5个基本问题(摘自李航老师的总结)分类: assigning a label to a string匹配:matching two strings翻译:transforming one string to another·结构化预测:mapping string to structure马氏决策过程:deciding next state given previous state and action自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括:1.句法语义分析:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。2.信息抽取:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽取、因果关系抽取等关键技术。3.文本挖掘(或者文本数据挖掘):包括文本聚类、分类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。4.机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。根据输入媒介不同,可以细分为文本翻译、语音翻译、手语翻译、图形翻译等。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。5.信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可利用1、2、3的技术来建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。6.问答系统: 对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。7.对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。同时,为了体现个性化,要开发用户画像以及基于用户画像的个性化回复。摘自  国际计算语言学协会(ACL)候任主席、NLP 领域资深研究者、MSRA副院长周明
  • [其他] NLP技术难点所在
    内容的有效界定日常生活中句子间的词汇通常是不会孤立存在的,需要将话语中的所有词语进行相互关联才能够表达出相应的含义,一旦形成特定的句子,词语间就会形成相应的界定关系。如果缺少有效的界定,内容就会变得模棱两可,无法进行有效的理解。例如他背着母亲和姐姐悄悄的出去玩了。这句话中如果不对介词“和”作出界定,就很容易形成母亲和姐姐两个人不知道他出去玩,或者是母亲不知道他和姐姐出去玩。消歧和模糊性词语和句子在不同情况下的运用往往具备多个含义,很容易产生模糊的概念或者是不同的想法,例如高山流水这个词具备多重含义,既可以表示自然环境,也能表达两者间的关系,甚至是形容乐曲的美妙,所以自然语言处理需要根据前后的内容进行界定,从中消除歧义和模糊性,表达出真正的意义。有瑕疵的或不规范的输入例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。语言行为与计划句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。
  • [新手课堂] 自然语言处理
    常见自然语言处理库:nltk、snownlp、TextBlob、Polyglot、jiebanltk:自然语言处理领域中最为重要的python工具包snownlp:国人开发,可以方便的处理中文文本内容TextBlob:可进行词性标注、名词性成分提取、情感分析、文本翻译Polyglot:多语言的文本处理jieba:用于切分中文语句段
  • [技术干货] MindSpore:自然语言处理(NLP)—分词技术
    1. 摘要本次我们将开始新的分享系列——自然语言处理(NLP),NLP可以被应用于很多领域:机器翻译、情感分析、智能问答、文本分类等等。本次我们将分享中文自然语言处理的一个重要技术:中文分词技术。在通常的语言理解中,词是最小的能够独立活动的语言成分。只有将词确定下来,中文才能够向英文那样过渡到短语划分以及主题分析,以至自然语言处理。2. 中文分词技术由于汉语结构与欧体系语种差异较大,对词的构成边界方面很难进行定位。在英文中,单词本身就是词的表示,一篇英文文章就是单词加空格来表示。在汉语中,词以字为单位,但一篇汉语文章的语义却仍以词来划分。因此,在处理中文文档时,需要进行分词处理,将文档转换成词来表示。这个切词过程就是中文分词。通过计算机自动识别出句子的词,在词间加入边界标识符,分隔出各个词汇,主要的难点在于分词歧义。中文分词主要有三个流派:规则分词、统计分词、混合分词。3. 规则分词规则分词:基于规则的分词是一种机械分词方法,主要是通过维护词典,将语句中的每一个字符串与词表中的词逐一匹配,匹配到就切分,否则不予切分。按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法和双向最大匹配法。正向最大匹配法思想:假设分词词典中的最长词有i个字符,那么用被处理文档的当前字符串的前i个字符作为匹配字段,查找字典。若字典中存在这样一个i长度字词,则匹配成功,匹配字段则被作为一个词切分出来。如果词典中找不到这样的一个i长度字词,则匹配失败。此时便将匹配字段中的最后一个字去掉,对剩余的字符串重新匹配处理。根据这样的规则处理下去,直到匹配成功,即切分出一个词或剩余字符串的长度为0为止。这样就完成一轮匹配,然后取下一个i长度字符串进行匹配处理,直到文档被扫描完为止。逆向最大匹配法思想:基本原理与正向最大匹配法相同,不同的是分词切分的方向与正向最大匹配法相反。相应的,它使用的分词词典是逆序词典,其中的每个词条都将按逆序方式存放。在实际的处理时,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆序文档用正向最大匹配法处理即可。由于汉语中偏正结构较多,若从后向前匹配,可以适当提高精准度。所以,逆向最大匹配法比正向最大匹配法的误差要小。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配法的错误率为1/245。双向最大匹配法思想:将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。基于规则的分词,一般都比较简单高效,但是词典的维护是一个很庞大的工程。而且网络新词频频出现,很难通过词典覆盖到所以词。4. 统计分词统计分词:主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。因此我们就可以利用字与字相邻出现的频率来反映成词的可靠度,统计语料中相邻共现的各个字的组合的频率,当组合频率高于某一个临界值时,我们可以认为这个字的组合可能会构成一个词语。基于统计的分词,通常需要两个步骤操作:(1)建立统计语言模型;(2)对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。这里就要用到了统计学习算法。语言模型:用概率论的专业术语描述语言模型就是,为长度为m的字符串确定其概率分布P(w1,w2, …,wm),其中w1到wm依次表示文本中的每个词语。一般采用链式法则计算其概率值。P(w1,w2, …,wm)=P(w1)P(w2|w1)P(w3|w1,w2)...P(wi|w1,w2, …,wi-1) …P(wm|w1,w2, …,wm-1)当文本过长时,公式右部从第三项起的每一项计算难度都很大。为了解决该问题,提出了n元模型用来降低该计算难度。所谓的n元模型就是在估算条件概率时,忽略距离大于等于n的上文词的影响,那么此时,计算公式可以简化为P(wi|w1,w2, …,wi-1) ≈P(wi|wi-(n-1), …,wi-1)当n=1时称为一元模型,此时整个句子的概率可以表示为P(w1,w2,…,wm)=P(w1)P(w2)…P(wm)。在一元模型中,整个句子的概率等于各个词语概率的乘积。也可以看作是各个词之间是相互独立的,这无疑是完全损失了句子中的顺序信息。所以一元模型的效果并不理想。 由上面表达式可见,当n越大时,模型包含的词顺序信息越丰富,但同时计算量也随之增大。此时长度越长的文本序列出现的次数也会减少。根据公式估计n元条件概率时,就会出现分子分母为零的情况。因此,在一般的n元模型中需要配合相应的平滑算法解决该问题,例如拉普拉斯平滑算法。HMM模型:隐马尔可夫模型(HMM)是将分词作为字在字串中的序列标注任务来实现的。基本思想是,每一个字在构造一个特定词语时都占据着一个确定的构词位置(简称词位),现规定每个字最多只有4个构词位置,即B(词首)、M(词中)、E(词尾)、S(单独成词),那么对常见的一句话,我们展示效果为。原句:留给中国足球队的时间已经不多了!切词后:留给/中国/足球队/的/时间/已经/不多了!逐字标注后:留/B 给/E 中/B 国/E 足/B 球/M 队/E 的/S 时/B 间/E 已/B 经/E 不/B 多/M 了/M !/E使用数学抽象表示:用λ=λ1λ2…λn代表输入的句子,n为句子的长度λi表示字,o=o1o2…on代表输出的标签,这样最理想的输出可以表示为:Max=maxP(o1o2…on|λ1λ2…λn)在分词的任务中,o即为B、M、E、S这4种标记,λ则表示文本中“足”“球”“队”等单独的字,也包括标点符号等非中文字符。需要注意的是,P(o|λ)是关于2n个变量的条件概率,且n不固定。因此,几乎是无法对P(o|λ)进行精确计算的。在这里要引入观测独立性假设,即每个字的输出仅仅与当前的字有关,于是就可以得到下面表达式:P(o1o2…on|λ1λ2…λn)=P(o1|λ1)P(o2|λ2)…P(on|λn)通过了观测独立性假设后,目标问题得到了极大的简化,P(ok|λk)在计算上容易了很多。但是我们会发现这种方法完全没有考虑上下文环境,所以这是非常不合理的。HMM就是用来解决上述问题的。在上面公式中,我们期望求解的是P(o|λ),那么通过贝叶斯公式分析可以得到:P(o|λ)=P(o,λ)/P(λ)=P(λ|o)P(o)/P(λ)λ为给定的输入,因此P(λ)计算为常数,因此最大化P(o,λ)等价于最大化P(λ|o)P(o)。此时对P(λ|o)P(o)作马尔可夫假设,可以得到:P(λ|o)=P(λ1|o1)P(λ2|o2)…P(λn|on)同时,对P(o)有:P(o)=P(o1)P(o2|o1)P(o3|o1,o2)…P(on|o1,o2,…,on-1)这是也会面临计算困难的问题,从公式中的第三项开始,计算难度就非常大,这里HMM做了另一个假设——齐次马尔可夫假设:每次输出仅与上一个的输出相关,那么公式可以简化为:P(o)=P(o1)P(o2|o1)P(o3|o2)…P(on|on-1)这时,对于P(λ|o)P(o)就可以表示为:P(λ|o)P(o)≈P(λ1|o1)P(o2|o1)P(λ2|o2)P(o3|o2)…P(λn|on)P(on|on-1)在HMM中,将P(λk|ok)称为发射概率,P(ok|ok-1)称为转移概率。并且可以通过设置P(ok|ok-1)=0,排除上述中不合理的情况。在我们列出的马尔可夫式子中就是一个二元语言模型,在实际的分词中也多采用二元模型。HMM求解MaxP(λ|o)P(o)的常用方法是Veterbi算法。算法思想是:如果最终的最优路径经过某个oi,那么从初始节点到oi-1点的路径也必然是最优路径。因为每个节点oi只会影响前后两个P(oi-1|oi)和P(oi|oi+1)。和机械分词相比,统计分词方法不需要维护词典,还能较好的处理歧义和一些未登录词,是目前很主流的方法,但分词的效果很依赖训练语料的质量,并且计算量高于机械分词很多。5. 混合分词在目前常用的分词方法中,在具体的分词任务中,效果上并未有很明显的差距。在实际的工程应用中,首先是先基于一种分词算法使用,然后将其他分词方法辅助使用。通常的使用方式是先基于机械分词方法进行分词,然后再使用统计分词方法辅助对准未登录词和歧义词,这样混合使用会有比单一使用有更好的效果。6. 总结本次分享了中文自然语言处理项目分词的相关技术,基于词典匹配下的规则分词:正向最大匹配法、逆向最大匹配法以及双向最大匹配法。以及为了消除词语歧义和为登录词的基于统计原理的的分词技术:HMM模型。并介绍了通常实战分词时使用的混合分词策略。————————————————原文链接:https://blog.csdn.net/xi_xiyu/article/details/122682173
  • [技术干货] GPT-3胡言乱语怎么办?OpenAI:我们重新调教了一下,新版本更「听话」
    虽然 1.3B 的 InstructGPT 在参数量上还不及 GPT-3 的百分之一,但它的表现可比 GPT-3 讨人喜欢多了。给定一些示例作为输入,GPT-3 等大型语言模型可以根据这些「提示(prompt)」去完成一系列自然语言处理任务。然而,它们有时会表现出一些出人意料的行为,如编造事实、生成有偏见或有害的文本,或者根本不遵循用户的指示。比如在下面这个例子中,用户给出的指示是:「用几句话向一个 6 岁的孩子解释一下登月」,GPT-3 的的输出显然是不着边际。 这是因为,GPT-3 被训练成基于互联网文本的大数据集预测下一个单词,而不是安全地执行用户想要它执行的语言任务。换句话说,这些模型的输出与用户的意图并不一致。对于在数百个应用中部署和使用的语言模型来说,避免这些意想不到的行为尤其重要。 通过训练语言模型按照用户的意图行动,OpenAI 在调整语言模型方面取得了新进展。这里的「意图」既有明确的(如遵循指令),也有隐含的(如尊重事实、不带有偏见或恶意等),他们希望改进后的模型是有用的(帮助用户解决他们的问题)、诚实的(不编造信息或误导用户)、无害的(不对人或环境造成身体、心理或社会伤害)。 为了达成这一目标,他们使用了利用人类反馈的强化学习方法(RLHF)对 GPT-3 进行微调,使其遵循广泛的书面指令。这项技术利用人类的偏好作为奖励信号来微调 GPT-3。这一过程让 GPT-3 的行为与特定人群(主要是 OpenAI 的标注者和研究人员)的既定偏好保持一致,而不是更广泛的「人类价值」概念。他们将得到的模型称为 InstructGPT。 在面对同一指令(用几句话向一个 6 岁的孩子解释一下登月)时,InstructGPT 给出了如下的输出结果: 研究者主要通过让标注者对测试集上的模型输出质量进行评分来评估模型,测试集包含来自「held-out」标注者的 prompt,还在一系列公共的 NLP 数据集上进行了自动评估。他们训练了三种尺寸的模型(1.3B、6B 和 175B 参数),所有的模型都使用 GPT-3 架构。其主要发现如下: 1、标注者明显更喜欢 InstructGPT 的输出,而不是 GPT-3。在测试集中,来自 1.3B InstructGPT 模型的输出优于来自 175B GPT-3 的输出,尽管前者的参数量还不到后者的 1/100。 2、与 GPT-3 相比,InstructGPT 输出的真实性有所提高。 3、与 GPT-3 相比,InstructGPT 输出的有害性略有改善,但偏见程度并没有。 4、可以通过修改 RLHF 微调过程来最小化模型在公共 NLP 数据集上的性能倒退。 5、模型可以泛化至「held-out」标注者的偏好,这部分标注者没有参与任何训练数据的生产。 6、公共的 NLP 数据集并不能反映 InstructGPT 语言模型的实际效果。 7、InstructGPT 模型显示出了泛化至 RLHF 微调分布之外的指令的潜力。 8、InstructGPT 仍然会犯一些简单的错误。 所以总的来看,通过人类的反馈进行微调是一个很有前途的方向,可以使语言模型与人类的意图保持一致,但在提高它们的安全性和可靠性方面还有很多工作要做。 方法 为了训练 InstructGPT 模型,研究者采用了人类反馈强化学习方法 ,即使用人类偏好作为奖励信号来微调模型。这一点很重要,因为要解决的安全和一致性问题是复杂的、主观的,并且不能完全被简单的自动度量捕获。 研究者首先用提交到 OpenAI API 的提示(prompt)做了一个人工编写的演示数据集,然后利用这个数据集来训练监督学习基线。接下来,他们又在一个更大的 API 提示集上收集两个模型输出之间的人工标注的对比数据集。然后,他们在这个数据集上训练了一个奖励模型(RM)来预测标注者更偏好的输出。最后,他们使用该 RM 作为奖励函数,并使用 PPO 算法微调他们的 GPT-3 策略以最大化该奖励。 这个过程可以这么理解:它「解锁」了 GPT-3 已经拥有的能力,但仅仅通过 prompt 工程很难激发出这些能力。这是因为,相对于在预训练中学到的能力,训练程序教授模型新能力的水准是有限的,因为它使用的计算量和数据相对于模型预训练只有不到 2%。 这种方法的一个局限性是,它会引入一种叫做「一致性税(alignment tax)」的东西,即如果仅仅让模型与用户任务达成一致,可能会使其在另外一些学术 NLP 任务上的表现更差。这是不可取的,因为如果文章中提到的一致性技术使模型在人们关注的任务上变得表现更糟,那么它们在实践中就不太可能被采用。 研究者发现了一个简单的算法调整方式,能够最大限度上减少这种「一致性税」: 在 RL 微调期间,研究者混合了一小部分用于训练 GPT-3 的原始数据,并使用正常的对数似然最大化在这些数据上进行训练。这大致保持了模型在安全性和人类偏好方面的表现,同时降低了模型在学术 NLP 任务上的性能损失,在有些情况下甚至超过了 GPT-3 基线。 结果 研究者首先通过让标注者将 InstructGPT 的输出与 GPT-3 的输出进行比较,来评估 InstructGPT 遵循用户指令的效果。结果发现,InstructGPT 模型显然更受欢迎。当向 GPT-3 的提示中添加前置信息以使其进入「指令遵循模式」时,这种情况仍然存在:对提交到 API 上 InstructGPT 模型的各种型号 (X 轴) 的模型输出按 1-7 比例 (Y 轴) 进行质量评级。在只有少量提示和没有提示以及模型微调与监督式学习的情况下,labeler 给出的 InstructGPT 输出得分远高于 GPT-3 的输出得分。对于提交到 API 上的 GPT-3 模型的提示,可以找到类似的结果。 为了衡量模型的安全性,研究者使用了一套公开可用数据集上的现有指标。与 GPT-3 相比,InstructGPT 产生的模仿性谎言更少 (TruthfulQA) ,而且毒性更小(RealToxicityPrompts)。研究者还对 API 提示分布进行了人工评估,发现 InstructGPT 编造事实(hallucinates) 的频率较低,并生成了更恰当的输出。评估 InstructGPT 的结果。图中是不同规模模型的结果组合。Toxicity、Hallucination 两个指标上,分数越低越好;TruthfulQA、Appropriateness 两个指标上,分数越高越好。 最后,研究者发现在用户分布中,InstructGPT 的输出优于 FLAN 和 T0 的输出。这表明,用于训练 FLAN 和 T0 的数据大多数是学术性 NLP 任务的,并不能完全代表部署语言模型在实践中的使用情况。 在更广泛的群体中的泛化效果 OpenAI 采取的流程使得该模型表现与标注者的偏好保持一致,标注者直接生成用于训练模型的数据,研究者则通过书面指示、具体例子的直接反馈以及非正式对话为标注者提供指导。此外,模型还受到用户和 API 策略中隐含的偏好的影响。研究者选择了那些在筛选测试中表现良好的标注者,他们在识别和回应敏感的提示方面表现出色。然而,这些对数据产生影响的不同来源并不能保证模型与任何更广泛群体的偏好保持一致。 研究者借助了两个实验来探究这个问题。首先,使用没有提供任何训练数据的 held-out 标注者来评估 GPT-3 和 InstructGPT,并发现这些标注者更喜欢 InstructGPT 模型的输出,其比率与训练数据标注者大致相同。然后,研究者使用来自一部分标注者的数据训练奖励模型,发现它们能很好地预测不同标注者子集的偏好。这表明该模型并没有过拟合训练数据标注者的偏好。然而,研究者还需要做更多的工作来研究这些模型在更广泛的用户群体中的表现,以及在人们对相同输入产生不同预期时模型会如何表现。 局限性 尽管已经取得了重大进展,但当前的 InstructGPT 模型还远远算不上与用户意图完全一致或对用户来说完全安全:它们仍然会产生有害、有偏见的输出,或者编造事实,并在没有明确警示的情况下产生色情、暴力内容。但是,机器学习系统的安全性不仅取决于底层模型的行为,还取决于这些模型的部署方式。OpenAI 表示,为了支持 OpenAI API 的安全性,他们将继续在应用程序上线之前对其进行审查,并提供内容过滤器来检测不安全的输出,监控其滥用情况。 训练模型遵循用户指示还有一个副作用:如果用户指示它们产生不安全的输出,它们可能更容易被误用。因此,研究者要教模型拒绝某些指令。如何可靠地做到这一点将是一个重要的开放性研究问题。 此外,在许多情况下,与标注者的平均偏好保持一致是不可取的。例如,当生成一定程度上影响了少数群体的文本时,该群体的偏好应该得到更多的权重。目前,InstructGPT 接受的是用英语进行指导的训练,因此,它更偏向于讲英语的人的文化价值观。研究者也在逐渐了解标注者偏好之间的差异和分歧,这样就可以根据更具体的人群的价值观来设置模型。一般来说,根据特定人类的价值观调整模型输出会面临社会影响方面的抉择,最终必须建立负责任的、包容性的处理程序来做出这些决定。 上述研究结果表明,这些技术在改善通用 AI 系统与人类意图的一致性方面是非常有效的。然而,这仅仅是个开始。研究者们还将继续推进这些技术,以改进当前和未来的模型,使之朝着对人类更安全、更有用的方向发展。