精华内容
下载资源
问答
  • 给外行能看懂的科普:这就叫自然语言处理如何向文科同学科普自然语言处理(NLP)? 刘知远,NLPer前几年曾经马少平老师的引荐,为某科普图书写过一篇短文介绍自然语言处理。如果只是介绍NLP的概念、任务和挑战,...
    给外行能看懂的科普:这就叫自然语言处理
    如何向文科同学科普自然语言处理(NLP)?
     刘知远,NLPer
    前几年曾经马少平老师的引荐,为某科普图书写过一篇短文介绍自然语言处理。如果只是介绍NLP的概念、任务和挑战,应该可以参考这篇小文。原文如下,仅供参考。


    自然语言处理
    Natural Language Processing


    一、什么是自然语言处理 
    简单地说,自然语言处理(Natural Language Processing,简称NLP)就是用计算机来处理、理解以及运用人类语言(如中文、英文等),它属于人工智能的一个分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学。由于自然语言是人类区别于其他动物的根本标志。没有语言,人类的思维也就无从谈起,所以自然语言处理体现了人工智能的最高任务与境界,也就是说,只有当计算机具备了处理自然语言的能力时,机器才算实现了真正的智能。


    从研究内容来看,自然语言处理包括语法分析、语义分析、篇章理解等。从应用角度来看,自然语言处理具有广泛的应用前景。特别是在信息时代,自然语言处理的应用包罗万象,例如:机器翻译、手写体和印刷体字符识别、语音识别及文语转换、信息检索、信息抽取与过滤、文本分类与聚类、舆情分析和观点挖掘等,它涉及与语言处理相关的数据挖掘、机器学习、知识获取、知识工程、人工智能研究和与语言计算相关的语言学研究等。


    值得一提的是,自然语言处理的兴起与机器翻译这一具体任务有着密切联系。机器翻译指的是利用计算机自动地将一种自然语言翻译为另外一种自然语言。例如自动将英文“I like Beijing Tiananmen Square”翻译为“我爱北京天安门”,或者反过来将“我爱北京天安门”翻译为“I like Beijing Tiananmen Square”。由于人工进行翻译需要训练有素的双语专家,翻译工作非常耗时耗力。更不用说需要翻译一些专业领域文献时,还需要翻译者了解该领域的基本知识。世界上有超过几千种语言,而仅联合国的工作语言就有六种之多。如果能够通过机器翻译准确地进行语言间的翻译,将大大提高人类沟通和了解的效率。


    《圣经》里有一个故事说巴比伦人想建造一座塔直通天堂。建塔的人都说着同一种语言,心意相通、齐心协力。上帝看到人类竟然敢做这种事情,就让他们的语言变得不一样。因为人们听不懂对方在讲什么,于是大家整天吵吵闹闹,无法继续建塔。后来人们把这座塔叫作巴别塔,而“巴别”的意思就是“分歧”。虽然巴别塔停建了,但一个梦想却始终萦绕在人们心中:人类什么时候才能拥有相通的语言,重建巴别塔呢?机器翻译被视为“重建巴别塔”的伟大创举。假如能够实现不同语言之间的机器翻译,我们就可以理解世界上任何人说的话,与他们进行交流和沟通,再也不必为相互不能理解而困扰。


    事实上,“人工智能”被作为一个研究问题正式提出来的时候,创始人把计算机国际象棋和机器翻译作为两个标志性的任务,认为只要国际象棋系统能够打败人类世界冠军,机器翻译系统达到人类翻译水平,就可以宣告人工智能的胜利。四十年后的1997年,IBM公司的深蓝超级计算机已经能够打败国际象棋世界冠军卡斯帕罗夫。而机器翻译到现在仍无法与人类翻译水平相比,从此可以看出自然语言处理有多么困难!


    自然语言处理兴起于美国。第二次世界大战之后,二十世纪五十年代,当电子计算机还在襁褓之中时,利用计算机处理人类语言的想法就已经出现。当时,美国希望能够利用计算机将大量俄语材料自动翻译成英语,以窥探苏联科技的最新发展。研究者从破译军事密码中得到启示,认为不同的语言只不过是对“同一语义”的不同编码而已,从而想当然地认为可以采用译码技术像破译密码一样“破译”这些语言。 


    1954年1月7日,美国乔治敦大学和IBM公司合作实验成功地将超过60句俄语自动翻译成英语。虽然当时的这个机器翻译系统非常简单,仅仅包含6个语法规则和250个词,但由于媒体的广泛报道,纷纷认为这是一个巨大的进步,导致美国政府备受鼓舞,加大了对自然语言处理研究的投资。实验完成者也当即自信地撰文称,在三到五年之内就能够完全解决从一种语言到另一种语言的自动翻译问题。他们认为只要制定好各种翻译规则,通过大量规则的堆砌就能够完美地实现语言间的自动翻译。 


    然而,事实是理解人类语言远比破译密码要复杂得多,因此研究进展非常缓慢。1966年的一份研究报告总结发现,经过十年之久的研究,结果远远未能达到预期,因此支持资金急剧下降,使自然语言处理(特别是机器翻译)的研究陷入长达二十年的低潮。直到二十世纪八十年代,随着电子计算机的计算能力的飞速提高和制造成本的大幅下降,研究者又开始重新关注自然语言处理这个极富挑战的研究领域。三十年沧海桑田,此时研究者已经认识到简单的语言规则的堆砌无法实现对人类语言的真正理解。研究发现,通过对大量的文本数据的自动学习和统计,能够更好地解决自然语言处理问题,如语言的自动翻译。这一思想被称为自然语言处理的统计学习模型,至今方兴未艾。


    那么,自然语言处理到底存在哪些主要困难或挑战,吸引那么多研究者几十年如一日孜孜不倦地探索解决之道呢?


    二、自然语言处理的主要困难 
    自然语言处理的困难可以罗列出来很多,不过关键在于消除歧义问题,如词法分析、句法分析、语义分析等过程中存在的歧义问题,简称为消歧。而正确的消歧需要大量的知识,包括语言学知识(如词法、句法、语义、上下文等)和世界知识(与语言无关)。这带来自然语言处理的两个主要困难。


    首先,语言中充满了大量的歧义,这主要体现在词法、句法及语义三个层次上。歧义的产生是由于自然语言所描述的对象――人类活动非常复杂,而语言的词汇和句法规则又是有限的,这就造成同一种语言形式可能具有多种含义。


    例如单词定界问题是属于词法层面的消歧任务。在口语中,词与词之间通常是连贯说出来的。在书面语中,中文等语言也没有词与词之间的边界。由于单词是承载语义的最小单元,要解决自然语言处理,单词的边界界定问题首当其冲。特别是中文文本通常由连续的字序列组成,词与词之间缺少天然的分隔符,因此中文信息处理比英文等西方语言多一步工序,即确定词的边界,我们称为“中文自动分词”任务。通俗的说就是要由计算机在词与词之间自动加上分隔符,从而将中文文本切分为独立的单词。例如一个句子“今天天气晴朗”的带有分隔符的切分文本是“今天|天气|晴朗”。中文自动分词处于中文自然语言处理的底层,是公认的中文信息处理的第一道工序,扮演着重要的角色,主要存在新词发现和歧义切分等问题。我们注意到:正确的单词切分取决于对文本语义的正确理解,而单词切分又是理解语言的最初的一道工序。这样的一个“鸡生蛋、蛋生鸡”的问题自然成了(中文)自然语言处理的第一条拦路虎。


    其他级别的语言单位也存在着各种歧义问题。例如在短语级别上,“进口彩电”可以理解为动宾关系(从国外进口了一批彩电),也可以理解为偏正关系(从国外进口的彩电)。又如在句子级别上,“做手术的是她的父亲”可以理解为她父亲生病了需要做手术,也可以理解为她父亲是医生,帮别人做手术。总之,同样一个单词、短语或者句子有多种可能的理解,表示多种可能的语义。如果不能解决好各级语言单位的歧义问题,我们就无法正确理解语言要表达的意思。


    另外一个方面,消除歧义所需要的知识在获取、表达以及运用上存在困难。由于语言处理的复杂性,合适的语言处理方法和模型难以设计。


    例如上下文知识的获取问题。在试图理解一句话的时候,即使不存在歧义问题,我们也往往需要考虑上下文的影响。所谓的“上下文”指的是当前所说这句话所处的语言环境,例如说话人所处的环境,或者是这句话的前几句话或者后几句话,等等。假如当前这句话中存在指代词的时候,我们需要通过这句话前面的句子来推断这个指代词是指的什么。我们以“小明欺负小亮,因此我批评了他”为例。在其中的第二句话中的“他”是指代“小明”还是“小亮”呢?要正确理解这句话,我们就要理解上句话“小明欺负小亮”意味着“小明”做得不对,因此第二句中的“他”应当指代的是“小明”。由于上下文对于当前句子的暗示形式是多种多样的,因此如何考虑上下文影响问题是自然语言处理中的主要困难之一。 


    再如背景知识问题。 正确理解人类语言还要有足够的背景知识。举一个简单的例子,在机器翻译研究的初期,人们经常举一个例子来说明机器翻译任务的艰巨性。在英语中“The spirit is willing but the flesh is weak.”,意思是“心有余而力不足”。但是当时的某个机器翻译系统将这句英文翻译到俄语,然后再翻译回英语的时候,却变成了“The Voltka is strong but the meat is rotten.”,意思是“伏特加酒是浓的,但肉却腐烂了”。从字面意义上看,“spirit”(烈性酒)与“Voltka”(伏特加)对译似无问题,而“flesh”和“meat”也都有肉的意思。那么这两句话在意义上为什么会南辕北辙呢?关键的问题就在于在翻译的过程中,机器翻译系统对于英语成语并无了解,仅仅是从字面上进行翻译,结果自然失之毫厘,差之千里。 


    从上面的两个方面的主要困难,我们看到自然语言处理这个难题的根源就是人类语言的复杂性和语言描述的外部世界的复杂性。人类语言承担着人类表达情感、交流思想、传播知识等重要功能,因此需要具备强大的灵活性和表达能力,而理解语言所需要的知识又是无止境的。那么目前人们是如何尝试进行自然语言处理的呢? 


    三、自然语言处理的发展趋势 
    目前,人们主要通过两种思路来进行自然语言处理,一种是基于规则的理性主义,另外一种是基于统计的经验主义。理性主义方法认为,人类语言主要是由语言规则来产生和描述的,因此只要能够用适当的形式将人类语言规则表示出来,就能够理解人类语言,并实现语言之间的翻译等各种自然语言处理任务。而经验主义方法则认为,从语言数据中获取语言统计知识,有效建立语言的统计模型。因此只要能够有足够多的用于统计的语言数据,就能够理解人类语言。然而,当面对现实世界充满模糊与不确定性时,这两种方法都面临着各自无法解决的问题。例如,人类语言虽然有一定的规则,但是在真实使用中往往伴随大量的噪音和不规范性。理性主义方法的一大弱点就是鲁棒性差,只要与规则稍有偏离便无法处理。而对于经验主义方法而言,又不能无限地获取语言数据进行统计学习,因此也不能够完美地理解人类语言。二十世纪八十年代以来的趋势就是,基于语言规则的理性主义方法不断受到质疑,大规模语言数据处理成为目前和未来一段时期内自然语言处理的主要研究目标。统计学习方法越来越受到重视,自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。


    迈进二十一世纪,我们已经进入了以互联网为主要标志的海量信息时代,这些海量信息大部分是以自然语言表示的。一方面,海量信息也为计算机学习人类语言提供了更多的“素材”,另一方面,这也为自然语言处理提供了更加宽广的应用舞台。例如,作为自然语言处理的重要应用,搜索引擎逐渐成为人们获取信息的重要工具,涌现出以百度、谷歌等为代表的搜索引擎巨头;机器翻译也从实验室走入寻常百姓家,谷歌、百度等公司都提供了基于海量网络数据的机器翻译和辅助翻译工具;基于自然语言处理的中文(输入法如搜狗、微软、谷歌等输入法)成为计算机用户的必备工具;带有语音识别的计算机和手机也正大行其道,协助用户更有效地工作学习。总之,随着互联网的普及和海量信息的涌现,自然语言处理正在人们的日常生活中扮演着越来越重要的作用。


    然而,我们同时面临着一个严峻事实,那就是如何有效利用海量信息已成为制约信息技术发展的一个全局性瓶颈问题。自然语言处理无可避免地成为信息科学技术中长期发展的一个新的战略制高点。同时,人们逐渐意识到,单纯依靠统计方法已经无法快速有效地从海量数据中学习语言知识,只有同时充分发挥基于规则的理性主义方法和基于统计的经验主义方法的各自优势,两者互相补充,才能够更好、更快地进行自然语言处理。


    自然语言处理作为一个年龄尚不足一个世纪的新兴学科,正在进行着突飞猛进的发展。回顾自然语言处理的发展历程,并不是一帆风顺,有过低谷,也有过高潮。而现在我们正面临着新的挑战和机遇。例如,目前网络搜索引擎基本上还停留在关键词匹配,缺乏深层次的自然语言处理和理解。语音识别、文字识别、问答系统、机器翻译等目前也只能达到很基本的水平。路漫漫其修远兮,自然语言处理作为一个高度交叉的新兴学科,不论是探究自然本质还是付诸实际应用,在将来必定会有令人期待的惊喜和异常快速的发展。 


    参考文献 
    [1] 张钹. 自然语言处理的计算模型. 中文信息学报, 2007, 21(3):3-7. 
    [2] 冯志伟. 《统计自然语言处理》序言. 1版. 北京: 清华大学出版社, 2008.
    [3] 孙茂松. 语言计算:信息科学技术中长期发展的战略制高点. 语言文字应用, 2005, 3:38-40.


    查看知乎原文(12 条讨论)
    扫描二维码下载知乎日报
    支持 iOS 和 Android
    二维码下载知乎日报
    知乎网 · © 2018 知乎
    展开全文
  • 文章目录论述自然语言处理的技术范畴(基本全貌) 一、前言二、主要技术范畴1、语音合成(Speech Synthesis)2、语音识别(Speech Recognition)3、中文自动分词4、词性标注5、句法分析7、文本分类7、文本挖掘8、信息抽取9...

    论述自然语言处理的技术范畴

    一、前言

           本片博文主要是介绍说明自然语言处理的全貌,一些主要的技术范畴。
           自然语言处理(NLP)这个是一个很大的话题,,它是一个人机交互的一个过程,它涉及的学科比较广泛譬如如下所示:

        1:语言学
        2:计算机科学(提供模型表示,算法设计,计算机实现):
        3:当然还有数学以此来提供数学模型
        4:心理学(人类言语心理模型和理论)
        5:哲学(提供人类思维和语言的更高层次理论)
        6:统计学(提供样本数据的预测统计技术)
        7:电子工程(信息论基础和语言型号处理技术)
        8:生物学(人类言语行为机制理论)

           总之那涉及的学科范围广泛。不言而喻在自然语言处理研究工作中是十分艰难的,博主现在也只是学习它的一个小小的分支罢了,看到此篇博文的小伙伴希望能抛出你们的建议和意见,要是如此博主甚是感激,开心呀!!!


    二、主要技术范畴

    1、语音合成(Speech Synthesis)

           所谓的语音合成就是指用人工的方式产生人类语音。语音合成器,就是利用计算机系统作用在语音合成上。而语音合成器可以用软/硬件实现。
           文字转语音(Text-To-Speech,TTS)系统则是将一般语言的文字转换为语音,其他系统可以描绘语言符号的表示方式,就像音标转换至语音一样。
           语音合成器的质量: 通常取决于人声的相似度及语义是否能被了解。举个例子,对于个瞎子看不到文字,只能通过语音合成器很清楚的听到文字转换成语音的效果。
           语音合成的应用包括智能仪表、智能玩具、电子地图、电子导游、电子词典等。

           总结:用大白话来讲使用语音合成器可以实现文字转换为语音,音标转化为语音,并且效果如同非瞎看文字,瞎子听语音同一个效果为最好。

    2、语音识别(Speech Recognition)

           语音识别(Speech Recognition)技术也被称为语音转文本识别(Speech to Text,STT)目标是让计算机自动将人类的语音内容转换为相应的文字。
           语音识别技术的应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入等。语音识别技术与其他自然语言处理技术如机器翻译及语音合成技术相结合,可以构建出更加复杂的应用,例如,语音到语音的翻译。
           总结:用大白话来讲语音识别就是借助计算机工具来识别人类说的话转化为可视化的东东(也就是文字啦)。

    3、中文自动分词

           中文自动分词指的是----->使用计算机----->自动对中文文本----->进行词语的切分。就像英文那样使得中文句子中的词之间有空格以标识。中文自动分词也是中文自然语言处理中的 最底层的一个环节。
    现有的方法:
           ⊚ 基于词典的匹配:前向最大匹配、后向最大匹配。
           ⊚ 基于字的标注:最大熵模型、条件随机场模型、感知器模型。
           ⊚ 其他方法:与词性标注结合、与句法分析结合。

           例如以下是博主写的一个简单的测试
           代码

    """
     author:jjk
     datetime:2018/11/1
     coding:utf-8
     project name:Pycharm_workstation
     Program function: 中文分词
                       结巴分词
     
    """
    import jieba # 导入结巴分词包
    import jieba.posseg as pseg
    import time #  时间
    
    time_Start = time.time()
    
    #f=open("t_with_splitter.txt","r")#读取文本  
    #string=f.read().decode("utf-8")
    
    string = '中文自动分词指的是使用计算机自动对中文文本进行词语的切分,' + \
             '即像英文那样使得中文句子中的词之间有空格以标识。' + \
             '中文自动分词被认为是中文自然语言处理中的一个最基本的环节'
    
    words = pseg.cut(string) # 进行分词
    result = "" #记录最终结果的变量 
    for w in words:
        result += str(w.word) + "/" + str(w.flag) # 加词性标注  
    print(result) # 输出结果
    f = open("result.txt","w") #将结果保存到另一个文档中 
    f.write(result)
    f.close()
    time_Stop = time.time()
    print("分词及词性标注完成,耗时:"+str(time_Stop-time_Start)+"秒。")# 输出结果
    

           结果
    在这里插入图片描述

    4、词性标注

           词性标注(Part-of-Speech tagging 或POS tagging) 又称词类标注或者简称标注,是指在词性标记集已确定,并且词典中每个词都有确定词性的基础上,将一个输入词串转换成相应词性标记串的过程。如上 3、中文自动分词 中举的例子的结果所示。
           在汉语中,因为汉语词汇词性多变的情况比较少见,大多词语只有一个词性,或者出现次最高的词性远远高于第二位的词性,相对比较简单。同时,它也受到一些条件约束。比如:兼类词在具体语境中的词性判定问题、未登录词即新词词性问题、兼类词问题等。
           词性标注方法包括概率方法、隐马尔可夫模型的词性标注方法、机器学习规则的方法等。

    5、句法分析

    • 句法分析

           句法分析(Parsing)就是指对句子中的词语语法功能进行分析。比如“欢迎大家使用演示平台”就可以表示为"欢迎\VV 大家\PN 使用\VV 演示\NN 平台\NN"。
           句法分析在中文信息处理中的主要应用包括机器翻译、命名实体识别等。

    • 自然语言生成

           自然语言生成研究使计算机具有人一样的表达和写作功能,即能够根据一些关键信息及其在机器内部的表达形式,经过一个规划过程,自动生成一段高质量的自然语言文本。自然语言处理包括自然语言理解和自然语言生成自然语言生成是人工智能和计算语言学的分支,相应的语言生成系统是基于语言信息处理的计算机模型,其工作过程与自然语言分析相反,从抽象的概念层次开始,通过选择并执行一定的语义和语法规则来生成文本。

    6、文本分类

           文本分类用计算机对文本集按照一定的分类器模型进行自动分类标记。文本分类的总体过程如下(引用自 NLPIR 汉语分词系统)。

    (1) 预处理:将原始语料格式化为同一格式,便于后续的统一处理。
    (2) 索引:将文档分解为基本处理单元,同时降低后续处理的开销。
    (3) 统计:词频统计,项(单词、概念)与分类的相关概率。
    (4) 特征抽取:从文档中抽取出反映文档主题的特征。
    (5) 分类器:分类器的训练。
    (6) 评价:分类器的测试结果分析。

           文本分类常用算法包括决策树、朴素贝叶斯、神经网络、支持向量机、线性最小平方拟合、KNN、遗传算法、最大熵等,广泛应用于垃圾过滤、新闻分类、词性标注等。

    7、文本挖掘

           文本挖掘一般指在文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。文本挖掘通常涉及输入文本的处理过程,产生结构化数据,并最终评价和解释输出。
           例如博主的这篇文章中对微信朋友圈个性签名生成词云的分析,就是一个文本挖掘。
           典型的文本挖掘方法包括文本分类、文本聚类、信息抽取、概念/实体挖掘、情感分析和观点分析等。

    8、信息抽取

           信息抽取(Information Extraction)是从大量文字数据中自动为访问数据库而抽取特定消息的技术
           简单点来说从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等。大白话就是,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果,涉及实体识别、时间抽取、因果关系抽取等关键技术。

    9、 问答系统

           问答系统(Question Answering)是当下自然语言处理研究的热点,也是未来自然语言处理的重点问题。从问答系统的外部行为来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再者是其回传的为高精准度网页结果或明确的答案字串。
           至此不知道小伙伴你有没有想到聊天机器人呀!!!

    10、机器翻译

           机器翻译(Machine Translation,经常简写为MT)属于计算语言学的范畴,是计算机程序将文字或演说从一种自然语言翻译成另一种自然语言 。简单来说,机器翻译是通过将一个自然语言的字辞取代成另一个语言的字辞来实现的。借由使用语料库的技术,可达成更加复杂的自动翻译,包阔可更佳地处理不同的文法结构、辞汇辨识、惯用语的对应等。
           这里用博主自己的大白话的理解就是:将一种语言(比如中文) 翻译成

    11、文本情感分析

           文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘及计算机语言学等方法来识别和提取原素材中的主观信息 。通常来说,情感分析的目的是为了找出说话者/作者在某些话题上或者针对一个文本两极的观点的态度。这个态度或许是他的个人判断或评估,或许是他当时的情感状态(也就是说,作者在做出这个言论时的情绪状态),或是作者有意向的情感交流(就是作者想要读者所体验的情绪)等。
           总结:就是作者规定一些代表文本的态度词,然后使用可视化进行表现出来从而达到客户情感交流。

    12、自动摘要

           所谓自动摘要就是利用计算机自动地从原始文献中提取文摘,文摘是全面准确地反映某一文献中心内容的连贯短文。常用方法是自动摘要将文本作为句子的线性序列,将句子视为词的线性序列。
           自动摘要可以按照技术类型和信息提取分类。
           ⊚ 技术应用类型:自动提取给定文章的摘要信息,自动计算文章中词的权重,自动计算
    文章中句子的权重。
           ⊚ 信息提取:单篇文章的摘要自动提取,大规模文档的摘要自动提取,基于分类的摘要
    自动提取。
           举例如下所示:

    """
     author:jjk
     datetime:2018/10/15
     coding:utf-8
     project name:Pycharm_workstation
     Program function: 查找关键词
        思路:
    	     1:加载已有的文档数据集
    		 2:加载停用词表
    		 3:对数据集中的文档进行分词
    		 4:根据停用词表,过来干扰词
    		 5:根据数据集训练算法
    
    
    """
    
    import math
    import jieba
    import jieba.posseg as psg
    from gensim import corpora, models
    from jieba import analyse
    import functools
    import numpy as np
    
    
    # 停用词加载方法
    def get_stopword_list():
        stop_word_path = './data/stopword.txt'
        # 遍历txt文档,剔除''
        stopword_list = [sw.replace('\n', '') for sw in open(stop_word_path, encoding='utf-8').readlines()]
        return stopword_list
    
    
    # 分词方法,调用结巴接口
    # pos是判断是否采用词性标注的参数
    def seg_to_list(sentence, pos=False):
        if not pos:
            # 不进行词性标注的分词方法
            seg_list = jieba.cut(sentence)
        else:
            # 进行词性标注的分词方法
            seg_list = psg.cut(sentence)
        return seg_list
    
    
    # 去除干扰词,根据pos判断是否过滤除名词外的其他词性,再判断词是否在停用词表中,长度是否大于等于2等。
    def word_filter(seg_list, pos=False):
        stopword_list = get_stopword_list()
        filter_list = []
        # 根据pos参数选择是否词性过滤
        # 不进行词性过滤,则将词性都标记为n,表示全部保留
        for seg in seg_list:
            if not pos:
                word = seg
                flag = 'n'
            else:
                word = seg.word
                flag = seg.flag
            if not flag.startswith('n'):
                continue
            # 过滤高停用词表中的词,以及长度为<2的词
            if not word in stopword_list and len(word) > 1:
                filter_list.append(word)
        return filter_list
    
    
    # 数据加载
    # corpus.txt为数据集
    def load_data(pos=False, corpus_path='./data/corpus.txt'):
        # 调用上面 方式对数据集进行处理,处理之后的数据集仅保留非干扰词
        doc_list = []
        for line in open(corpus_path, 'rb'):
            content = line.strip()
            seg_list = seg_to_list(content, pos)
            filter_list = word_filter(seg_list, pos)
            doc_list.append(filter_list)
        return doc_list
    
    
    # idf值统计方法
    def train_idf(doc_list):
        idf_dic = {}
        # 总文档数
        tt_count = len(doc_list)
        # 每个词出现的文档数
        for doc in doc_list:
            for word in set(doc):
                idf_dic[word] = idf_dic.get(word, 0.0) + 1.0
    
        # 按公式转换为idf值,分母加1进行平滑处理
        for k, v in idf_dic.items():
            idf_dic[k] = math.log(tt_count / (1.0 + v))
        # 对于没有在字典中的词,默认其尽在一个文档出现,得到默认idf值
        default_idf = math.log(tt_count / (1.0))
        return idf_dic, default_idf
    
    
    # topK
    # cmp()函数是为了输出top关键词时,先按照关键词的计算分值排序,在得分相同时,根据关键词进行排序时
    def cmp(e1, e2):
        # import numpy as np
        res = np.sign(e1[1] - e2[1])
        if res != 0:
            return res
        else:
            a = e1[0] + e2[0]
            b = e2[0] + e1[0]
            if a > b:
                return 1
            elif a == b:
                return 0
            else:
                return -1
    
    
    # TF-IDF类
    class TfIdf(object):
        # 训练好的idf字典,默认idf值,处理后的待提取文本,关键词数量
        def __init__(self, idf_dic, default_idf, word_list, keyword_num):
            self.word_list = word_list
            self.idf_dic, self.default_idf = idf_dic, default_idf
            self.tf_dic = self.get_tf_dic()
            self.keyword_num = keyword_num
    
        # 统计tf值
        def get_tf_dic(self):
            tf_dic = {}
            for word in self.word_list:
                tf_dic[word] = tf_dic.get(word, 0.0) + 1.0
            tt_count = len(self.word_list)
            for k, v in tf_dic.items():
                tf_dic[k] = float(v) / tt_count
            return tf_dic
    
        # 按公式计算tf-idf
        def get_tfidf(self):
            tfidf_dic = {}
            for word in self.word_list:
                idf = self.idf_dic.get(word, self.default_idf)
                tf = self.tf_dic.get(word, 0)
                tfidf = tf * idf
                tfidf_dic[word] = tfidf
            # 根据tf-idf排序,取排名前keyword_num的词作为关键词
            for k, v in sorted(tfidf_dic.items(), key=functools.cmp_to_key(cmp), reverse=True)[:self.keyword_num]:
                print(k + "/", end='')
            print()
    
    
    # 主题模型
    class TopicModel(object):
        #
        def __init__(self, doc_list, keyword_num, model="LSI", num_topics=4):
            # 使用gensim接口,将文本转为向量化表示
            self.dictionary = corpora.Dictionary(doc_list)
            # 使用BOW模型向量化
            corpus = [self.dictionary.doc2bow(doc) for doc in doc_list]
            # 对每个词,根据tf-idf进行加权,得到加权后的向量表示
            self.tfidf_model = models.TfidfModel(corpus)
            self.corpus_tfidf = self.tfidf_model[corpus]
    
            self.keyword_num = keyword_num
            self.num_topics = num_topics
            # 选择加载的模型
            if model == 'LSI':
                self.model = self.train_lsi()
            else:
                self.model = self.train_lda()
            # 得到数据集的主题-词分布
            word_dic = self.word_dictionary(doc_list)
            self.wordtopic_dic = self.get_wordtopic(word_dic)
    
        def train_lsi(self):
            lsi = models.LsiModel(self.corpus_tfidf, id2word=self.dictionary, num_topics=self.num_topics)
            return lsi
    
        def train_lda(self):
            lda = models.LdaModel(self.corpus_tfidf, id2word=self.dictionary, num_topics=self.num_topics)
            return lda
    
        def get_wordtopic(self, word_dic):
            wordtopic_dic = {}
            for word in word_dic:
                single_list = [word]
                wordcorpus = self.tfidf_model[self.dictionary.doc2bow(single_list)]
                wordtopic = self.model[wordcorpus]
                wordtopic_dic[word] = wordtopic
            return wordtopic_dic
    
        # 词空间构建方法和向量化方法,在没有gensim接口时的一般处理方法
        def word_dictionary(self, doc_list):
            dictionary = []
            for doc in doc_list:
                dictionary.extend(doc)
    
            dictionary = list(set(dictionary))
    
            return dictionary
    
        def doc2bowvec(self, word_list):
            vec_list = [1 if word in word_list else 0 for word in self.dictionary]
            return vec_list
    
        # 计算词的分布和文档的分布的相似度,取相似度最高的keyword_num个词作为关键词
        def get_simword(self, word_list):
            sentcorpus = self.tfidf_model[self.dictionary.doc2bow(word_list)]
            senttopic = self.model[sentcorpus]
    
            # 余弦相似度计算
            def calsim(l1, l2):
                a, b, c = 0.0, 0.0, 0.0
                for t1, t2 in zip(l1, l2):
                    x1 = t1[1]
                    x2 = t2[1]
                    a += x1 * x1
                    b += x1 * x1
                    c += x2 * x2
                sim = a / math.sqrt(b * c) if not (b * c) == 0.0 else 0.0
                return sim
    
            # 计算输入文本和每个词的主题分布相似度
            sim_dic = {}
            for k, v in self.wordtopic_dic.items():
                if k not in word_list:
                    continue
                sim = calsim(v, senttopic)
                sim_dic[k] = sim
    
            for k, v in sorted(sim_dic.items(), key=functools.cmp_to_key(cmp), reverse=True)[:self.keyword_num]:
                print(k + "/ ", end='')
            print()
    
    
    def tfidf_extract(word_list, pos=False, keyword_num=10):
        doc_list = load_data(pos)
        idf_dic, default_idf = train_idf(doc_list)
        tfidf_model = TfIdf(idf_dic, default_idf, word_list, keyword_num)
        tfidf_model.get_tfidf()
    
    
    def textrank_extract(text, pos=False, keyword_num=10):
        textrank = analyse.textrank
        keywords = textrank(text, keyword_num)
        # 输出抽取出的关键词
        for keyword in keywords:
            print(keyword + "/")
    
    
    # print()
    
    def topic_extract(word_list, model, pos=False, keyword_num=10):
        doc_list = load_data(pos)
        topic_model = TopicModel(doc_list, keyword_num, model=model)
        topic_model.get_simword(word_list)
    
    
    if __name__ == '__main__':
        # 获取测试文本
        text1 = 'test.txt'
        text = open(text1, encoding='utf-8').read()
        print(text)
    
        pos = True
        seg_list = seg_to_list(text, pos)
        filter_list = word_filter(seg_list, pos)
    
        print('\nTF-IDF模型结果:')
        tfidf_extract(filter_list)
    
        print('\nTextRank模型结果:')
        textrank_extract(text)
    
        print('\nLSI模型结果:')
        topic_extract(filter_list, 'LSI', pos)
    
        print('\nLDA模型结果:')
        topic_extract(filter_list, 'LDA', pos)
    
    

           结果
    在这里插入图片描述

    13、文字蕴涵

           文字蕴涵(Textual Entailment,TE)
           文字蕴涵在自然语言处理中主要指一个文字片段之间的定向关系。
           ⊚ 正向蕴涵
           文本T:日本时间2011 年3 日11 日,日本宫城县发生里氏震级9.0 震,造成死伤失踪约3 万多人。
           假设H:日本时间2011 年3 日11 日,日本宫城县发生里氏震级9.0 强震。
           ⊚ 矛盾蕴涵
           文本T:张学友在1961 年7 月10 日,生于香港,祖籍天津。
           假设H:张学友生于1960 年。
           ⊚ 独立蕴涵
           文本T:黎姿与“残障富豪”马廷强结婚。
           假设H:马廷强为香港“东方报业集团”创办人之一马惜如之子。

    三、自然语言处理的难点

    1、语言环境复杂

           自然语言处理的语言环境较为复杂,以命名实体识别进行分析,对于同一个汉字某些情况下可以看作实体处理,某些情况则不能看作实体。
           例如,天龙八部中的“竹剑”小姐姐 在有些情况下可能就是指的是竹子做得剑。还有“湖北” 有可能指定是地点 “湖北”,也有可能指定是“湖的北边”。可见字自然语言处理过程中语言环境(根据上下文才能究其表达的意思)的复杂。

    2、文本结构形式多样

           文本内部结构形式多样。还是以自然语言处理中的命名实体识别任务为例子,例如:
           ⊚ 人名,人名由姓和名构成。其中姓氏包括单姓和复姓(如赵、钱、孙、李、慕容、东方、西门等),名由若干个汉字组成。姓氏的用字范围相对有限,比较容易识别。然而名就比较灵活,既可以用名、字、号表示,也可以使用职务名和用典。比如:“李白、李十二、李翰林、李供奉、李拾遗、李太白、青莲居士,谪仙人”都是同一个人。
           ⊚ 地名一般由若干个字组成地名,可以为作为后缀关键字或者别名,都是指代一个地方。比如:“成都、蓉城、锦城、芙蓉城、锦官城、天府之国”,其中“蓉城、锦城、芙蓉城、锦官城、天府之国”为别名。除了全称的名称,还有地理位置代表地名的。比如:“河南、河南省、豫”都是指的一个省份,其中“豫”是简称。
           ⊚ 组织机构名,组织机构命名方式比较复杂,有些是修饰性的命名,有些表示历史典故,有些表示地理方位,有些表示地名,有些表示风俗习惯和关键字等。例如:组织名“广州恒大淘宝足球俱乐部”中,“广州”表示地名的成分,“恒大”“淘宝”表示公司名称成分,“足球”是一项体育赛事成分,“俱乐部”是关键字的成分。比如:“四川大学附属中学”(四川省成都市第十二中学)中包括另一个机构名“四川大学”。机构名还可以以简称形式表示,比如:“四川大学附属中学”简称“川大附中”,“成都信息工程大学”简称“成信大"。

    3、边界识别限制

           在自然语言处理任务中,边界识别最广泛应用于命名识别当中。边界识别可以分解为两大任务:如何去识别实体的边界;如何去判定实体的类别(诸如人名、地名、机构名)。中文命名实体识别要比英文命名实体识别更为复杂,一是受中文自身语言特性的限制,不同于英语文本中词间有空格界定;二是英文中的实体一般首字母大写容易区分,例如:‘Jobs wasadopted at birth in San Francisco,and raised in a hotbed of counterculture’ 中,人名乔布斯Jobs的首字母大写,地名旧金山San Francisco 的首字母也是大写,而中文不具备这样的特征。

    4、词义消岐

    • 词义消歧
             词义消歧是一个自然语言处理和本体论的开放问题。歧义与消歧是自然语言理解中最核心的问题,在词义、句义、篇章含义层次都会出现语言根据上下文语义而产生不同含义的现象。消歧即指根据上下文确定对象语义的过程词义消歧即在词语层次上的语义消歧。语义消歧/词义消歧是自然语言处理任务的一个核心与难点,影响了几乎所有任务的性能,比如搜索引擎、意见挖掘、文本理解与产生、推理等。
    • 词性标注和词义消岐
             词性标注与词义消歧是相互关联的两个问题,在语言使用者身上它们往往同时能得到满足。但是目前的计算机系统一般并不能让二者共用参数并同时输出。语义理解包括分词、词性标注、词义消歧、句法解析、语义解析等。它们并不是前馈的,是相互依赖并存在反馈的。词性标注与语义消歧都要依赖上下文来标注但是词性标注比语义消歧处理起来要更简单,最终结果也往往较好。主要原因是词性标注的标注集合是确定的,而语义消歧并没有,并且量级上词性标注要大得多;词性标注的上下文依赖比语义消歧要短。
      举例说明
             许多字词不单只有一个意思,因而我们必须选出使句意最为通顺的解释。看下面歧义的句子,词义消歧就是要分析出特定上下文的词被赋予的到底是哪个意思。
             (1) 川大学生上网成瘾如患绝症。歧义在于“川大学生”——四川大学的学生;四川的大学生。
             (2) 两代教授,人格不同。歧义:“两代”——两位代理教授;两个时代的教授。
             (3) 被控私分国有资产,专家总经理成了被告人。歧义:“专家总经理”——专家和总经理;有专家身份的总经理。
             (4) 新生市场苦熬淡季。歧义:“新生”——新学生的市场;新产生的市场。
             (5) 朝鲜十年走近国际社会一步。歧义:“十年走近国际社会一步”——每十年就向国际社会走近一步;最近十年间向国际社会走近了一步
             (6) 新汽车牌照。歧义:“新”——新的汽车;新的牌照。
             (7) 咬死了猎人的狗。歧义:——猎人的狗被咬死了;把猎人咬死了的那条狗。
             (8) 菜不热了。歧义:“热”——指菜凉了;指菜不加热了。
             (9) 还欠款四万元。歧义:“还”——读huai;读hai。
             (10) 北京人多。歧义:——北京/人多;北京人/多。

    5、指代消解

    • 定义
             指代消解(Anaphora Resolution)是自然语言处理的重要内容,在信息抽取时就用到了指代消解技术

    • 中文的三种典型指代
             (1) 人称代词:李明怕高妈妈一个人呆在家里寂寞,【他】便将家里的电视搬了过来。
             (2) 指示代词:很多人都想创造一个美好的世界留给孩子,【这】可以理解,但不完全正确。
             (3) 有定描述:贸易制裁似乎成了美国政府在对华关系中惯用的大棒。然而,这【大棒】果真如美国政府所希望的那样灵验吗?

    • 典型指代消解
             ⊚ 显性代词消解
             所谓显性代词消解,就是指在篇章中确定显性代词指向哪个名词短语的问题,代词称为指示语或照应语(Anaphor),其所指向的名词短语一般被称为先行语(Antecedent)。根据二者之间的先后位置,可分为回指(Anaphora)与预指(Cataphora),其中:如果先行语出现在指示语之前,则称为回指,反之则称为预指。
             ⊚ 零代词消解
             所谓零代词消解,是代词消解中针对零指代(Zero Anaphora)现象的一类特殊的消解。
             ⊚ 共指消解
             所谓共指消解,是将篇章中指向同一现实世界客观实体(Entity)的词语划分到同一个等价集的过程,其中被划分的词语称为表述或指称语(Mention),形成的等价集称为共指链(Coreference Chain)。在共指消解中,指称语包含普通名词、专有名词和代词,因此可以将显性代词消解看作共指消解针对代词的子问题。共指消解与显性代词消解不同,它更关注在指称语集合上进行的等价划分,评测方法与显性代词消解也不尽相同,通常使用 MUC、 B-CUBED、CEAF 和 BLANC 等评价方法。
             指代消解的研究方法大致可以分为基于启发式规则的、基于统计的和基于深度学习的方法。目前看来,基于有监督统计机器学习的消解算法仍然是主流算法。

    • 典型例子

           指代消解是解决“谁对谁做了什么”,处理如上所述的自然语言的问题,下面看看例子:
           (1) 美国政府表示仍然支持强势美元,但这到底只是嘴上说说还是要采取果断措施,经济学家对此的看法是否定的。
           (2) 今天老师又在班会上表扬了自己,但是我觉得还需要继续努力。
           (3) 三妹拉着葛姐的手说,她老家在偏远的山区,因为和家里赌气才跑到北京打工的,接着她又哭泣起自己的遭遇来。
           (4) 当他把证书发给小钱时,他对他笑了。
           (5) 小明和肖华去公园玩,他摔了一跤,他急忙把他扶起来。
           (6) 星期天, 小雨和小英到田老师家补习功课,她一早就打电话给她约好在红旗饭店吃早餐。

    四、展望自然语言处理

           关于在2017年第三届中国人工智能大会上来自哈尔滨工业大学的刘挺教授对自然语言处理的一个发展趋势的一个总结归纳。
           归纳链接:http://www.sohu.com/a/163742617_610522

    展开全文
  • 自然语言处理大体包括了自然语言理解和自然语言生成两个部分,实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义,也能以自然语言文本来表达给定的意图、思想等,前者称为自然语言理解,后者称为...

    自然语言处理大体包括了自然语言理解和自然语言生成两个部分,实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义,也能以自然语言文本来表达给定的意图、思想等,前者称为自然语言理解,后者称为自然语言生成。
      自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。自然语言处理的终极目标是用自然语言与计算机进行通信,使人们可以用自己最习惯的语言来使用计算机,而无需再花大量的时间和精力去学习不很自然和习惯的各种计算机语言。
      
      针对一定应用,具有相当自然语言处理能力的实用系统已经出现,典型的例子有:多语种数据库和专家系统的自然语言接口、各种机器翻译系统、全文信息检索系统、自动文摘系统等。
      国内BAT、京东、科大讯飞都有涉及自然语言处理的业务,另外还出现了爱特曼、出门问问、思必驰、蓦然认知、三角兽科技、森亿智能、乂学教育、智齿客服等新兴企业。
      人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
    如何快速入门NLP自然语言处理概述
    http://www.duozhishidai.com/article-11742-1.html
    自然语言处理(NLP)知识结构总结
    http://www.duozhishidai.com/article-10036-1.html
    NLP自然语言处理技术,在人工智能法官中的应用是什么?
    http://www.duozhishidai.com/article-2325-1.html


    多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

    多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
    展开全文
  • 自然语言处理入门

    千次阅读 2019-07-28 19:57:36
    自然语言处理入门自然语言处理入门自然语言的概念自然语言的理解自然语言处理的概念自然语言处理的相关技术自然语言处理难点相关学习链接 自然语言处理入门 自然语言的概念 自然语言的理解 自然语言处理(NLP) ...

    自然语言的概念

    自然语言是指人类日常使用的语言,如汉语、英语、法语、德语、等等。自然语言是人类交流和思维的主要工具。
    

    自然语言的理解

    人工智能早期研究的领域之一。
    从微观上讲,语言理解是从自然语言到机器内部之间的一种映射。
    从宏观上讲,语言理解是指机械能够执行人类所期望的某些功能。 
    

    自然语言处理的概念

    为了研究在人与人交际中以及在人与计算机交际中的语言问题的一门科学。
    利用计算机为工具对人类特有的书面形式和空头形式的自然语言的信息进行各种类型处理和加工的技术。
    

    自然语言处理的相关技术

    主要技术 将连续的自然语言文本切分成具有语义合理性和完整性的词汇序列
    分词 将连续的自然语言文本切分成具有语义合理性和完整性的词汇序列
    命名实体识别 识别自然语言文本中具有特定意义的实体(人、地机构、作品等)
    词性标注 为自然语言文本中的每一个词汇赋予一个词性(名词、动词、形容词等)
    依存句法分析 自动分析句子中的句法成分(主语、谓语、宾语等)
    词向量与语义相似度 依托全网海量数据和深度神经网络技术实现对词汇的向量化表示,并据此实现了词汇的语义相似度计算
    文本语义相似度 依托全网海量数据和深度神经网络技术实现对词汇的向量化表示,实现文本间的语义相似度计算的能力
    篇章分析 分析篇章及文本的内在结构,进而分析文本的情感倾向,提取评论性观点,并生成反应文本关键信息的标签与摘要
    机器翻译技术 利用计算机将一种自然语言(源语言)转换为另一种自然语言(目标语言)

    自然语言处理难点

    1. 单词的边界界定

    在口语中,词与词之间通常是连贯的,而界定字词边界通常使用的办法是取用能让给定的上下文最为通顺且在文法上无误的一种最佳组合。在书写上,汉语也没有词与词之间的边界。

    2. 词义的消歧

    许多字词不单只有一个意思,因而我们必须选出使句意最为通顺的解释。

    3. 句法的模糊性

    自然语言的文法通常是模棱两可的,针对一个句子通常可能会剖析(Parse)出多棵剖析树(Parse Tree),而我们必须要仰赖语意及前后文的信息才能在其中选择一棵最为适合的剖析树。

    4. 有瑕疵的或不规范的输入

    例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。

    5. 语言行为与计划

    句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程上一年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。

    相关学习链接

    https://www.bilibili.com/video/av27557638
    https://baijiahao.baidu.com/s?id=1617804790284517552&wfr=spider&for=pc

    展开全文
  • 自然语言处理(NLP)学习路线总结

    万次阅读 多人点赞 2019-03-20 21:01:53
    自然语言处理概述 自然语言处理入门基础 自然语言处理的主要技术范畴 自然语言处理基本点 特征处理 模型选择 NLP常用工具 NLP语言模型 快速入门NLP方法 自然语言处理...
  • 自然语言处理定义: 自然语言处理是一门计算机科学、人工智能以及语言学的交叉学科。虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分。这个星球上有许多生物拥有超过人类的...
  • 自然语言处理简介

    千次阅读 2018-01-08 20:29:13
    自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。(百度百科定义)...
  • [NLP自然语言处理]谷歌BERT模型深度解析

    万次阅读 多人点赞 2018-10-15 17:49:18
    BERT目前已经刷新的11项自然语言处理任务的最新记录包括:将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进率5.6%),将SQuAD v1.1问答测试F1得分纪录刷新为93.2分(绝对提升1.5分),...
  • 什么是自然语言处理自然语言处理(NLP)是指机器理解并解释人类写作、说话方式的能力。 NLP的目标是让计算机/机器在理解语言上像人类一样智能。最终目标是弥补人类交流(自然语言)和计算机理解(机器语言)之间...
  • 自然语言处理NLP概述

    千次阅读 2018-01-04 21:39:10
    自然语言处理NLP概述 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 自然语言处理(Natural language processing,NLP)是计算机和人类语言之间的关系纽带。更具体地说,自然语言处理是计算机对...
  • 自然语言处理综述

    千次阅读 2018-12-25 11:08:16
    本文从两篇论文出发先简要介绍了自然语言处理的基本分类和基本概念,再向读者展示了深度学习中的 NLP。这两篇论文都是很好的综述性入门论文,希望详细了解自然语言处理的读者可以进一步阅读这两篇论文。 第一部分...
  • 1、自然语言处理圣经---《自然语言处理综论》2、视频课程《深度学习与自然语言处理-2018》3、Natural Language Processing (NLP)4、吴恩达经典课程 - Machine Learning —Coursera5、斯坦福 Natural Language ...
  • 大家好,今天开始和大家分享,我在自然语言处理(Natural Language Processing,NLP)的一些学习经验和心得体会。 随着人工智能的快速发展,自然语言处理和机器学习技术的应用愈加广泛。为使大家对该领域整体概况有...
  • 自然语言处理(NLP)入门

    万次阅读 多人点赞 2017-11-21 20:32:26
    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。什么是NLP?简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序...
  • 自然语言处理书籍

    千次阅读 2016-07-05 21:32:48
    书籍这里推荐一批学习自然语言处理相关的书籍,当然,不止是自然语言处理,国内的书籍相对比较便宜,值得购买。 1、《自然语言处理综论》,我当年的入门书,不过翻译的时第一版,英文名《Speech and Language ...
  • 本博客为《自然语言处理实战课程》---- 第一课:自然语言处理简介 讲稿 文章大纲本节课程导览1.自然语言处理(NLP)简介1.1 基础技术1.2 NLP 核心技术1.3 NLP+(高端技术)1.4 课程涵盖的主要内容总揽2.知名NLP服务...
  • 自然语言处理

    千次阅读 2017-08-26 09:50:00
    摘自百度百科 自然语言 自然语言通常是指一种自然地随文化演化的语言。英语、汉语、日语为自然语言的例子,而世界语则为...这一种用法可见于自然语言处理一词中。自然语言是人类交流和思维的主要工具。 自然语言是人
  • 自然语言生成/总结 (2004) ROUGE: A Package for Automatic Evaluation of Summaries ???? Introduces ROUGE, an evaluation metric for summarization that is used to this day on a variety of sequence ...
  • 基于规则的自然语言处理自然语言处理刚开始发展的时候,
  • 汉语自然语言处理工具包下载

    万次阅读 2017-07-03 15:22:47
    Python Windows10 汉语自然语言处理基本组件: 20170703 2018/01/16:Github长期更新,Windows,Linux通用
  • 自然语言处理十大应用

    千次阅读 2020-07-16 12:56:14
    自然语言处理是数据科学领域最热门的课题之一。公司在这一领域投入大量资金进行研究。每个人都在努力了解自然语言处理及其应用,并以此为生。 你知道为什么吗? 因为仅仅在短短几年的时间里,自然语言处理已经...
  • 一、什么是自然语言处理(NLP)   首先先了解一下什么是自然语言,自然语言是人类社会发展过程中自然产生的语言,是最能体现人类智慧和文明的产物,也是大猩猩与人的区别(2019斯坦福cs224n,lesson1)。它是一种...
  • 自然语言处理实战——LSTM情感分析

    千人学习 2018-06-22 16:26:12
    自然语言处理实战视频教程,自然语言处理中重要的算法,词向量模型。本课程从语言模型入手,详解词向量构造原理与求解算法。理论与实战结合, 基于深度学习主流框架Tensorflow实例演示如何用深度学习来进行文本分类...
  • 自然语言处理入门读物

    千次阅读 2016-12-13 19:23:31
    自然语言处理入门读物本文目前研二,已经接触自然语言处理有一年的时间(半路出家),下面写一点自己关于自然语言处理的心得(纯属个人见解),先从入门学习开始写吧。书籍-理论篇书籍是人类进步的阶梯,这个一点不...
  • NPL自然语言处理

    千次阅读 2019-09-08 14:34:24
    一、自然语言处理 自然语言处理(natural language processing,NLP)也称自然语言理解(natural language understanding,NLU),从人工智能研发的一开始,它就作为这一学科的重要研究内容探索人类理解自然语言这一...
  • 自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少。Python语言在做NLP方面有较明显的优势。之前国外有《Natural Language Process with Python》,国内热心网友将其翻译为中文版。从这个角度讲,...
  • 自然语言处理(NLP)简介

    千次阅读 多人点赞 2020-05-30 00:00:29
    简单地说,自然语言处理就是用计算机来处理、理解以及运用人类语言(如中文、英文等),它属于人工智能的一个分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学。由于自然语言是人类区别于其他动物的根本...
  • 自然语言处理专题

    千次阅读 多人点赞 2019-01-21 11:49:28
    NLP,全名 Natural Language Processing(自然语言处理)。从 1949 年的机器翻译设计方案到如今比尔盖茨认为“自然语言理解是人工智能皇冠上的明珠” ,NLP 成为了人工智能领域的重要战略目标。有读者曾留言问道...
  • 自然语言处理相关书籍

    千次阅读 2017-05-30 18:37:54
    这里推荐一批学习自然语言处理相关的书籍,当然,不止是自然语言处理,国内的书籍相对比较便宜,值得购买。 1、《自然语言处理综论》,当年的入门书,不过翻译的是第一版,英文名《Speech and Language ...
  • 自然语言处理实战入门

    千人学习 2019-03-15 15:21:29
    随着人工智能的快速发展,自然语言处理和机器学习技术的应用愈加广泛。要想快速入门这些前沿技术总是存在着各种各样的困难,本教程力求为同学们对该领域整体概况有一个明晰的认识,并选择网络爬虫,汉语分词,可视化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 358,849
精华内容 143,539
关键字:

属于自然语言处理