蓝牙nlp怎么解

NLP人性解码:重复旧的做法,只会得到旧的结果NLP人性解码:重复旧的做法,只会得到旧的结果刺探奥秘百家号小编持续为你带来心理学、人性、NLP类原创文章,助你轻而易举的认知自己、读懂他人、了解世界,请直接点击订阅按钮,以免错过精彩。NLP人性解码:重复旧的做法,只会得到旧的结果经典故事:一位主持人现场采访一位某贫困地区的放羊娃,以下是他们的对话:主持人问:孩子你为什么放羊呀?放羊娃回答:卖羊赚钱!主持人再问:赚钱来做什么呀?放羊娃回答:给我娶媳妇!主持人继续问:娶媳妇做什么?放羊娃回答:为了生娃!主持人再继续问:生娃做什么?放羊娃回答:替我放羊!NLP解码:做法不同,结果才会有所不同。上面的故事里的孩子乍看固然可笑,仔细去观察,哪里不是如此呢?《圣经》上说,阳光之下无有新鲜事,要想改变自己的命运,就要觉察那些我们已经习以为常的事情。如果你做的事没有效果,改变你的做法。任何新的做法都会比旧的做法多一分成功机会。想明天比昨天更好,必须用与昨天不同的做法。改变自己,别人才有可能改变。世界上的所有事物从来都是处于不停的改变之中,不肯改变的便面临淘汰或失败的威胁。只有不断地改变做法,才能保证与其他事物的关系有理想状态。“做法”是规条,目的是取得价值,实现信念。维持最有效果的规条,就是灵活地不断修正做法,这样才能保证取得价值,实现信念。亲爱的朋友,小编长期免费发文到:刺探奥秘持续不断的为你带来心理学类、人性类、NLP类、人物分析类原创文章,助你轻而易举的认知自己、读懂他人、了解世界,请直接订阅账号,以免错过精彩;本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。刺探奥秘百家号最近更新:简介:禹鸿飞持续带来人性、心理学、
NLP文章作者最新文章相关文章八大步骤,用机器学习解决90﹪的NLP问题
我的图书馆
八大步骤,用机器学习解决90﹪的NLP问题
在现实生活中,文本信息无处不在。理解并学习文本数据的内在涵义一直是一个非常活跃的研究课题,这就是自然语言处理。对于企业而言,利用文本数据可以对新产品的功能进行验证、改进并扩展。在这样的实际应用中,有三大类自然语言处理任务最为常见:识别不同的用户/客户群(如预测客户流失量、生命周期价值、产品偏好)准确地检测和提取不同类别的反馈信息(如正面和负面的评论/意见、衣服尺寸等特定属性的提及频率)根据用户的意图对文本信息进行分类(如请求基本帮助、紧急问题)尽管自然语言处理领域有很多在线的论文和教程资源,但很少有一些比较高效的指引和提示,以方便我们快速上手并解决这里的问题。这正是我们整理出本文的目的。在本文中,我们将分八大步骤来介绍如何用机器学习处理文本数据。我们将从最简单的方法开始,逐一讲解,然后分析更具体的方案细节,如特征工程、词向量和深度学习。你可以把本文看作是标准方法的高度概括。读完本文后,你将学会:如何收集,准备和检查数据如何建立简单的模型,有必要的话,应构建深度学习模型如何解释并理解你的模型,以确保模型学习的是特征信息而不是噪音此外,本文还附有一个交互式笔记,让你可以随意运行本文中的代码,来演示和应用其中的技术,特别是一些比较抽象的概念:代码链接&https://github.com/hundredblocks/concrete_NLP_tutorial/blob/master/NLP_notebook.ipynb步骤1:收集数据数据样本每个机器学习问题都始于数据,如一系列的电子邮件、帖子或推文。文本信息的常见来源包括:产品评论(在亚马逊、Yelp和各种应用商店)用户生成的内容(推文、Facebook帖子、StackOverflow问答)用户疑难解答(客户请求、客服支持记录、聊天记录)“社交媒体灾难”数据集对于这篇文章,我们将使用一个由CrowdFlower所提供的“社交媒体灾难”的数据集(链接:https://www.crowdflower.com/data-for-everyone/),其中:志愿者以“燃烧(ablaze)”、“隔离(quarantine)”、“混乱(pandemonium)”等作为关键词查找了超过1万条推文,并把推文内容是否跟灾难性事件(区分于这些词所指的笑话、电影评论或非灾难性话题)有关标记出来。由此,我们就可以判断哪些推文内容是在说灾难性事件,哪些是说像电影这样的不相关话题。为什么呢?因为存在一些情况,可能要让执法部门优先获知那些需要及时处理的紧急事件,而非关于Adam Sandler最新电影的海量评论。而这两类内容使用完全相同的关键词都能搜到,我们不得不使用更微妙的特征来区分它们,这是很大的挑战。本文接下来的内容,我们将含灾难性内容的推文称为“灾难性推文”,其他推文则被视为“不相关推文”。数据标签在样本数据中,每条推文属于哪个类别都已被标记出来。正如Richard Socher在推文中所说的,找到并标记足够的数据来训练有监督模型,往往是一条更快、更简单、成本更低的路径,远比难于优化的无监督方法有效。Richard Socher的观点步骤2:数据清洗机器学习的第一条原则是:“数据有多好,模型的性能才会有多好”。知道何时该调整模型何时要处理数据,这一能力是数据科学家的核心技能之一。一条良好的经验就是先查看数据进而把它清洗好。一个干净的数据集,可以让机器学习模型学到有意义的特征,而非过拟合在不想关的噪音信息上。下面列出了一些数据清洗的方法,你可以自己尝试(更多细节见代码https://github.com/hundredblocks/concrete_NLP_tutorial/blob/master/NLP_notebook.ipynb):删除所有不相关的字符,如任何非字母或数字的字符串。将文本信息分离成单独的文字,并逐字进行标记。移除一些不相关的字词串,比如Twitter的“@”标识、网址链接等。将所有字幕转换为小写,避免重复识别“hello”,“Hello”和“HELLO”等同类词汇。考虑合并拼写错误或替代拼写的单词,如“cool”/“kewl”/“cooool”。考虑将不同变体的词形还原回来,如将“a”、“is”和“are”等单词还原成“be”的这种通用形式。按照上述步骤处理并检查数据后,我们就可以使用这些干净的标注数据来训练机器学习模型了!步骤3:找到一种好的数据表示机器学习模型通常以数值作为输入。例如,处理图像的模型是以每个颜色通道中像素值矩阵作为输入的。一副笑脸图可以被表示成这样的数字矩阵我们这里的数据集是句子列表,为了让模型可以从数据中学到句子的特征模式,我们首先要找到一种方法来把它转换成模型能理解的形式,即数字列表。独热编码(词袋)通常,计算机文本数据的表示是将每个字符编码成一个独特的数字(例如ASCII码表)。如果把这么简单的表示输入给分类器,它就只能根据这些数据从头来学习单词的结构,这对大部分数据集来说是不现实的。这就要求我们采用更高级的数据表示方法。例如,我们可以为数据集的所有词汇建立一个特定的词汇表,令每一个词汇对应一个唯一的索引值。这样,每句话均可表示为一个列表,列表的长度由词汇表中单词的数量来决定。列表的每处索引值,标识一个给定单词在句中出现的次数。这就是我们常说的词袋模型(bag-of-words),因为它完全无视单词在句中的先后次序。如下图所示:将句子表示为词袋模型(bag-of-words):左边是句子,右边是对应的表示。向量中的每个索引都代表一个特定的词。词嵌入模型的可视化在“社交媒体灾难”样本中,我们有大约20000个的单词,这意味着每个句子都会被表示成一个长度为20000的向量。该向量的大部分元素都是0,因为相对于完整的词汇表,每个句子都只是一个非常小的子集。为了进一步了解词嵌入模型能否捕获到与问题相关的信息(即推文内容是否与灾难有关),我们可以将其可视化并检查不同类别的数据是否能很好地分离。由于词汇表的量通常都非常大,在20000个维度上显示数据不现实,因此像PCA(主成分分析)这样能把数据降维到两个维度的技术就很有帮助了。绘图如下:词袋嵌入模型的可视化结果结果表明,这两类数据的分离效果不是很好。这可能是由于我们所嵌入的某一个特征,或仅仅是因为我所降低的特征维度。为了验证词袋模型(bag-of-words)所学到的特征是否对分类有用,我们可以用它们来训练一个分类器。步骤4:模型分类刚接触机器学习问题时,我们最好从能解决问题的最简单工具上手。每每涉及到数据的分类,Logistic回归都会是很好的选择。因为它的通用性与可解释性都很好,训练过程也非常简单,结果极易解释,很容易就能提取出模型中最重要的系数。我们将数据分成训练集和测试集,训练集用于生成模型,测试集用于检查模型在未知数据上的泛化情况。训练完成时,我们得出75.4%的分类准确度。还不算太差!而判断“不相关内容”时,准确度只有57%。尽管如此,75%的识别精度也足以满足我们的需求。下一步,在部署前,我们要做尽可能全面的可视化分析,并彻底理解这个模型。步骤5:模型检查混淆矩阵理解模型的第一步是要知道模型错分的数据类型,以及最不应该出现的错误类别。在我们的例子中,假阳性结果是指将不相关推文错分为灾难性推文,而假阴性结果类则将灾难性推文归类为不相关推文。如果要优先处理潜在的灾难性事件,那我们要降低假阴性结果。而如果资源比较受限,我们就需要优先降低假阳性结果,以减少误报。使用混淆矩阵可以很好地可视化这里的信息,并将模型预测结果与数据的真实标签进行比较。理想情况下,混淆矩阵是一条从左上角到右下角的对角线(如果我们模型的预测结果能与真实标签完美匹配的话)。混淆矩阵(绿色部分所占比例较高,蓝色部分的比例较低)相比假阳性结果,我们的分类器产生了更多的假阴性结果。换句话说,模型中最常见的错误是将灾难性推文错误归类为不相关推文。如果假阳性结果的执法成本很高的话,那么我们分类器的这种偏差就是良性的。模型的可解释性为了验证模型并解释它的预测结果,我们需要明确模型用以进行判断的那些词汇。如果我们的数据有偏差,而分类器在样本数据中却能做出准确预测,那这样的模型就无法在现实世界中很好地推广。在这里,我们可以用图表来表示灾难性推文与不相关推文两类预测中最重要的词汇。由于我们可以对模型的预测系数进行提取和排序,用词袋模型(bag-of-words)和Logistic回归模型很容易就能计算出单词的重要性。词袋模型(bag-of-words):单词的重要性我们的分类器能够正确识别出一些模式(如广岛、大屠杀等),但在一些毫无意义的词汇(如heyoo、x1392等)上还是出现了过拟合。词袋模型(bag-of-words)仅能处理庞大词汇表内的不同词汇,并对所有的词汇分配相同的权重。然而,其中一些词汇出现得非常频繁,但却只是预测结果的噪音数据。接下来,我们将试着找到一种能够表示词汇在句子中出现频率的方法,尽量让模型从数据中获取更多的信号。步骤6:词汇结构的统计TF-IDF嵌入模型为了让模型专注于学习更有意义的词汇,我们可以在词袋模型上面使用TF-IDF评分(术语频率,逆文档频率)。TF-IDF通过词汇在数据集中的稀有程度来评估它的重要性,适度削弱出现过于频繁的单词。下图是TF-IDF嵌入模型的PCA映射:可视化TF-IDF嵌入模型从中可以看出,两种颜色之间有了更清晰的区分,使这两类数据更易于被分类器分开。在新模型上训练Logistic回归,我们得到了76.2%的准确度,说明TF-IDF确实有助于提高识别性能。尽管只是非常微小的改进,但我们的模型能否就此学到更重要的词汇呢?如果能得到更好的结果,同时还能避免模型在无关词汇上的过拟合,那TF-IDF嵌入模型就可以被认为是真正的“升级版”模型。TF-IDF嵌入模型:单词的重要性可以看到,新模型学到的词汇看起来相关度更高!尽管测试集的指标只是略有增加,但是我们对模型的识别性能更有把握,因此部署新模型的交互系统会让用户体验更为舒适。步骤7:语义信息的利用Word2VecTF-IDF嵌入模型能够学习到信号更高频的词汇。然而,如果部署该模型后,我们很可能会遇到一些训练集中从未出现过的词汇。先前的模型均无法正确分类这样的新数据,即便其中的词汇与训练集非常相似。要解决这个问题,我们就要捕捉词汇的语义,这就意味着模型需要理解“好”与“积极”在语义上的距离要比“杏”和“大陆”更接近。这里的工具就是Word2Vec。使用预训练的嵌入模型Word2Vec是一种为单词查找连续嵌入的技术。通过阅读大量的文字,它能够学习并记忆那些倾向于在相似语境中出现的词汇。经过足够的数据训练之后,它会为词汇表中的每个单词都生成一个300维的向量,用以记录语义相近的词汇。Word2Vec作者在一个非常大的语料库上预训练并开源了该模型。利用这一语料库,我们可以将一些语义知识纳入到我们的模型内。预训练好的词向量可以在本文的GitHub代码库中找到。GitHub地址:https://github.com/hundredblocks/concrete_NLP_tutorial句子分级表示让分类器快速得到句子嵌入的方法,是先将句中所有词汇Word2Vec得分的平均化。这与此前词袋模型的做法类似,但这里我们在保留语义信息的同时只丢弃句法。Word2vec模型的句子嵌入利用前面的可视化技术对新模型绘图,结果如下:Word2Vc嵌入模型的可视化结果在这里,两组颜色的分离程度更大一些,这就意味着Word2Vec能够帮助分类器更好地分离这两种类别。再一次使用Logistic回归,得到77.7%的准确率,是我们迄今最好的结果!复杂性/可解释性权衡取舍与先前的模型不同,新模型无法将每个单词都表示成一维向量,因此很难看出哪些词汇与我们的分类结果相关度最高。尽管我们仍可使用Logistic回归的系数,但它们仅与嵌入的300个维度相关,而与词汇索引值并不相关。模型准确率确实提高了,但完全做不了可解释性分析就有点得不偿失了。不过,对于更复杂的模型,我们可以利用LIME这样的“黑盒解释器”来稍微解释一下分类器具体是如何工作的。LIMELIME是Github上的一个开源软件包,它允许用户通过观察输入的扰动(比如在我们的例子中,从句中移除单词)来分析一个特定分类器的预测结果是如何变化的。从下图来看它对我们数据集中几个句子的解释:正确分类的灾难性词汇被归类为“相关”这个词对分类的影响似乎不太明显不过,我们没有时间去逐一探索数据集中的数千个样本。我们要做的是在代表性的测试样本上运行LIME,以此来分析哪些词汇对于分类预测的影响更大。这样,我们就可以像前面一样获取到单词的重要性分数,以验证模型的预测结果。Word2Vec:单词的重要性模型能够提取高度相关的词,这意味着它做出了可解释的决定。这些词汇的相关度是最高的,因此我们更愿意在实际生产中部署这样的模型。步骤8:使用端到端的方式训练语法特征我们已经介绍过如何用快速有效的办法来生成紧凑的句子嵌入。然而,通过省略词汇的顺序,我们也放弃了语句的所有句法信息。如果简单的方法给不出令人满意的结果,那我们就用更为复杂的模型:将整个句子作为输入并预测标签,同时无需建立中间表示。一种常见的做法是把句子视为词向量的序列,如使用Word2Vec,或是GloVe、CoVe等更先进的方法。接下来我们详细讨论。高效的端到端的训练体系结构(源)用于句子分类的卷积神经网络(https://arxiv.org/abs/)训练速度很快快。它作为一种入门级的深度学习架构,能够很好地解决分类问题。尽管CNN声名主要源自它在图像处理方面的出色能力,但在文本相关任务上,它所提供的结果也相当优异。且相比多数复杂的NLP方法(如LSTM、Encoder/Decoder架构等),CNN训练速度也更快。它能够保留单词的顺序,很好地学习单词的序列特征以及其他有用信息。相对于先前的模型,它可以区分出“Alex eats plants”与“Plants eat Alex”之间差异。相比先前的方法,该模型的训练不需更多的工作,但效果却好得多,准确率高达79.5%!与前面的步骤一样,下一步也要继续探索并可视化该模型的预测结果,以验证它是否为最佳模型。做到这一步,你应该能自己完成这里的操作。写在最后简单回顾一下,我们在各个步骤中所用的方法是这样的:从一个简单的模型快速开始解释模型的预测理解模型分类中的错误样本使用这些知识来决定下一步的部署。上述八大步骤所用的模型是我们处理短文本时的几个特定实例,但其背后的解决方法已经广泛被用在各类NLP问题的实际处理上。原文链接: &&https://blog.insightdatascience.com/how-to-solve-90-of-nlp-problems-a-step-by-step-guide-fdae
喜欢该文的人也喜欢AI、NLP、CL都是什么鬼?四张关键框架图带你学会NLP名词解释
人工智能、机器学习、自然语言处理,你真的清楚这些热门概念的定义么?这些术语各自涵盖的范围,所属的知识层级又是什么?从立委博士的文章中,我们能看到一个逻辑清晰的分析图
样板戏《智取威虎山》里面,杨子荣怀揣一张秘密联络图而成为土匪头子座山雕的座上客,因为在山头林立的江湖,谁掌握了联络图,谁就可以一统天下。马克思好像说过人是社会关系的总和,专业领域又何尝不是如此。在关系中定义和把握 NLP,可以说是了解一门学问及其技术的钟南山捷径。老马识途,责无旁贷,遂精雕细刻,作联络图四幅与同仁及网友分享。此联络图系列可比林彪元帅手中的红宝书,急用先学,有立竿见影之奇效。重要的是,学问虽然日新月异,永无止境,然而天下大势,在冥冥中自有其不变之理。四图在手,了然于心,可以不变应万变,无论研究还是开发,必不致迷失革命大方向。
一个活跃的领域会不断产生新的概念,新的术语,没有一个合适的参照图,新人特别容易湮没其中。新术语起初常常不规范,同一个概念不同的人可能使用不同的术语,而同一个术语不同的人也可能有不同的解读。常常要经过一个混沌期,研究共同体才逐渐达成规范化的共识。无论是否已经达成共识,关键是要理解术语的背后含义 (包括广义、窄义、传统定义,以及可能的歧义)。加强对于术语的敏感性,不断探究以求准确定位新概念/新术语在现有体系的位置,是为专业人员的基本功。
本文将围绕这四幅自制联络图,对 NLP 相关的术语做一次地毯式梳理和解说。本文提到的所有术语在第一次出现时,中文一律加下划线,英文斜体(Italics),大多有中英文对照,有的术语还给出超链,以便读者进一步阅读探索。
在我们进入NLP 系列联络图内部探究其奥秘之前,有必要澄清自然语言处理(NLP)的一般概念及其上位概念,以及与NLP 平起平坐或可以相互替换的一些术语。
NLP 这个术语是根据“自然语言”这个问题领域而命名的宽泛概念。顾名思义,自然语言处理就是以自然语言为对象的计算机处理。无论为了什么目标,无论分析深浅,只要涉及电脑处理自然语言,都在 NLP 之列。所谓自然语言(Natural language)指的即是我们日常使用的语言,英语、俄语、日语、汉语等,它与人类语言(Human language)是同义词,主要为区别形式语言(Formal language),包括计算机语言(Computer language)。自然语言是人类交流最自然最常见的形式,不仅仅是口语,书面语也在海量增长,尤其是移动互联网及其社交网络普及的今天。比较形式语言,自然语言复杂得多,常有省略和歧义,具有相当的处理难度(hence 成就了 NLP 这个专业及其我们的饭碗)。顺便一提,在自然语言灰色地带的还有那些人造语(Artificial language)方案,特别是广为流传的世界语(Esperanto),它们的形式与自然语言无异,也是为人类交流而设计,不过是起源上不太“自然”而已,其分析处理当然也属 NLP。(笔者N多年前的机器翻译专业的硕士课题就是一个把世界语全自动翻译成英语和汉语的系统,也算填补了一项空白。)
与 NLP 经常等价使用的术语是计算语言学(Computational Linguistics, or, CL)。顾名思义,计算语言学是计算机科学(Computer Science)与语言学(Linguistics)之间的交叉学科。事实上,NLP和 CL是同一个行当的两面,NLP注重的是实践,CL则是一门学问(理论)。可以说,CL是 NLP的科学基础,NLP是 CL的应用过程。由于 CL 与数理等基础学科不同,属于面相应用的学问,所以 CL 和 NLP 二者差不多是同一回事儿。其从业人员也可以从这两个侧面描述自己,譬如,笔者在业界可称为 NLP 工程师(NLP engineer),在学界则是计算语言学家(Computational linguist)。当然,在大学和研究所的计算语言学家,虽然也要做 NLP 系统和实验,但学问重点是以实验来支持理论和算法的研究。在工业界的 NLP工程师们,则注重 real life 系统的实现和相关产品的开发,奉行的多是白猫黑猫论,较少理论的束缚。
另外一个经常与 NLP平行使用的术语是 机器学习(Machine Learning, or, ML)。严格说起来,机器学习与 NLP 是完全不同层次的概念,前者是方法,后者是问题领域。然而,由于机器学习的万金油性质(谁说机器学习不万能,统计学家跟你急),加之ML 已经成为 NLP 领域(尤其在学界)的主流方法,很多人除了机器学习(如今时兴的是深度学习,或曰深度神经网络),忘记或者忽视了 NLP 还有语言规则的方法,因此在他们眼中,NLP就是机器学习。其实,机器学习并不局限于 NLP 领域,那些用于语言处理的机器学习算法也大多可以用来做很多其他人工智能(Artificial Intelligence, or AI)的事儿,如股市预测(Stock marketanalysis)、信用卡欺诈监测(Detecting credit card fraud)、机器视觉(Computer vision)、DNA测序分类(Classifying DNA sequences),甚至医疗诊断(Medical diagnosis)。
在 NLP领域,与机器学习平行的传统方法还有语言学家(linguist)或知识工程师(knowledge engineer)手工编制的语言规则(Linguistic rules, or hand-crafted rules),这些规则的集合称计算文法(Computational grammar),由计算文法支持(or 编译)的系统叫做规则系统(Rule system)。
机器学习和规则系统这两种方法各有利弊,可以取长补短。统而言之,机器学习擅长文档分类(Document classification),从宏观上粗线条(course-grained)把握语言现象,计算文法则擅长细致深入的语言学分析,从细节上捕捉语言现象。如果把语言看成森林,语句看成林中形态各异的树木,总体而言,机器学习是见林不见木,计算文法则见木不见林(本来这是很自然的互补关系,但双方都有不为少数的“原教旨主义极端派”不愿承认对方的长处,呵呵)。从效果上看,机器学习常常以覆盖面胜出,业内的术语叫高查全率(High recall),而计算文法则长于分析的精度,即高查准率(High precision)。由于自然语言任务比较 复杂,一个实用系统(Real-life system)常常需要在在粗线条和细线条(fine-grained)以及查全与查准之间取得某种平衡,因此结合两种方法的 NLP 混合式系统(Hybrid system)往往更加实惠好用。一个简单有效的结合方式是把系统建立成一个后备式模型(back-off model),对每个主要任务,先让计算文法做高精度低覆盖面的处理,再行机器学习出来的统计模型(Statistical model),以便粗线条覆盖遗留问题。
值得一提的是,传统 AI 也倚重手工编制的规则系统,称作符号逻辑派,但是它与语言学家的计算文法有一个根本的区别:AI 规则系统远远不如计算文法现实可行。AI 的规则系统不仅包括比较容易把握(tractable)和形式化(formalized)的语言(学)规则,它们还试图涵盖包罗万象的常识(至少是其中的核心部分)以及其他知识,并通过精巧设计的逻辑推理系统把这些知识整合起来。可以说,AI 旨在从本质上模拟人的智能过程,因雄心太大而受挫,以致多年来进展甚微。过去的辉煌也只表现在极端狭窄的领域的玩具系统(后来也发展了一支比较实用的专家系统),当时统计模型还是没有睡醒的雄狮。以 ML为核心以大数据(Big data)为支撑的统计方法的兴起,让这种 AI相形见绌。有意思的是,虽然人工智能(台湾同胞称人工智慧)听上去很响亮,可以唤起普罗大众心中的某种科学幻想奇迹(因此常常为电子产品的包装推销商所青睐),在科学共同体中却相当落寞:有不少统计学家甚至把 AI 看成一个过气的笑话。虽然这里难免有王婆卖瓜的偏见,但 传统 AI 的方法论及其好高骛远不现实也是一个因素。也许在未来会有符号逻辑派 AI 的复兴,但是在可预见的将来,把人类智能当作联接输入输出的黑匣子的机器学习方法,显然已经占了上风。
由此看来,ML 与 AI 的关系,颇似 NLP 与 CL 的关系,外延几乎重合,ML 重在 AI 的应用(包括 NLP),而传统 AI 理应为 ML 的理论指导。可是,由于方法学上的南辕北辙,以知识表达(Knowledge representation)和逻辑推理(Logical reasoning)为基础的传统 AI 越来越难担当实用智能系统(Intelligent systems)的理论指导,智能系统的地盘逐渐为以统计学和信息论为基础的机器学习所占领。国宝熊猫般珍稀的坚持传统AI的逻辑学家(如 cyc 发明人 Douglas Lenat 老先生)与擅长 ML 的统计学家(多如恐龙)虽然问题领域几乎完全重合,解决方案却形如陌路,渐行渐远。
还有一个几乎与自然语言处理等价的术语,叫自然语言理解(Natural Language Understanding, orNLU)。从字面上,这个义为“机器理解语言”的术语 NLU 带有浓厚的人工智能的烂漫主义意味,不象“机器处理语言”那样直白而现实主义,但实际上,使用 NLP还是 NLU,正如使用 NLP 还是 CL一样, 往往是不同圈子人的不同习惯,所指基本相同。说基本相同,是因为 NLP也可以专指浅层的语言处理(譬如后文会提到的浅层分析Shallow parsing),而深度分析(Deep parsing)却是 NLU 的题中应有之义,浅尝辄止的不能登 NLU/AI的大雅之堂。不妨这样看,带上AI的眼镜看,此物为NLU;而以 ML 而观之,则此物只能是 NLP。
此外,自然语言技术或语言技术(Natural language technology)也是 NLP的通俗化表达。
既然 NLP的等价物 CL有两个 parents,计算机科学和语言学,NLP的上位概念也自然可以有两位:NLP既可以看作是计算机科学的一个应用分支,也可以看作是语言学的一个应用分支。事实上,广义的应用语言学(Applied linguistics)是包含计算语言学和 NLP的,不过由于计算语言学作为一个独立学科已经站住脚跟半个多世纪了(其主要学刊是《Computational Linguistics》,学会是 ACL,顶级国际会议包括 ACL 年会和 COLING 等),(窄义的)应用语言学现在更多用来表示语言教学和翻译这样的实用领域,不再下辖计算语言学这个分支。
从功能上看,NLP与 ML一样,同属于人工智能的范畴,特别是自然语言理解以及 NLP 的种种应用,如机器翻译。所以,广义的人工智能既是机器学习的上位概念,也是自然语言处理的上位概念。然而,如上所说,窄义或传统的人工智能强调知识处理包括常识推理(common-sense reasoning),与现行的 ML 和 NLP 的数据制导(data-driven)现状颇有距离,因此有 NLP学者刻意保持与传统 AI 的距离以示不屑为伍。
千头万绪,纲举目张,下文分四个层次、用四幅联络图来讲解NLP per se。四个层次分别是:
语言层(linguistic level)
抽取层(extraction level)
挖掘层(mining level)
应用层(app level)
这四个层次的关系,基本就是自底而上的支持关系:1 ==》2 ==》 3 ==》4。显然,NLP 的核心句法分析器(Parser)处于第一层, 而《自动民调》、《问答系统》、《机器翻译》这样的系统则是第四层应用的例子。
需要说明的是,NLP 的对象自然语言有两种形式,语音(Speech)和文本(Text),因此 NLP 自然涵盖语音方面的两个重要方向:1. 教授电脑听懂人话的语音识别(Speech recognition);2. 教授电脑说人话的语音合成(Speech synthesis)。由于笔者对语音处理(Speech processing)比较外行,本系列专谈针对文本的 NLP,视语音识别和语音合成为文本处理(Text processing)的 前奏和后续。事实上,在实际的语言系统中,语音处理和文本处理的分工正是如此,譬如 NLP 在手机上最新应用如苹果的 Siri 就是先行语音识别,输出文本结果,再行文本分析,然后根据分析理解的结果采取行动(根据主人指令去查天气预报、股票、播放某支音乐等等)。
净手焚香阅好图
我把 NLP 系统从核心引擎直到应用,分为四个阶段,对应四张框架图。
最底层最核心的是 deep parsing,就是对自然语言的自底而上层层推进的自动分析器,这个工作最繁难,但是它是绝大多数 NLP 系统的我称之为带有核武器性质的基础技术,因为自然语言作为非结构数据因此而被结构化了。面对千变万化的语言表达,只有结构化了,patterns 才容易抓住,信息才好抽取,语义才好求解。这个道理早在乔姆斯基 1957 年语言学革命后提出表层结构到深层结构转换的时候,就开始成为(计算)语言学的共识了。结构树不仅是表达句法关系的枝干(arcs),还包括负载了各种信息的单词或短语的叶子(nodes)。结构树虽然重要,但一般不能直接支持产品,它只是系统的内部表达,作为语言分析理解的载体和语义落地为应用的核心支持。
接下来的一层是抽取层 (extraction),如上图所示。它的输入是结构树,输出是填写了内容的 templates,类似于填表:就是对于应用所需要的情报,预先定义一个表格出来,让抽取系统去填空,把语句中相关的词或短语抓出来送进表中事先定义好的栏目(fields)去。这一层已经从原先的领域独立的 parser 进入面对领域、针对应用和产品需求的任务了。
值得强调的是,抽取层是面向领域的语义聚焦的,而前面的分析层则是领域独立的。因此,一个好的架构是把分析做得很深入很逻辑,以便减轻抽取的负担。在深度分析的逻辑语义结构上做抽取,一条抽取规则等价于语言表层的千百条规则。这就为领域转移创造了条件。
有两大类抽取,一类是传统的信息抽取(IE),抽取的是事实或客观情报:实体、实体之间的关系、涉及不同实体的事件等,可以回答 who did what when and where (谁在何时何地做了什么)之类的问题。这个客观情报的抽取就是如今火得不能再火的知识图谱(knowledge graph)的核心技术和基础,IE 完了以后再加上下一层挖掘里面的整合(IF:information fusion),就可以构建知识图谱。另一类抽取是关于主观情报,舆情挖掘就是基于这一种抽取。我过去五年着重做的也是这块,细线条的舆情抽取(不仅仅是褒贬分类,还要挖掘舆情背后的理由来为决策提供依据)。这是 NLP 中最难的任务之一,比客观情报的 IE 要难得多。抽取出来的信息通常是存到某种数据库去。这就为下面的挖掘层提供了碎片情报。
很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但实际上这是两个层面的任务。抽取面对的是一颗颗语言的树,从一个个句子里面去找所要的情报。而挖掘面对的是一个 corpus,或数据源的整体,是从语言森林里面挖掘有统计价值的情报。在信息时代,我们面对的最大挑战就是信息过载,我们没有办法穷尽信息海洋,因此,必须借助电脑来从信息海洋中挖掘出关键的情报来满足不同的应用。因此挖掘天然地依赖统计,没有统计,抽取出来的信息仍然是杂乱无章的碎片,有很大的冗余,挖掘可以整合它们。
很多系统没有深入做挖掘,只是简单地把表达信息需求的 query 作为入口,实时(real time)去从抽取出来的相关的碎片化信息的数据库里,把 top n 结果简单合并,然后提供给产品和用户。这实际上也是挖掘,不过是用检索的方式实现了简单的挖掘就直接支持应用了。
实际上,要想做好挖掘,这里有很多的工作可做,不仅可以整合提高已有情报的质量。而且,做得深入的话,还可以挖掘出隐藏的情报,即不是元数据里显式表达出来的情报,譬如发现情报之间的因果关系,或其他的统计性趋势。这种挖掘最早在传统的数据挖掘(data mining)里做,因为传统的挖掘针对的是交易记录这样的结构数据,容易挖掘出那些隐含的关联(如,买尿片的人常常也买啤酒,原来是新为人父的人的惯常行为,这类情报挖掘出来可以帮助优化商品摆放和销售)。如今,自然语言也结构化为抽取的碎片情报在数据库了,当然也就可以做隐含关联的情报挖掘来提升情报的价值。
第四张架构图是 NLP 应用(apps)层。在这一层,分析、抽取、挖掘出来的种种情报可以支持不同 NLP 产品和服务。从问答系统到知识图谱的动态浏览(谷歌搜索中搜索明星已经可以看到这个应用),从自动民调到客户情报,从智能助理到自动文摘等等。
这算是我对 NLP 基本架构的一个总体解说。根据的是 20 多年在工业界做 NLP 产品的经验。18 年前,我就是用一张 NLP 架构图忽悠来的第一笔风投,投资人自己跟我们说,这是一张 million dollar slide。如今的解说就是从那张图延伸拓展而来。
天变还是不变,道是不变的。
立委博士,自然语言处理(NLP)资深架构师,硅谷大数据舆情挖掘公司 Netbase 首席科学家,Cymfony 前研发副总,荣获第一届问答系统第一名(TREC-8 QA Track),并赢得17个美国国防部的信息抽取项目(PI for 17 SBIRs)。其自然语言深度分析 (deep parsing) 最见功力,指挥团队研发了精准高效的 18 种语言的理解和应用系统。特别是汉语和英语,具有世界一流的分析精度,并且做到鲁棒、线速,scale up to 大数据。系统质量有第三方的评测认定大幅度领先竞争对手。应用方向包括大数据舆情挖掘、客户情报、信息抽取、知识图谱、问答系统、智能助理、语义搜索、智能浏览、机器翻译等等。
本文授权转载自“PaperWeekly”
五分钟,你可以掌握一个科学知识。
五分钟,你可以了解一个科技热点。
五分钟,你可以近观一个极客故事。
精确解构科技知识,个性表达投融观点。
欢迎关注线性资本。
Linear Path, Nonlinear Growth。
也许你还想看......
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点

我要回帖

更多关于 nlp 语义理解 方法 的文章

 

随机推荐