nlp自然语言处理_中文信息发展处理报告(自然语言处理nlp的内容) - CSDN
精华内容
参与话题
  • 从零开始自然语言处理

    千人学习 2020-07-22 15:48:45
    本课程隶属于自然语言处理(NLP)实战系列。自然语言处理(NLP)是数据科学里的一个分支,它的主要覆盖的内容是:以一种智能与高效的方式,对文本数据进行系统化分析、理解与信息提取的过程。通过使用NLP以及它的组件,...
  • 自然语言处理(NLP)入门

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

    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。

    什么是NLP?

    简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。

    这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。

    这并不是NLP能做的所有事情。

    NLP实现

    搜索引擎: 比如谷歌,Yahoo等。谷歌搜索引擎知道你是一个技术人员,所以它显示与技术相关的结果;

    社交网站推送:比如Facebook News Feed。如果News Feed算法知道你的兴趣是自然语言处理,就会显示相关的广告和帖子。

    语音引擎:比如Apple的Siri。

    垃圾邮件过滤:如谷歌垃圾邮件过滤器。和普通垃圾邮件过滤不同,它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件。

    NLP库

    下面是一些开源的自然语言处理库(NLP):

    Natural language toolkit (NLTK);
    Apache OpenNLP;
    Stanford NLP suite;
    Gate NLP library

    其中自然语言工具包(NLTK)是最受欢迎的自然语言处理库(NLP),它是用Python编写的,而且背后有非常强大的社区支持。

    NLTK也很容易上手,实际上,它是最简单的自然语言处理(NLP)库。

    在这个NLP教程中,我们将使用Python NLTK库。

    安装 NLTK

    如果您使用的是Windows/Linux/Mac,您可以使用pip安装NLTK:

    pip install nltk

    打开python终端导入NLTK检查NLTK是否正确安装:

    import nltk

    如果一切顺利,这意味着您已经成功地安装了NLTK库。首次安装了NLTK,需要通过运行以下代码来安装NLTK扩展包:

    import nltk
    
    nltk.download()

    这将弹出NLTK 下载窗口来选择需要安装哪些包:
    这里写图片描述
    您可以安装所有的包,因为它们的大小都很小,所以没有什么问题。

    使用Python Tokenize文本

    首先,我们将抓取一个web页面内容,然后分析文本了解页面的内容。

    我们将使用urllib模块来抓取web页面:

    import urllib.request
    
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    print (html)

    从打印结果中可以看到,结果包含许多需要清理的HTML标签。

    然后BeautifulSoup模块来清洗这样的文字:

    from bs4 import BeautifulSoup
    
    import urllib.request
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    soup = BeautifulSoup(html,"html5lib")

    这需要安装html5lib模块

    text = soup.get_text(strip=True)
    print (text)

    现在我们从抓取的网页中得到了一个干净的文本。

    下一步,将文本转换为tokens,像这样:

    from bs4 import BeautifulSoup
    import urllib.request
    
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    soup = BeautifulSoup(html,"html5lib")
    text = soup.get_text(strip=True)
    tokens = text.split()
    print (tokens)

    统计词频

    text已经处理完毕了,现在使用Python NLTK统计token的频率分布。

    可以通过调用NLTK中的FreqDist()方法实现:

    from bs4 import BeautifulSoup
    import urllib.request
    import nltk
    
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    soup = BeautifulSoup(html,"html5lib")
    text = soup.get_text(strip=True)
    tokens = text.split()
    freq = nltk.FreqDist(tokens)
    for key,val in freq.items():
        print (str(key) + ':' + str(val))
    

    如果搜索输出结果,可以发现最常见的token是PHP。

    您可以调用plot函数做出频率分布图:

    freq.plot(20, cumulative=False)
    # 需要安装matplotlib库

    这里写图片描述

    这上面这些单词。比如of,a,an等等,这些词都属于停用词。

    一般来说,停用词应该删除,防止它们影响分析结果。

    处理停用词

    NLTK自带了许多种语言的停用词列表,如果你获取英文停用词:

    from nltk.corpus import stopwords
    
    stopwords.words('english')

    现在,修改下代码,在绘图之前清除一些无效的token:

    clean_tokens = list()
    sr = stopwords.words('english')
    for token in tokens:
        if token not in sr:
            clean_tokens.append(token)

    最终的代码应该是这样的:

    from bs4 import BeautifulSoup
    import urllib.request
    import nltk
    from nltk.corpus import stopwords
    
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    soup = BeautifulSoup(html,"html5lib")
    text = soup.get_text(strip=True)
    tokens = text.split()
    clean_tokens = list()
    sr = stopwords.words('english')
    for token in tokens:
        if not token in sr:
            clean_tokens.append(token)
    freq = nltk.FreqDist(clean_tokens)
    for key,val in freq.items():
        print (str(key) + ':' + str(val))

    现在再做一次词频统计图,效果会比之前好些,因为剔除了停用词:

    freq.plot(20,cumulative=False)

    这里写图片描述

    使用NLTK Tokenize文本

    在之前我们用split方法将文本分割成tokens,现在我们使用NLTK来Tokenize文本。

    文本没有Tokenize之前是无法处理的,所以对文本进行Tokenize非常重要的。token化过程意味着将大的部件分割为小部件。

    你可以将段落tokenize成句子,将句子tokenize成单个词,NLTK分别提供了句子tokenizer和单词tokenizer。

    假如有这样这段文本:

    Hello Adam, how are you? I hope everything is going well. Today is a good day, see you dude

    使用句子tokenizer将文本tokenize成句子:

    from nltk.tokenize import sent_tokenize
    
    mytext = "Hello Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(sent_tokenize(mytext))

    输出如下:

    ['Hello Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

    这是你可能会想,这也太简单了,不需要使用NLTK的tokenizer都可以,直接使用正则表达式来拆分句子就行,因为每个句子都有标点和空格。

    那么再来看下面的文本:

    Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude.

    这样如果使用标点符号拆分,Hello Mr将会被认为是一个句子,如果使用NLTK:

    from nltk.tokenize import sent_tokenize
    
    mytext = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(sent_tokenize(mytext))

    输出如下:

    ['Hello Mr. Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

    这才是正确的拆分。

    接下来试试单词tokenizer:

    from nltk.tokenize import word_tokenize
    
    mytext = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(word_tokenize(mytext))

    输出如下:

    ['Hello', 'Mr.', 'Adam', ',', 'how', 'are', 'you', '?', 'I', 'hope', 'everything', 'is', 'going', 'well', '.', 'Today', 'is', 'a', 'good', 'day', ',', 'see', 'you', 'dude', '.']

    Mr.这个词也没有被分开。NLTK使用的是punkt模块的PunktSentenceTokenizer,它是NLTK.tokenize的一部分。而且这个tokenizer经过训练,可以适用于多种语言。

    非英文Tokenize

    Tokenize时可以指定语言:

    from nltk.tokenize import sent_tokenize
    
    mytext = "Bonjour M. Adam, comment allez-vous? J'espère que tout va bien. Aujourd'hui est un bon jour."
    print(sent_tokenize(mytext,"french"))

    输出结果如下:

    ['Bonjour M. Adam, comment allez-vous?', "J'espère que tout va bien.", "Aujourd'hui est un bon jour."]

    同义词处理

    使用nltk.download()安装界面,其中一个包是WordNet。

    WordNet是一个为自然语言处理而建立的数据库。它包括一些同义词组和一些简短的定义。

    您可以这样获取某个给定单词的定义和示例:

    from nltk.corpus import wordnet
    
    syn = wordnet.synsets("pain")
    print(syn[0].definition())
    print(syn[0].examples())

    输出结果是:

    a symptom of some physical hurt or disorder
    ['the patient developed severe pain and distension']

    WordNet包含了很多定义:

    from nltk.corpus import wordnet
    
    syn = wordnet.synsets("NLP")
    print(syn[0].definition())
    syn = wordnet.synsets("Python")
    print(syn[0].definition())

    结果如下:

    the branch of information science that deals with natural language information
    large Old World boas
    

    可以像这样使用WordNet来获取同义词:

    from nltk.corpus import wordnet
    
    synonyms = []
    for syn in wordnet.synsets('Computer'):
        for lemma in syn.lemmas():
            synonyms.append(lemma.name())
    print(synonyms)

    输出:

    ['computer', 'computing_machine', 'computing_device', 'data_processor', 'electronic_computer', 'information_processing_system', 'calculator', 'reckoner', 'figurer', 'estimator', 'computer']

    反义词处理

    也可以用同样的方法得到反义词:

    from nltk.corpus import wordnet
    
    antonyms = []
    for syn in wordnet.synsets("small"):
        for l in syn.lemmas():
            if l.antonyms():
                antonyms.append(l.antonyms()[0].name())
    print(antonyms)
    

    输出:

    ['large', 'big', 'big']

    词干提取

    语言形态学和信息检索里,词干提取是去除词缀得到词根的过程,例如working的词干为work。

    搜索引擎在索引页面时就会使用这种技术,所以很多人为相同的单词写出不同的版本。

    有很多种算法可以避免这种情况,最常见的是波特词干算法。NLTK有一个名为PorterStemmer的类,就是这个算法的实现:

    from nltk.stem import PorterStemmer
    
    stemmer = PorterStemmer()
    print(stemmer.stem('working'))
    print(stemmer.stem('worked'))

    输出结果是:

    work
    work

    还有其他的一些词干提取算法,比如 Lancaster词干算法。

    非英文词干提取

    除了英文之外,SnowballStemmer还支持13种语言。

    支持的语言:

    from nltk.stem import SnowballStemmer
    
    print(SnowballStemmer.languages)
    
    'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish'

    你可以使用SnowballStemmer类的stem函数来提取像这样的非英文单词:

    from nltk.stem import SnowballStemmer
    
    french_stemmer = SnowballStemmer('french')
    
    print(french_stemmer.stem("French word"))

    单词变体还原

    单词变体还原类似于词干,但不同的是,变体还原的结果是一个真实的单词。不同于词干,当你试图提取某些词时,它会产生类似的词:

    from nltk.stem import PorterStemmer
    
    stemmer = PorterStemmer()
    
    print(stemmer.stem('increases'))

    结果:

    increas

    现在,如果用NLTK的WordNet来对同一个单词进行变体还原,才是正确的结果:

    from nltk.stem import WordNetLemmatizer
    
    lemmatizer = WordNetLemmatizer()
    
    print(lemmatizer.lemmatize('increases'))

    结果:

    increase

    结果可能会是一个同义词或同一个意思的不同单词。

    有时候将一个单词做变体还原时,总是得到相同的词。

    这是因为语言的默认部分是名词。要得到动词,可以这样指定:

    from nltk.stem import WordNetLemmatizer
    
    lemmatizer = WordNetLemmatizer()
    
    print(lemmatizer.lemmatize('playing', pos="v"))

    结果:

    play

    实际上,这也是一种很好的文本压缩方式,最终得到文本只有原先的50%到60%。

    结果还可以是动词(v)、名词(n)、形容词(a)或副词(r):

    from nltk.stem import WordNetLemmatizer
    
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('playing', pos="v"))
    print(lemmatizer.lemmatize('playing', pos="n"))
    print(lemmatizer.lemmatize('playing', pos="a"))
    print(lemmatizer.lemmatize('playing', pos="r"))
    

    输出:

    play
    playing
    playing
    playing
    

    词干和变体的区别

    通过下面例子来观察:

    from nltk.stem import WordNetLemmatizer
    from nltk.stem import PorterStemmer
    
    stemmer = PorterStemmer()
    lemmatizer = WordNetLemmatizer()
    print(stemmer.stem('stones'))
    print(stemmer.stem('speaking'))
    print(stemmer.stem('bedroom'))
    print(stemmer.stem('jokes'))
    print(stemmer.stem('lisa'))
    print(stemmer.stem('purple'))
    print('----------------------')
    print(lemmatizer.lemmatize('stones'))
    print(lemmatizer.lemmatize('speaking'))
    print(lemmatizer.lemmatize('bedroom'))
    print(lemmatizer.lemmatize('jokes'))
    print(lemmatizer.lemmatize('lisa'))
    print(lemmatizer.lemmatize('purple'))
    

    输出:

    stone
    speak
    bedroom
    joke
    lisa

    purpl

    stone
    speaking
    bedroom
    joke
    lisa
    purple

    词干提取不会考虑语境,这也是为什么词干提取比变体还原快且准确度低的原因。

    个人认为,变体还原比词干提取更好。单词变体还原返回一个真实的单词,即使它不是同一个单词,也是同义词,但至少它是一个真实存在的单词。

    如果你只关心速度,不在意准确度,这时你可以选用词干提取。

    在此NLP教程中讨论的所有步骤都只是文本预处理。在以后的文章中,将会使用Python NLTK来实现文本分析。

    我已经尽量使文章通俗易懂。希望能对你有所帮助。

    展开全文
  • NLP自然语言处理简述

    千次阅读 2018-09-16 20:31:11
    什么是自然语言处理自然语言处理是研究在人与人交际中以及人与计算机交际中的语言问题的一门学科。自然语言处理要研制表示语言能力(linguistic competence)和语言应用(linguistic performance)的模型,建立...

    什么是自然语言处理?

    自然语言处理是研究在人与人交际中以及人与计算机交际中的语言问题的一门学科。自然语言处理要研制表示语言能力(linguistic competence)和语言应用(linguistic performance)的模型,建立计算框架来实现这样的语言模型,提出相应的方法来不断完善这样的语言模型,根据这样的语言模型设计各种实用系统,并探讨这些实用系统评测技术。

    根据这个定义,自然语言处理要研究 “在人与人交际中以及人与计算机交际中的语言问题”,既要研究语言,又要研究计算机,因此,它是一门交叉学科,它涉及语言学、计算机科学、数学、自动化等不同学科。

    以宗成庆所著《统计自然语言处理》为例,其在统计自然语言处理的理论方面,首先介绍相关的基础知识,例如概率论和信息论的基本概念、形式语言和自动机的基本概念。由于统计自然语言处理是以语料库和词汇知识库为语言资源的,因此接下来本书讲解了语料库和词汇知识库的基本原理。语言模型和隐马尔可夫模型是统计自然语言处理的基础理论,在统计自然语言处理中具有重要地位。因此本书介绍了语言模型的基本概念,并讨论了各种平滑方法和自适应方法,又介绍了隐马尔可夫模型和参数估计的方法。接着,本书分别论述了在词法分析与词性标注中的统计方法,在句法分析中的统计方法,在词汇语义中的统计方法。

    基于统计的自然语言处理的理论基础是哲学中的经验主义,基于规则的自然原因处理的理论基础是哲学中的理性主义。说到底,这个问题是关于如何处理经验主义和理论主义关系的问题。

    自然语言处理研究的内容?

    1. 机器翻译(machine translation,MT):实现一种语言到另一种语言的自动翻译
    2. 自动文摘(automatic abstracting):将文档的主要内容和含义自动归纳、提炼,形成摘要
    3. 信息检索(information retrieval):从海量文档中找到符合用户需要的相关文档
    4. 文档分类(document categorization/classification):对大量的文档按照一定的分类标准(例如,根据主题或内容划分等)实现自动归类。
      文档分类也称文本分类(text categorization/classification)或信息分类(information categorization/classification),近年来,情感分类(sentiment classification)或称文本倾向性识别(text orientation identification)成为本领域研究的热点。
    5. 问答系统(question-answering system):对用户提出的问题的理解,利用自动推理等手段,在有关知识资源中自动求解答案并做出相应的回答。
    6. 信息过滤(information filtering):自动识别和过滤那些满足特定条件的文档信息。
    7. 信息抽取(information extraction):指从文本中抽取出特定的事件(event)或事实信息,有时候又称事件抽取(event extraction)。
      信息抽取与信息检索不同,信息抽取直接从自然语言文本中抽取信息框架,一般是用户感兴趣的事实信息,而信息检索主要是从海量文档集合中找到与用户需求(一般通过关键词表达)相关的文档列表,而信息抽取则是希望直接从文本中获得用户感兴趣的事实信息。当然,信息抽取与信息检索也有密切的关系,信息抽取系统通常以信息检索系统(如文本过滤)的输出作为输入,而信息抽取技术又可以用来提高信息检索系统的性能。
      信息抽取与问答系统也有密切的联系。一般而言,信息抽取系统要抽取的信息是明定的、事先规定好的,系统只是将抽取出来的事实信息填充在给定的框架槽里,而问答系统面对的用户问题往往是随机的、不确定的,而且系统需要将问题的答案生成自然语言句子,通过自然、规范的语句准确地表达出来,使系统与用户之间形成一问一答的交互过程。
    8. 文本挖掘(text mining):从文本(多指网络文本)中获取高质量信息的过程。
      文本挖掘技术一般涉及文本分类、文本聚类(text clustering)、概念或实体抽取(concept/entity extraction)、粒度分类、情感分析(sentiment analysis)、自动文摘和实体关系建模(entity relation modeling)等多种技术。
    9. 舆情分析(public opinion analysis):舆情是较多群众关于社会中各种现象、问题所表达的信念、态度、意见和情绪等等表现的总和。显然,舆情分析是一项十分复杂、涉及问题众多的综合性技术,它涉及网络文本挖掘、观点(意见)挖掘(opinion mining)等各方面的问题。
    10. 隐喻计算(metaphorical computation):研究自然语言语句或篇章中隐喻修辞的理解方法。
    11. 文字编辑和自动校对(automatic proofreading):对文字拼写、用词,甚至语法、文档格式等进行自动检查、校对和编排。
    12. 作文自动评分:对作文质量和写作水平进行自动评价和打分
    13. 语音识别(speech recognition):将输入的语音信号识别转换成书面语表示。
    14. 文语转换(text-to-speech conversion):将书面文本自动转换成对应的语音表征,又称语音合成(speech synthesis)。
    15. 说话人识别/认证/验证(speaker recognition/identification/verification):对说话人的言语样本做声学分析,依此推断(确定或验证)说话人的身份。

    自然语言处理涉及的几个层次?

    如果撇开语音学研究的层面,自然语言处理研究的问题一般会涉及自然语言的形态学、语法学、语义学和语用学等几个层次。

    形态学(morphology):形态学(又称“词汇形态学”或“词法”)是语言学的一个分支,研究词的内部结构,包括屈折变化和构词法两个部分。由于词具有语音特征、句法特征和语义特征,形态学处于音位学、句法学和语义学的结合部位,所以形态学是每个语言学家都要关注的一门学科。

    语法学(syntax):研究句子结构成分之间的相互关系和组成句子序列的规则。其关注的中心是:为什么一句话可以这么说,也可以那么说?

    语义学(semantics):语义学的研究对象是语言的各级单位(词素、词、词组、句子、句子群、整段整篇的话语和文章,乃至整个著作)的意义,以及语义与语音、语法、修辞、文字、语境、哲学思想、社会环境、个人修养的关系,等等。其重点在探明符号与符号所指的对象之间的关系,从而指导人们的言语活动。它所关注的重点是:这个语言单位到底说了什么?

    语用学(pragmatics):是现代语言学用来指从使用者的角度研究语言,特别是使用者所作的选择、他们在社会互动中所受的制约、他们的语言使用对信递活动中其他参与者的影响。目前还缺乏一种连贯的语用学理论,主要是因为它必须说明的问题是多方面的,包括直指、会话隐含、预设、言语行为、话语结构等。部分原因是由于这一学科的范围太宽泛,因此出现多种不一致的定义。从狭隘的语言学观点看,语用学处理的是语言结构中有形式体现的那些语境。相反,语用学最宽泛的定义是研究语义学未能涵盖的那些意义。因此,语用学可以是集中在句子层次上的语用研究,也可以是超出句子,对语言的实际使用情况的调查研究,甚至与会话分析、语篇分析相结合,研究在不同上下文中的语句应用,以及上下文对语句理解所产生的影响。其关注的重点在于:为什么在特定的上下文中要说这句话?

    在实际问题的研究中,上述几方面的问题,尤其是语义学和语用学的问题往往是相互交织在一起的。语法结构的研究离不开对词汇形态的分析,句子语义的分析也离不开对词汇语义的分析、语法结构和语用的分析,它们之间往往互为前提。

    自然语言处理面临的困难?

    根据上面的介绍,自然语言处理涉及形态学、语法学、语义学和语用学等几个层面的问题,其最终应用目标包括机器翻译、信息检索、问答系统等非常广泛的应用领域。其实,如果进一步归结,实现所有这些应用目标最终需要解决的关键问题就是歧义消解(disambiguation)问题和未知语言现象的处理问题。

    一方面,自然语言中大量存在的歧义现象,无论在词法层次、句法层次,还是在语义层次和语用层次,无论哪类语言单位,其歧义性始终都是困扰人们实现应用目标的一个根本问题。因此,如何面向不同的应用目标,针对不同语言单位的特点,研究歧义消解和未知语言现象的处理策略及实现方法,就成了自然语言处理面临的核心问题。

    另一方面,对于一个特定系统来说,总是有可能遇到未知词汇、未知结构等各种意想不到的情况,而且每一种语言又都随着社会的发展而动态变化着,新的词汇(尤其是一些新的人名、地名、组织机构名和专用词汇)、新的词义、新的词汇用法(新词类),甚至新的句子结构都在不断出现,尤其在口语对话或计算机网络对话、微博、博客等中,稀奇古怪的词语和话语结构更是司空见惯。因此,一个实用的自然语言处理系统必须具有较好的未知语言现象的处理能力,而且有足够的对各种可能输入形式的容错能力,即我们通常所说的系统的鲁棒性(robustness)问题。当然,对于机器翻译、信息检索、文本分类等特定的自然语言处理任务来说,还存在若干与任务相关的其他问题,诸如如何处理不同语言的差异、如何提取文本特征等。

    总而言之,目前的自然语言处理研究面临着若干问题的困扰,既有数学模型不够奏效、有些算法的复杂度过高、鲁棒性太差等理论问题,也有数据资源匮乏、覆盖率低、知识表示困难等知识资源方面的问题,当然,还有实现技术和系统集成方法不够先进等方面的问题。

    展开全文
  • Ai工程师-自然语言处理实战课程

    千人学习 2020-06-24 14:22:02
    AI工程师-自然语言处理实战课程旨在用最接地气的方式讲解复杂的算法原理,基于真实数据集,通过实际案例进行项目实战。整个体系内容包括200+课时,20个项目实战,完美覆盖当下热门技术与经典框架实战。学习路线主要...
  • 一文读懂自然语言处理NLP

    万次阅读 2017-11-30 09:44:32
    前言 ...基于统计的自然语言处理是哲学中的经验主义,基于规则的自然语言处理是哲学中的理性主义。在哲学领域中经验主义与理性主义的斗争一直是此消彼长,这种矛盾与斗争也反映在具体科学上,如自然

    前言


    自然语言处理是文本挖掘的研究领域之一,是人工智能和语言学领域的分支学科。在此领域中探讨如何处理及运用自然语言。


    对于自然语言处理的发展历程,可以从哲学中的经验主义理性主义说起。基于统计的自然语言处理是哲学中的经验主义,基于规则的自然语言处理是哲学中的理性主义。在哲学领域中经验主义理性主义的斗争一直是此消彼长,这种矛盾与斗争也反映在具体科学上,如自然语言处理。

    早期的自然语言处理具有鲜明的经验主义色彩。如 1913 年马尔科夫提出马尔科夫随机过程与马尔科夫模型的基础就是“手工查频”,具体说就是统计了《欧根·奥涅金》长诗中元音与辅音出现的频度;1948 年香农把离散马尔科夫的概率模型应用于语言的自动机,同时采用手工方法统计英语字母的频率。

    然而这种经验主义到了乔姆斯基时出现了转变。

    1956 年乔姆斯基借鉴香农的工作,把有限状态机用作刻画语法的工具,建立了自然语言的有限状态模型,具体来说就是用“代数”和“集合”将语言转化为符号序列,建立了一大堆有关语法的数学模型。这些工作非常伟大,为自然语言和形式语言找到了一种统一的数学描述理论,一个叫做“形式语言理论”的新领域诞生了。这个时代,“经验主义”被全盘否定,“理性主义”算是完胜。

    然而在 20 世纪 50 年代末到 60 年代中期,经验主义东山再起了。多数学者普遍认为只有详尽的历史语料才能带来靠谱的结论。于是一些比较著名的理论与算法就诞生了,如贝叶斯方法(Bayesian Method)、隐马尔可夫、最大熵、Viterbi 算法、支持向量机之类。世界上第一个联机语料库也是在那个时候的 Brown University 诞生的。


    但是总的来说,这个时代依然是基于规则的理性主义的天下,经验主义虽然取得了不俗的成就,却依然没有受到太大的重视。但是金子总会发光的。

    90 年代以来,基于统计的自然语言处理就开始大放异彩了。首先是在机器翻译领域取得了突破,因为引入了许多基于语料库的方法(哈钦斯,英国著名学者)。1990 年在芬兰赫尔辛基举办的第 13 届国际计算语言学会议确定的主题是“处理大规模真实文本的理论、方法与工具”,大家的重心开始转向大规模真实文本了,传统的仅仅基于规则的自然语言处理显然力不从心了。学者们认为,大规模语料至少是对基于规则方法有效的补充。


    到了 1994~1999 年,经验主义就开始空前繁荣了。如句法剖析、词类标注、参照消解、话语处理的算法几乎把“概率”与“数据”作为标准方法,成为了自然语言处理的主流。 


    总之,理性主义在自然语言处理的发展史上是有重要地位的,也辉煌了几十年,历史事物常常是此消彼长的,至于谁好谁坏,不是固定的,取决于不同时代的不同历史任务。总的来说,基于规则的理性主义在这个时代被提及得比较少,用的也比较少,主要是由于以下几个缺陷:


    • 鲁棒性差,过于严格的规则导致对非本质错误的零容忍(这一点在最近的一些新的剖析技术上有所改善);


    • 研究强度大,泛化能力差。一个研究要语言学家、语音学家和各种领域的专家配合,在当前大规模文本处理的时间、资源要求下太不划算。且机器学习的方法很难应用,难以普及;


    • 实践性差。基于统计的经验主义方法可以根据数据集不断对参数进行优化,而基于规则的方法就不可以,这在当前数据量巨大的情况下,影响是致命的,因为前者常常可以通过增大训练集来获得更好的效果,后者则死板许多,结果往往不尽人意。


    但理性主义还是有很多优点的,同样经验主义也有很多缺陷,算是各有所长、各有所短。不同学科有不同学科的研究角度,只能说某些角度在某个特定的历史时期对提高生产力“更有用”,所以重视的人更多。但“有用”不代表胜利,暂时的“无用”更不能说是科学层面上的“失败”。尤其是在当前中文自然语言处理发展还不甚成熟的时期,私以为基于统计的方法在很多方面并不完美,“理性主义”的作用空间还很大,需要更多的人去关注、助力。

    ——《统计自然语言处理》宗成庆


    自然语言处理涉及的范畴如下(维基百科):


    • 中文自动分词(Chinese word segmentation)

    • 词性标注(Part-of-speech tagging)

    • 句法分析(Parsing)

    • 自然语言生成(Natural language generation)

    • 文本分类(Text categorization)

    • 信息检索(Information retrieval)

    • 信息抽取(Information extraction)

    • 文字校对(Text-proofing)

    • 问答系统(Question answering)

    • 机器翻译(Machine translation)

    • 自动摘要(Automatic summarization)


    本文针对其中几个主要领域的研究现状和进展,通过论文、博客等资料,结合自身的学习和实践经历进行浅显地介绍。由于个人实践经验不足,除中文分词、自动文摘、文本分类、情感分析和话题模型方面进行过实际业务的实践,其他方面经验欠缺,若有不当之处,欢迎童鞋们批评指正!

      

    目录


     

    一. 中文分词


    中文分词主要包括词的歧义切分和未登录词识别,主要可以分为基于词典和基于统计的方法,最新的方法是多种方法的混合。从目前汉语分词研究的总体水平看,F1 值已经达到 95% 左右,主要分词错误是由新词造成的,尤其对领域的适应性较差。下面主要介绍一下中文分词存在的主要问题和分词方法。


    1. 问题


    1.1 歧义切分


    切分歧义处理包括两部分内容:


    • 切分歧义的检测;


    • 切分歧义的消解。


    这两部分在逻辑关系上可分成两个相对独立的步骤。


    • 切分歧义的检测。“最大匹配法”(精确的说法应该叫“最长词优先匹配法”) 是最早出现、同时也是最基本的汉语自动分词方法。依扫描句子的方向,又分正向最大匹配 MM(从左向右)和逆向最大匹配 RMM(从右向左)两种。


    最大匹配法实际上将切分歧义检测与消解这两个过程合二为一,对输入句子给出唯一的切分可能性,并以之为解。从最大匹配法出发导出了“双向最大匹配法”,即 MM+ RMM。双向最大匹配法存在着切分歧义检测盲区。


    针对切分歧义检测,另外两个有价值的工作是“最少分词法”,这种方法歧义检测能力较双向最大匹配法要强些,产生的可能切分个数仅略有增加;和“全切分法”,这种方法穷举所有可能的切分,实现了无盲区的切分歧义检测,但代价是导致大量的切分“垃圾”。


    • 切分歧义的消解。典型的方法包括句法统计和基于记忆的模型。句法统计将自动分词和基于 Markov 链的词性自动标注技术结合起来,利用从人工标注语料库中提取出的词性二元统计规律来消解切分歧义,基于记忆的模型对伪歧义型高频交集型歧义切分,可以把它们的正确(唯一)切分形式预先记录在一张表中,其歧义消解通过直接查表即可实现。


    1.2 未登录词识别


    未登录词大致包含两大类:


    • 新涌现的通用词或专业术语等;


    • 专有名词。如中国人名、外国译名、地名、机构名(泛指机关、团体和其它企事业单位)等。


    前一种未登录词理论上是可预期的,能够人工预先添加到词表中(但这也只是理想状态,在真实环境下并不易做到);后一种未登录词则完全不可预期,无论词表多么庞大,也无法囊括。


    真实文本中(即便是大众通用领域),未登录词对分词精度的影响超过了歧义切分。未登录词处理在实用型分词系统中占的份量举足轻重。


    • 新涌现的通用词或专业术语。对这类未登录词的处理,一般是在大规模语料库的支持下,先由机器根据某种算法自动生成一张候选词表(无监督的机器学习策略),再人工筛选出其中的新词并补充到词表中。


    鉴于经过精加工的千万字、甚至亿字级的汉语分词语料库目前还是水月镜花,所以这个方向上现有的研究无一不以从极大规模生语料库中提炼出的 n 元汉字串之分布(n≥2)为基础。其中汉字之间的结合力通过全局统计量包括互信息、t- 测试差、卡方统计量、字串频等来表示。


    • 专有名词。对专有名词的未登录词的处理,首先依据从各类专有名词库中总结出的统计知识 (如姓氏用字及其频度)和人工归纳出的专有名词的某些结构规则,在输入句子中猜测可能成为专有名词的汉字串并给出其置信度,之后利用对该类专有名词有标识意义的紧邻上下文信息(如称谓),以及全局统计量和局部统计量(局部统计量是相对全局统计量而言的,是指从当前文章得到且其有效范围一般仅限于该文章的统计量,通常为字串频),进行进一步的鉴定。


    已有的工作涉及了四种常见的专有名词:中国人名的识别、外国译名的识别、中国地名的识别及机构名的识别。


    从各家报告的实验结果来看,外国译名的识别效果最好,中国人名次之,中国地名再次之,机构名最差。而任务本身的难度实质上也是遵循这个顺序由小增大。 沈达阳、孙茂松等(1997b)特别强调了局部统计量在未登录词处理中的价值。


    2. 方法


    2.1 基于词典的方法


    在基于词典的方法中,对于给定的词,只有词典中存在的词语能够被识别,其中最受欢迎的方法是最大匹配法(MM),这种方法的效果取决于词典的覆盖度,因此随着新词不断出现,这种方法存在明显的缺点。


    2.2 基于统计的方法


    基于统计的方法由于使用了概率或评分机制而非词典对文本进行分词而被广泛应用。这种方法主要有三个缺点:


    一是这种方法只能识别 OOV(out-of-vocabulary)词而不能识别词的类型,比如只能识别为一串字符串而不能识别出是人名;二是统计方法很难将语言知识融入分词系统,因此对于不符合语言规范的结果需要额外的人工解析;三是在许多现在分词系统中,OOV 词识别通常独立于分词过程。


    二. 词性标注


    词性标注是指为给定句子中的每个词赋予正确的词法标记,给定一个切好词的句子,词性标注的目的是为每一个词赋予一个类别,这个类别称为词性标记(part-of-speech tag),比如,名词(noun)、动词(verb)、形容词(adjective)等。


    它是自然语言处理中重要的和基础的研究课题之一,也是其他许多智能信息处理技术的基础,已被广泛的应用于机器翻译、文字识别、语音识别和信息检索等领域。


    词性标注对于后续的自然语言处理工作是一个非常有用的预处理过程,它的准确程度将直接影响到后续的一系列分析处理任务的效果。 


    长期以来,兼类词的词性歧义消解和未知词的词性识别一直是词性标注领域需要解决的热点问题。当兼类词的词性歧义消解变得困难时,词性的标注就出现了不确定性的问题。而对那些超出了词典收录范围的词语或者新涌现的词语的词性推测,也是一个完整的标注系统所应具备的能力。


    1. 词性标注方法

     

    词性标注是一个非常典型的序列标注问题。最初采用的方法是隐马尔科夫生成式模型, 然后是判别式的最大熵模型、支持向量机模型,目前学术界通常采用结构感知器模型和条件随机场模型。


    近年来,随着深度学习技术的发展,研究者们也提出了很多有效的基于深层神经网络的词性标注方法。


    迄今为止,词性标注主要分为基于规则的和基于统计的方法。


    • 规则方法能准确地描述词性搭配之间的确定现象,但是规则的语言覆盖面有限,庞大的规则库的编写和维护工作则显得过于繁重,并且规则之间的优先级和冲突问题也不容易得到满意的解决。


    • 统计方法从宏观上考虑了词性之间的依存关系,可以覆盖大部分的语言现象,整体上具有较高的正确率和稳定性,不过其对词性搭配确定现象的描述精度却不如规则方法。


    针对这样的情况,如何更好地结合利用统计方法和规则处理手段,使词性标注任务既能够有效地利用语言学家总结的语言规则,又可以充分地发挥统计处理的优势成为了词性标注研究的焦点。


    2. 词性标注研究进展


    • 词性标注和句法分析联合建模:研究者们发现,由于词性标注和句法分析紧密相关,词性标注和句法分析联合建模可以同时显著提高两个任务准确率。


    • 异构数据融合:汉语数据目前存在多个人工标注数据,然而不同数据遵守不同的标注规范,因此称为多源异构数据。近年来,学者们就如何利用多源异构数据提高模型准确率,提出了很多有效的方法,如基于指导特征的方法、基于双序列标注的方法、以及基于神经网络共享表示的方法。


    • 基于深度学习的方法:传统词性标注方法的特征抽取过程主要是将固定上下文窗口的词进行人工组合,而深度学习方法能够自动利用非线性激活函数完成这一目标。进一步,如果结合循环神经网络如双向 LSTM,则抽取到的信息不再受到固定窗口的约束,而是考虑整个句子。


    除此之外,深度学习的另一个优势是初始词向量输入本身已经刻画了词语之间的相似度信息,这对词性标注非常重要。

     

    三. 句法分析


    语言语法的研究有非常悠久的历史,可以追溯到公元前语言学家的研究。不同类型的句法分析体现在句法结构的表示形式不同,实现过程的复杂程度也有所不同。因此,科研人员采用不同的方法构建符合各个语法特点的句法分析系统。其主要分类如下图所示:



    下文主要对句法分析技术方法和研究现状进行总结分析:


    1. 依存句法分析


    依存语法存在一个共同的基本假设:句法结构本质上包含词和词之间的依存(修饰)关系。一个依存关系连接两个词,分别是核心词(head)和依存词(dependent)。依存关系可以细分为不同的类型,表示两个词之间的具体句法关系。


    目前研究主要集中在数据驱动的依存句法分析方法,即在训练实例集合上学习得到依存句法分析器,而不涉及依存语法理论的研究。数据驱动的方法的主要优势在于给定较大规模的训练数据,不需要过多的人工干预,就可以得到比较好的模型。因此,这类方法很容易应用到新领域和新语言环境。


    数据驱动的依存句法分析方法主要有两种主流方法:基于图( graph-based)的分析方法基于转移( transition-based)的分析方法。


    2.1 基于图的依存句法分析方法


    基于图的方法将依存句法分析问题看成从完全有向图中寻找最大生成树的问题。一棵依存树的分值由构成依存树的几种子树的分值累加得到。


    根据依存树分值中包含的子树的复杂度,基于图的依存分析模型可以简单区分为一阶和高阶模型。高阶模型可以使用更加复杂的子树特征,因此分析准确率更高,但是解码算法的效率也会下降。


    基于图的方法通常采用基于动态规划的解码算法,也有一些学者采用柱搜索(beam search)来提高效率。学习特征权重时,通常采用在线训练算法,如平均感知器(averaged perceptron)。


    2.2 基于转移的依存句法分析方法


    基于转移的方法将依存树的构成过程建模为一个动作序列,将依存分析问题转化为寻找最优动作序列的问题。早期,研究者们使用局部分类器(如支持向量机等)决定下一个动作。近年来,研究者们采用全局线性模型来决定下一个动作,一个依存树的分值由其对应的动作序列中每一个动作的分值累加得到。


    特征表示方面,基于转移的方法可以充分利用已形成的子树信息,从而形成丰富的特征,以指导模型决策下一个动作。模型通过贪心搜索或者柱搜索等解码算法找到近似最优的依存树。和基于图的方法类似,基于转移的方法通常也采用在线训练算法学习特征权重。


    2.3 多模型融合的依存句法分析方法


    基于图和基于转移的方法从不同的角度解决问题,各有优势。基于图的模型进行全局搜索但只能利用有限的子树特征,而基于转移的模型搜索空间有限但可以充分利用已构成的子树信息构成丰富的特征。详细比较发现,这两种方法存在不同的错误分布。


    因此,研究者们使用不同的方法融合两种模型的优势,常见的方法有:stacked learning;对多个模型的结果加权后重新解码(re-parsing);从训练语料中多次抽样训练多个模型(bagging)。 


    2. 短语结构句法分析


    分词,词性标注技术一般只需对句子的局部范围进行分析处理,目前已经基本成熟,其标志就是它们已经被成功地用于文本检索、文本分类、信息抽取等应用之中,而句法分析、语义分析技术需要对句子进行全局分析,目前,深层的语言分析技术还没有达到完全实用的程度。


    短语结构句法分析的研究基于上下文无关文法(Context Free Grammar,CFG)。上下文无关文法可以定义为四元组,其中 T 表示终结符的集合(即词的集合),N 表示非终结符的集合(即文法标注和词性标记的集合),S 表示充当句法树根节点的特殊非终结符,而 R 表示文法规则的集合,其中每条文法规则可以表示为 Ni®g ,这里的 g 表示由非终结符与终结符组成的一个序列(允许为空)。


    根据文法规则的来源不同,句法分析器的构建方法总体来说可以分为两大类:


    • 人工书写规则


    • 从数据中自动学习规则


    人工书写规则受限于规则集合的规模:随着书写的规则数量的增多,规则与规则之间的冲突加剧,从而导致继续添加规则变得困难。


    与人工书写规模相比,自动学习规则的方法由于开发周期短和系统健壮性强等特点,加上大规模人工标注数据,比如宾州大学的多语种树库的推动作用,已经成为句法分析中的主流方法。


    而数据驱动的方法又推动了统计方法在句法分析领域中的大量应用。为了在句法分析中引入统计信息,需要将上下文无关文法扩展成为概率上下文无关文法(Probabilistic Context Free Grammar,PCFG),即为每条文法规则指定概率值。


    概率上下文无关文法与非概率化的上下文无关文法相同,仍然表示为四元组,区别在于概率上下文无关文法中的文法规则必须带有概率值。


    获得概率上下文无关文法的最简单的方法是直接从树库中读取规则,利用最大似然估计(Maximum Likelihood Estimation,MLE)计算得到每条规则的概率值。使用该方法得到的文法可以称为简单概率上下文无关文法。在解码阶段,CKY 10 等解码算法就可以利用学习得到的概率上下文无关文法搜索最优句法树。


    虽然基于简单概率上下文无关文法的句法分析器的实现比较简单,但是这类分析器的性能并不能让人满意。


    性能不佳的主要原因在于上下文无关文法采取的独立性假设过强:一条文法规则的选择只与该规则左侧的非终结符有关,而与任何其它上下文信息无关。文法中缺乏其它信息用于规则选择的消歧。因此后继研究工作的出发点大都基于如何弱化上下文无关文法中的隐含独立性假设。


    3. 总结


    分词,词性标注技术一般只需对句子的局部范围进行分析处理,目前已经基本成熟,其标志就是它们已经被成功地用于文本检索、文本分类、信息抽取等应用之中,而句法分析、语义分析技术需要对句子进行全局分析,目前,深层的语言分析技术还没有达到完全实用的程度。


    四. 文本分类


    文本分类是文本挖掘的核心任务,一直以来倍受学术界和工业界的关注。文本分类(Text Classification)的任务是根据给定文档的内容或主题,自动分配预先定义的类别标签。


    对文档进行分类,一般需要经过两个步骤:


    • 文本表示


    • 学习分类


    文本表示是指将无结构化的文本内容转化成结构化的特征向量形式,作为分类模型的输入。在得到文本对应的特征向量后,就可以采用各种分类或聚类模型,根据特征向量训练分类器或进行聚类。因此,文本分类或聚类的主要研究任务和相应关键科学问题如下:


    1. 任务


    1.1 构建文本特征向量


    构建文本特征向量的目的是将计算机无法处理的无结构文本内容转换为计算机能够处理的特征向量形式。文本内容特征向量构建是决定文本分类和聚类性能的重要环节。


    为了根据文本内容生成特征向量,需要首先建立特征空间。其中典型代表是文本词袋(Bag of Words)模型,每个文档被表示为一个特征向量,其特征向量每一维代表一个词项。所有词项构成的向量长度一般可以达到几万甚至几百万的量级。


    这样高维的特征向量表示如果包含大量冗余噪音,会影响后续分类聚类模型的计算效率和效果。


    因此,我们往往需要进行特征选择(Feature Selection)与特征提取(Feature Extraction),选取最具有区分性和表达能力的特征建立特征空间,实现特征空间降维;或者,进行特征转换(Feature Transformation),将高维特征向量映射到低维向量空间。特征选择、提取或转换是构建有效文本特征向量的关键问题。


    1.2 建立分类或聚类模型


    在得到文本特征向量后,我们需要构建分类或聚类模型,根据文本特征向量进行分类聚类


    其中,分类模型旨在学习特征向量与分类标签之间的关联关系,获得最佳的分类效果; 而聚类模型旨在根据特征向量计算文本之间语义相似度,将文本集合划分为若干子集。 分类和聚类是机器学习领域的经典研究问题。


    我们一般可以直接使用经典的模型或算法解决文本分类或聚类问题。例如,对于文本分类,我们可以选用朴素贝叶斯、决策树、k-NN、逻辑回归(Logistic Regression)、支持向量机(Support Vector Machine, SVM)等分类模型。 


    对于文本聚类,我们可以选用 k-means、层次聚类或谱聚类(spectral clustering)等聚类算法。 这些模型算法适用于不同类型的数据而不仅限于文本数据。


    但是,文本分类或聚类会面临许多独特的问题,例如,如何充分利用大量无标注的文本数据,如何实现面向文本的在线分类或聚类模型,如何应对短文本带来的表示稀疏问题,如何实现大规模带层次分类体系的分类功能,如何充分利用文本的序列信息和句法语义信息,如何充分利用外部语言知识库信息,等等。这些问题都是构建文本分类和聚类模型所面临的关键问题。


    2. 模型


    2.1 文本分类模型


    近年来,文本分类模型研究层出不穷,特别是随着深度学习的发展,深度神经网络模型 也在文本分类任务上取得了巨大进展。我们将文本分类模型划分为以下三类:


    • 基于规则的分类模型


    基于规则的分类模型旨在建立一个规则集合来对数据类别进行判断。这些规则可以从训练样本里自动产生,也可以人工定义。给定一个测试样例,我们可以通过判断它是否满足某 些规则的条件,来决定其是否属于该条规则对应的类别。


    典型的基于规则的分类模型包括决策树(Decision Tree)、随机森林(Random Forest)、 RIPPER 算法等。


    • 基于机器学习的分类模型


    典型的机器学习分类模型包括贝叶斯分类器(Naïve Bayes)、线性分类器(逻辑回归)、 支持向量机(Support Vector Machine, SVM)、最大熵分类器等。


    SVM 是这些分类模型中比较有效、使用较为广泛的分类模型。它能够有效克服样本分布不均匀、特征冗余以及过拟合等问题,被广泛应用于不同的分类任务与场景。通过引入核函数,SVM 还能够解决原始特征空间线性不可分的问题。


    除了上述单分类模型,以 Boosting 为代表的分类模型组合方法能够有效地综合多个弱分类模型的分类能力。在给定训练数据集合上同时训练这些弱分类模型,然后通过投票等机制综合多个分类器的预测结果,能够为测试样例预测更准确的类别标签。


    • 基于神经网络的方法


    以人工神经网络为代表的深度学习技术已经在计算机视觉、语音识别等领域取得了巨大成功,在自然语言处理领域,利用神经网络对自然语言文本信息进行特征学习和文本分类,也成为文本分类的前沿技术。


    前向神经网络:多层感知机(Multilayer Perceptron, MLP)是一种典型的前向神经网络。它能够自动学习多层神经网络,将输入特征向量映射到对应的类别标签上。


    通过引入非线性激活层,该模型能够实现非线性的分类判别式。包括多层感知机在内的文本分类模型均使用了词袋模型假设,忽略了文本中词序和结构化信息。对于多层感知机模型来说,高质量的初始特征表示是实现有效分类模型的必要条件。


    为了更加充分地考虑文本词序信息,利用神经网络自动特征学习的特点,研究者后续提出了卷积神经网络(Convolutional Neural Network, CNN)和循环神经网络(Recurrent Neural Network, RNN)进行文本分类。


    基于 CNN 和 RNN 的文本分类模型输入均为原始的词序列,输出为该文本在所有类别上的概率分布。这里,词序列中的每个词项均以词向量的形式作为输入。


    卷积神经网络(CNN):卷积神经网络文本分类模型的主要思想是,对词向量形式的文本输入进行卷积操作。CNN 最初被用于处理图像数据。与图像处理中选取二维域进行卷积操作不同,面向文本的卷积操作是针对固定滑动窗口内的词项进行的。


    经过卷积层、 池化层和非线性转换层后,CNN 可以得到文本特征向量用于分类学习。CNN 的优势在于在计算文本特征向量过程中有效保留有用的词序信息。


    针对 CNN 文本分类模型还有许多改进工作, 如基于字符级 CNN 的文本分类模型、将词位置信息加入到词向量。


    循环神经网络(RNN):循环神经网络将文本作为字符或词语序列{x0 , … , xN},对于第 t时刻输入的字符或词语 xt,都会对应产生新的低维特征向量 st如图 3 所示,st 的取值会受到 xt 和上个时刻特征向量 st-1 的共同影响,st 包含了文本序列从 x0 到 xt 的语义信息。因此,我们可以利用 sN 作为该文本序列的特征向量,进行文本分类学习。


    与 CNN 相比,RNN 能够更自然地考虑文本的词序信息,是近年来进行文本表示最流行的方案之一。


    为了提升 RNN 对文本序列的语义表示能力,研究者提出很多扩展模型。


    例如,长短时记忆网络(LSTM)提出记忆单元结构,能够更好地处理文本序列中的长程依赖,克服循环神经网络梯度消失问题。如图 4 是 LSTM 单元示意图,其中引入了三个门(input gate, output gate, forget gate)来控制是否输入输出以及记忆单元更新。


    提升 RNN 对文本序列的语义表示能力的另外一种重要方案是引入选择注意力机制 (Selective Attention),可以让模型根据具体任务需求对文本序列中的词语给予不同的关注度。


    3. 应用


    文本分类技术在智能信息处理服务中有着广泛的应用。例如,大部分在线新闻门户网站(如新浪、搜狐、腾讯等)每天都会产生大量新闻文章,如果对这些新闻进行人工整理非常耗时耗力,而自动对这些新闻进行分类,将为新闻归类以及后续的个性化推荐等都提供巨大帮助。


    互联网还有大量网页、论文、专利和电子图书等文本数据,对其中文本内容进行分类,是实现对这些内容快速浏览与检索的重要基础。此外,许多自然语言分析任务如观点挖掘、垃圾邮件检测等,也都可以看作文本分类或聚类技术的具体应用。


    对文档进行分类,一般需要经过两个步骤:(1)文本表示,以及(2)学习。文本表示是指将无结构化的文本内容转化成结构化的特征向量形式,作为分类模型的输入。在得到文本对应的特征向量后,就可以采用各种分类或聚类模型,根据特征向量训练分类器


    五. 信息检索


    信息检索(Information Retrieval, IR)是指将信息按一定的方式加以组织,并通过信息查找满足用户的信息需求的过程和技术。


    1951 年,Calvin Mooers 首次提出了“信息检索”的概念,并给出了信息检索的主要任务:协助信息的潜在用户将信息需求转换为一张文献来源列表,而这些文献包含有对其有用的信息。


    信息检索学科真正取得长足发展是在计算机诞生并得到广泛应用之后,文献数字化使得信息的大规模共享及保存成为现实,而检索就成为了信息管理与应用中必不可少的环节。


    互联网的出现和计算机硬件水平的提高使得人们存储和处理信息的能力得到巨大的提高,从而加速了信息检索研究的进步,并使其研究对象从图书资料和商用数据扩展到人们生活的方方面面。


    伴随着互联网及网络信息环境的迅速发展,以网络信息资源为主要组织对象的信息检索系统:搜索引擎应运而生,成为了信息化社会重要的基础设施。


    2016 年初,中文搜索引擎用户数达到 5.66 亿人,这充分说明搜索引擎在应用层次取得的巨大成功,也使得信息检索,尤其是网络搜索技术的研究具有了重要的政治、经济和社会价值。


    1. 内容结构


    检索用户、信息资源和检索系统三个主要环节组成了信息检索应用环境下知识获取与信息传递的完整结构,而当前影响信息获取效率的因素也主要体现在这几个环节,即:


    • 检索用户的意图表达


    • 信息资源(尤其是网络信息资源)的质量度量


    • 需求与资源的合理匹配


    具体而言,用户有限的认知能力导致其知识结构相对大数据时代的信息环境而言往往存在缺陷,进而影响信息需求的合理组织和清晰表述;数据资源的规模繁杂而缺乏管理,在互联网“注意力经济”盛行的环境下,不可避免地存在欺诈作弊行为,导致检索系统难以准确感知其质量;用户与资源提供者的知识结构与背景不同,对于相同或者相似事物的描述往往存在较大差异,使得检索系统传统的内容匹配技术难以很好应对,无法准确度量资源与需求的匹配程度。


    上述技术挑战互相交织,本质上反映了用户个体有限的认知能力与包含近乎无限信息的数据资源空间之间的不匹配问题。


    概括地讲,当前信息检索的研究包括如下四个方面的研究内容及相应的关键科学问题:


    1.1 信息需求理解


    面对复杂的泛在网络空间,用户有可能无法准确表达搜索意图;即使能够准确表达,搜索引擎也可能难以正确理解;即使能够正确理解,也难以与恰当的网络资源进行匹配。这使得信息需求理解成为了影响检索性能提高的制约因素,也构成了检索技术发展面临的第一个关键问题。


    1.2 资源质量度量


    资源质量管理与度量在传统信息检索研究中并非处于首要的位置,但随着互联网信息资源逐渐成为检索系统的主要查找对象,网络资源特有的缺乏编审过程、内容重复度高、质量参差不齐等问题成为了影响检索质量的重要因素。


    目前,搜索引擎仍旧面临着如何进行有效的资源质量度量的挑战,这构成了当前信息检索技术发展面临的第二个关键问题。


    1.3 结果匹配排序


    近年来,随着网络技术的进步,信息检索系统(尤其是搜索引擎)涉及的数据对象相应 的变得多样化、异质化,这也造成了传统的以文本内容匹配为主要手段的结果排序方法面临着巨大的挑战。


    高度动态繁杂的泛在网络内容使得文本相似度计算方法无法适用;整合复杂异构网络资源作为结果使得基于同质性假设构建的用户行为模型难以应对;多模态的交互方式则使得传统的基于单一维度的结果分布规律的用户行为假设大量失效。


    因此,在大数据时代信息进一步多样化、异质化的背景下,迫切需要构建适应现代信息资源环境的检索结果匹配排序方法,这是当前信息检索技术发展面临的第三个关键问题。


    1.4 信息检索评价


    信息检索评价是信息检索和信息获取领域研究的核心问题之一。信息检索和信息获取系统核心的目标是帮助用户获取到满足他们需求的信息,而评价系统的作用是帮助和监督研究开发人员向这一核心目标前进,以逐步开发出更好的系统,进而缩小系统反馈和用户需求之间的差距,提高用户满意度。


    因此,如何设计合理的评价框架、评价手段、评价指标,是当前信息检索技术发展面临的第四个关键问题。


    2. 个性化搜索


    现有的主要个性化搜索算法可分为基于内容分析的算法基于链接分析的方法基于协作过滤的算法


    • 基于内容的个性化搜索算法通过比较用户兴趣爱好和结果文档的内容相似性来对文档的用户相关性进行判断进而对搜索结果进行重排。


    用户模型一般表述为关键词或主题向量或层次的形式。个性化算法通过比较用户模型和文档的相似性,判断真实的搜索意图,并估计文档对用户需求的匹配程度。


    • 基于链接分析的方法主要是利用互联网上网页之间的链接关系,并假设用户点击和访问过的网页为用户感兴趣的网页,通过链接分析算法进行迭代最终计算出用户对每个网页的喜好度。


    • 基于协作过滤的个性化搜索算法主要借鉴了基于协作过滤的推荐系统的思想,这种方法考虑到能够收集到的用户的个人信息有限,因此它不仅仅利用用户个人的信息,还利用与用户相似的其它用户或群组的信息,并基于用户群组和相似用户的兴趣偏好来个性化当前用户的搜索结果。用户之间的相似性可以通过用户的兴趣爱好、历史查询、点击过的网页等内容计算得出。


    3. 语义搜索技术


    随着互联网信息的爆炸式增长,传统的以关键字匹配为基础的搜索引擎,已越来越难以满足用户快速查找信息的需求。同时由于没有知识引导及对网页内容的深入整理,传统网页搜索返回的网页结果也不能精准给出所需信息。


    针对这些问题,以知识图谱为代表的语义搜索(Semantic Search)将语义 Web 技术和传统的搜索引擎技术结合,是一个很有研究价值 但还处于初期阶段的课题。


    在未来的一段时间,结合互联网应用需求的实际和技术、产品运营能力的实际发展水平,语义搜索技术的发展重点将有可能集中在以各种情境的垂直搜索资源为基础,知识化推理为检索运行方式,自然语言多媒体交互为手段的智能化搜索与推荐技术。


    首先将包括各类垂直搜索资源在内的深度万维网数据源整合成为提供搜索服务的资源池;随后利用广泛分布在公众终端计算设备上的浏览器作为客户端载体,通过构建的复杂情境知识库来开发多层次查询技术,并以此管理、调度、整合搜索云端的搜索服务资源,满足用户的多样化、多模态查询需求;最后基于面向情境体验的用户行为模型构建,以多模态信息推荐的形式实现对用户信息需求的主动满足。


    六. 信息抽取


    信息抽取(Information Extraction)是指从非结构化/半结构化文本(如网页、新闻、 论文文献、微博等)中提取指定类型的信息(如实体、属性、关系、事件、商品记录等), 并通过信息归并、冗余消除和冲突消解等手段将非结构化文本转换为结构化信息的一项综合技术。例如:


    • 从相关新闻报道中抽取出恐怖事件信息:时间、地点、袭击者、受害人、袭击 目标、后果等;


    • 从体育新闻中抽取体育赛事信息:主队、客队、赛场、比分等;


    • 从论文和医疗文献中抽取疾病信息:病因、病原、症状、药物等


    被抽取出来的信息通常以结构化的形式描述,可以为计算机直接处理,从而实现对海量非结构化数据的分析、组织、管理、计算、 查询和推理,并进一步为更高层面的应用和任务(如自然语言理解、知识库构建、智能问答系统、舆情分析系统)提供支撑。


    目前信息抽取已被广泛应用于舆情监控、网络搜索、智能问答等多个重要领域。与此同时,信息抽取技术是中文信息处理和人工智能的核心技术,具有重要的科学意义。


    一直以来,人工智能的关键核心部件之一是构建可支撑类人推理和自然语言理解的大规模常识知识库。然而,由于人类知识的复杂性、开放性、多样性和巨大的规模,目前仍然无法构建满足上述需求的大规模知识库。


    信息抽取技术通过结构化自然语言表述的语义知识,并整合来自海量文本中的不同语义知识,是构建大规模知识库最有效的技术之一。


    每一段文本内所包含的寓意可以描述为其中的一组实体以及这些实体相互之间的关联和交互,因此抽取文本中的实体和它们之间的语义关系也就成为了理解文本意义的基础。


    信息抽取可以通过抽取实体和实体之间的语义关系,表示这些语义关系承载的信息,并基于这些信息进行计算和推理来有效的理解一段文本所承载的语义。


    1. 命名实体识别


    命名实体识别的目的是识别文本中指定类别的实体,主要包括人名、地名、机构名、专有名词等的任务。


    命名实体识别系统通常包含两个部分:实体边界识别实体分类


    其中实体边界识别判断一个字符串是否是一个实体,而实体分类将识别出的实体划分到预先给定的不同类别中去。


    命名实体识别是一项极具实用价值的技术,目前中英文上通用命名实体识别(人名、地名、机构名)的 F1 值都能达到 90% 以上。命名实体识别的主要难点在于表达不规律、且缺乏训练语料的开放域命名实体类别(如电影、歌曲名)等。


    2. 关系抽取


    关系抽取指的是检测和识别文本中实体之间的语义关系,并将表示同一语义关系的提及(mention)链接起来的任务。关系抽取的输出通常是一个三元组(实体 1,关系类别,实体 2),表示实体 1 和实体 2 之间存在特定类别的语义关系。


    例如,句子“北京是中国的首都、政治中心和文化中心”中表述的关系可以表示为(中国,首都,北京),(中国,政治中心,北京)和(中国,文化中心,北京)。语义关系类别可以预先给定(如 ACE 评测中的七大类关系),也可以按需自动发现(开放域信息抽取)。


    关系抽取通常包含两个核心模块:关系检测关系分类


    其中关系检测判断两个实体之间是否存在语义关系,而关系分类将存在语义关系的实体对划分到预先指定的类别中。


    在某些场景和任务下,关系抽取系统也可能包含关系发现模块,其主要目的是发现实体和实体之间存在的语义关系类别。例如,发现人物和公司之间存在雇员、CEO、CTO、创始人、董事长等关系类别。


    3. 事件抽取


    事件抽取指的是从非结构化文本中抽取事件信息,并将其以结构化形式呈现出来的任务。


    例如,从“毛泽东 1893 年出生于湖南湘潭”这句话中抽取事件{类型:出生, 人物:毛泽东,时间:1893 年,出生地:湖南湘潭}。


    事件抽取任务通常包含事件类型识别事件元素填充两个子任务。


    事件类型识别判断一句话是否表达了特定类型的事件。事件类型决定了事件表示的模板,不同类型的事件具有不同的模板。


    例如出生事件的模板是{人物, 时间,出生地},而恐怖袭击事件的模板是{地点,时间,袭击者,受害者,受伤人数,…}。 事件元素指组成事件的关键元素,事件元素识别指的是根据所属的事件模板,抽取相应的元素,并为其标上正确元素标签的任务。


    4. 信息集成


    实体、关系和事件分别表示了单篇文本中不同粒度的信息。在很多应用中,需要将来自不同数据源、不同文本的信息综合起来进行决策,这就需要研究信息集成技术。


    目前,信息抽取研究中的信息集成技术主要包括共指消解技术实体链接技术。


    共指消解指的是检测同一实体/关系/事件的不同提及,并将其链接在一起的任务,例如,识别“乔布斯是苹果的创始人之一,他经历了苹果公司几十年的起落与兴衰”这句话中的“乔布斯”和“他”指的是同一实体。


    实体链接的目的是确定实体名所指向的真实世界实体。例如识别上一句话中的“苹果”和“乔布斯”分别指向真实世界中的苹果公司和其 CEO 史蒂夫·乔布斯。


    七. 问答系统


    自动问答(Question Answering, QA)是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务。不同于现有搜索引擎,问答系统是信息服务的一种高级形式,系统返回用户的不再是基于关键词匹配排序的文档列表,而是精准的自然语言答案。


    近年来,随着人工智能的飞速发展,自动问答已经成为倍受关注且发展前景广泛的研究方向。自动问答的研究历史可以溯源到人工智能的原点。


    1950 年,人工智能之父阿兰图灵(Alan M. Turing)在《Mind》上发表文章《Computing Machinery and Intelligence》,文章开篇提出通过让机器参与一个模仿游戏(Imitation Game)来验证“机器”能否“思考”,进而提出了经典的图灵测试(Turing Test),用以检验机器是否具备智能。


    同样,在自然语言处理研究领域,问答系统被认为是验证机器是否具备自然语言理解能力的四个任务之一(其它三个是机器翻译、复述和文本摘要)。


    自动问答研究既有利于推动人工智能相关学科的发展,也具有非常重要的学术意义。从应用上讲,现有基于关键词匹配和浅层语义分析的信息服务技术已经难以满足用户日益增长的精准化和智能化信息需求,已有的信息服务范式急需一场变革。


    2011 年,华盛顿大学图灵中心主任 Etzioni 在 Nature 上发表的《Search Needs a Shake-Up》中明确指出:在万维网诞生 20 周年之际,互联网搜索正处于从简单关键词搜索走向深度问答的深刻变革的风口浪尖上。以直接而准确的方式回答用户自然语言提问的自动问答系统将构成下一代搜索引擎的基本形态。


    同一年,以深度问答技术为核心的 IBM Watson 自动问答机器人在美国智力竞赛节目 Jeopardy 中战胜人类选手,引起了业内的巨大轰动。Watson 自动问答系统让人们看到已有信息服务模式被颠覆的可能性,成为了问答系统发展的一个里程碑。


    此外,随着移动互联网崛起与发展,以苹果公司 Siri、Google Now、微软 Cortana 等为代表的移动生活助手爆发式涌现,上述系统都把以自然语言为基本输入方式的问答系统看作是下一代信息服务的新形态和突破口,并均加大人员、资金的投入,试图在这一次人工智能浪潮中取得领先。


    1. 关键问题


    自动问答系统在回答用户问题时,需要正确理解用户所提的自然语言问题,抽取其中的关键语义信息,然后在已有语料库、知识库或问答库中通过检索、匹配、推理的手段获取答案并返回给用户。


    上述过程涉及词法分析、句法分析、语义分析、信息检索、逻辑推理、知识工程、语言生成等多项关键技术。传统自动问答多集中在限定领域,针对限定类型的问题进行回答。伴随着互联网和大数据的飞速发展,现有研究趋向于开放域、面向开放类型问题的自动问答。概括地讲,自动问答的主要研究任务和相应关键科学问题如下。


    1.1 问句理解


    给定用户问题,自动问答首先需要理解用户所提问题。用户问句的语义理解包含词法分析、句法分析、语义分析等多项关键技术,需要从文本的多个维度理解其中包含的语义内容。


    在词语层面,需要在开放域环境下,研究命名实体识别(Named Entity Recognition)、术语识别(Term Extraction)、词汇化答案类型词识别(Lexical Answer Type Recognition)、 实体消歧(Entity Disambiguation)、关键词权重计算(Keyword Weight Estimation)、答案集中词识别(Focused Word Detection)等关键问题。


    在句法层面,需要解析句子中词与词之间、短语与短语之间的句法关系,分析句子句法结构。在语义层面,需要根据词语层面、句法层面的分析结果,将自然语言问句解析成可计算、结构化的逻辑表达形式(如一阶谓词逻辑表达式)。


    1.2 文本信息抽取


    给定问句语义分析结果,自动问答系统需要在已有语料库、知识库或问答库中匹配相关的信息,并抽取出相应的答案。


    传统答案抽取构建在浅层语义分析基础之上,采用关键词匹配策略,往往只能处理限定类型的答案,系统的准确率和效率都难以满足实际应用需求。为保证信息匹配以及答案抽取的准确度,需要分析语义单元之间的语义关系,抽取文本中的结构化知识。


    早期基于规则模板的知识抽取方法难以突破领域和问题类型的限制,远远不能满足开放领域自动问答的知识需求。为了适应互联网实际应用的需求,越来越多的研究者和开发者开始关注开放域知识抽取技术,其特点在于:


    • 文本领域开放:处理的文本是不限定领域的网络文本


    • 内容单元类型开放:不限定所抽取的内容单元类型,而是自动地从网络中挖掘内容单元的类型,例如实体类型、事件类型和关系类型等。


    1.3 知识推理


    自动问答中,由于语料库、知识库和问答库本身的覆盖度有限,并不是所有问题都能直 接找到答案。这就需要在已有的知识体系中,通过知识推理的手段获取这些隐含的答案。


    例如,知识库中可能包括了一个人的“出生地”信息,但是没包括这个人的“国籍”信息,因此无法直接回答诸如“某某人是哪国人?”这样的问题。但是一般情况下,一个人的“出生地”所属的国家就是他(她)的“国籍”。


    在自动问答中,就需要通过推理的方式学习到这样的模式。传统推理方法采用基于符号的知识表示形式,通过人工构建的推理规则得到答案。


    但是面对大规模、开放域的问答场景,如何自动进行规则学习,如何解决规则冲突仍然是亟待解决的难点问题。目前,基于分布式表示的知识表示学习方法能够将实体、概念以及它们之间的语义关系表示为低维空间中的对象(向量、矩阵等),并通过低维空间中的数值计算完成知识推理任务。


    虽然这类推理的效果离实用还有距离,但是我们认为这是值得探寻的方法,特别是如何将已有的基于符号表示的逻辑推理与基于分布式表示的数值推理相结合,研究融合符号逻辑和表示学习的知识推理技术,是知识推理任务中的关键科学问题。


    2. 技术方法


    根据目标数据源的不同,已有自动问答技术大致可以分为三类:


    • 检索式问答;

    • 社区问答;

    • 知识库问答。


    以下分别就这几个方面对研究现状进行简要阐述。


    2.1 检索式问答


    检索式问答研究伴随搜索引擎的发展不断推进。1999 年,随着 TREC QA 任务的发起, 检索式问答系统迎来了真正的研究进展。TREC QA 的任务是给定特定 WEB 数据集,从中找到能够回答问题的答案。这类方法是以检索和答案抽取为基本过程的问答系统,具体过程包括问题分析、篇章检索和答案抽取。


    根据抽取方法的不同,已有检索式问答可以分为基于模式匹配的问答方法基于统计文本信息抽取的问答方法


    • 基于模式匹配的方法往往先离线地获得各类提问答案的模式。在运行阶段,系统首先判断当前提问属于哪一类,然后使用这类提问的模式来对抽取的候选答案进行验证。同时为了提高问答系统的性能,人们也引入自然语言处理技术。由于自然语言处理的技术还未成熟,现有大多数系统都基于浅层句子分析。


    • 基于统计文本信息抽取的问答系统的典型代表是美国 Language Computer Corporation 公司的 LCC 系统。该系统使用词汇链和逻辑形式转换技术,把提问句和答案句转化成统一的逻辑形式(Logic Form),通过词汇链,实现答案的推理验证。


    LCC 系统在 TREC QA Track 2001 ~ 2004 连续三年的评测中以较大领先优势获得第一名的成绩。 2011 年,IBM 研发的问答机器人 Watson 在美国智力竞赛节目《危险边缘 Jeopardy!》中战胜人类选手,成为问答系统发展的一个里程碑。


    Watson 的技术优势大致可以分为以下三个方面:


    • 强大的硬件平台:包括 90 台 IBM 服务器,分布式计算环境;


    • 强大的知识资源:存储了大约 2 亿页的图书、新闻、电影剧本、辞海、文选和《世界图书百科全书》等资料;


    • 深层问答技术(DeepQA):涉及统计机器学习、句法分析、主题分析、信息抽取、 知识库集成和知识推理等深层技术。


    然而,Watson 并没有突破传统问答式检索系统的局限性,使用的技术主要还是检索和匹配,回答的问题类型大多是简单的实体或词语类问题,而推理能力不强。


    2.2 社区问答


    随着 Web2.0 的兴起,基于用户生成内容(User-Generated Content, UGC)的互联网服务越来越流行,社区问答系统应运而生,例如 Yahoo! Answers、百度知道等。


    问答社区的出现为问答技术的发展带来了新的机遇。据统计 2010 年 Yahoo! Answers 上已解决的问题量达到 10 亿,2011 年“百度知道”已解决的问题量达到 3 亿,这些社区问答数据覆盖了方方面面的用户知识和信息需求。


    此外,社区问答与传统自动问答的另一个显著区别是:社区问答系统有大量的用户参与,存在丰富的用户行为信息,例如用户投票信息、用户评价信息、回答者的问题采纳率、用户推荐次数、页面点击次数以及用户、问题、答案之间的相互关联信息等等,这些用户行为信息对于社区中问题和答案的文本内容分析具有重要的价值。


    一般来讲,社区问答的核心问题是从大规模历史问答对数据中找出与用户提问问题语义相似的历史问题并将其答案返回提问用户。


    假设用户查询问题为 q0,用于检索的问答对数据为 SQ,A = {(q1 , a1 ), (q2 , a2 )}, … , (qn, an)}},相似问答对检索的目标是从 SQ,A 中检索出能够解答问题 q0 的问答对 (qi , ai)。 针对这一问题,传统的信息检索模型,如向量空间模型、语言模型等,都可以得到应用。


    但是,相对于传统的文档检索,社区问答的特点在于:用户问题和已有问句相对来说都非常短,用户问题和已有问句之间存在“词汇鸿沟”问题,基于关键词匹配的检索模型很难达到较好的问答准确度。


    目前,很多研究工作在已有检索框架中针对这一问题引入单语言翻译概率模型,通过 IBM 翻译模型,从海量单语问答语料中获得同种语言中两个不同词语之间的语义转换概率,从而在一定程度上解决词汇语义鸿沟问题。


    例如和“减肥”对应的概率高的相关词有“瘦身”、“跑步”、“饮食”、“健康”、“远动”等等。 除此之外,也有许多关于问句检索中词重要性的研究和基于句法结构的问题匹配研究。


    2.3 知识库问答


    检索式问答和社区问答尽管在某些特定领域或者商业领域有所应用,但是其核心还是关键词匹配和浅层语义分析技术,难以实现知识的深层逻辑推理,无法达到人工智能的高级目标。


    因此,近些年来,无论是学术界或工业界,研究者们逐步把注意力投向知识图谱或知识库(Knowledge Graph)。其目标是把互联网文本内容组织成为以实体为基本语义单元(节点)的图结构,其中图上的边表示实体之间语义关系。


    目前互联网中已有的大规模知识库包括 DBpedia、Freebase、YAGO 等。这些知识库多是以“实体-关系-实体”三元组为基本单元所组成的图结构。


    基于这样的结构化知识,问答系统的任务就是要根据用户问题的语义直接在知识库上查找、推理出相匹配的答案,这一任务称为面向知识库的问答系统或知识库问答。要完成在结构化数据上的查询、匹配、推理等操作,最有效的方式是利用结构化的查询语句,例如:SQL、SPARQL 等。


    然而,这些语句通常是由专家编写,普通用户很难掌握并正确运用。对普通用户来说,自然语言仍然是最自然的交互方式。因此,如何把用户的自然语言问句转化为结构化的查询语句是知识库问答的核心所在,其关键是对于自然语言问句进行语义理解。


    目前,主流方法是通过语义分析,将用户的自然语言问句转化成结构化的语义表示,如范式和 DCS-Tree。相对应的语义解析语法或方法包括组合范畴语法( Category Compositional Grammar, CCG )以 及 依 存 组 合 语 法( Dependency-based Compositional Semantics, DCS)等。

     

    八. 机器翻译


    1. 理论应用


    机器翻译(machine translation,MT)是指利用计算机实现从一种自然语言到另外一种自然语言的自动翻译。被翻译的语言称为源语言(source language),翻译到的语言称作目标语言(target language)。 


    简单地讲,机器翻译研究的目标就是建立有效的自动翻译方法、模型和系统,打破语言壁垒,最终实现任意时间、任意地点和任意语言的自动翻译,完成人们无障碍自由交流的梦想。


    人们通常习惯于感知(听、看和读)自己母语的声音和文字,很多人甚至只能感知自己的母语,因此,机器翻译在现实生活和工作中具有重要的社会需求。


    从理论上讲,机器翻译涉及语言学、计算语言学、人工智能、机器学习,甚至认知语言学等多个学科,是一个典型的多学科交叉研究课题,因此开展这项研究具有非常重要的理论意义,既有利于推动相关学科的发展,揭示人脑实现跨语言理解的奥秘,又有助于促进其他自然语言处理任务,包括中文信息处理技术的快速发展。


    从应用上讲,无论是社会大众、政府企业还是国家机构,都迫切需要机器翻译技术。特别是在“互联网+”时代,以多语言多领域呈现的大数据已成为我们面临的常态问题,机器翻译成为众多应用领域革新的关键技术之一。


    例如,在商贸、体育、文化、旅游和教育等各个领域,人们接触到越来越多的外文资料,越来越频繁地与持各种语言的人通信和交流,从而对机器翻译的需求越来越强烈;在国家信息安全和军事情报领域,机器翻译技术也扮演着非常重要的角色。


    可以说离开机器翻译,基于大数据的多语言信息获取、挖掘、分析和决策等其他应用都将成为空中楼阁。


    尤其值得提出的是,在未来很长一段时间里,建立于丝绸之路这一历史资源之上的“一带一路”将是我国与周边国家发展政治、经济,进行文化交流的主要战略。据统计,“一带一路”涉及 60 多个国家、44 亿人口、53 种语言,可见机器翻译是“一带一路”战略实施中不可或缺的重要技术。


    2. 技术现状


    基于规则的机器翻译方法需要人工设计和编纂翻译规则,统计机器翻译方法能够自动获取翻译规则,但需要人工定义规则的形式,而端到端的神经网络机器翻译方法可以直接通过编码网络和解码网络自动学习语言之间的转换算法。


    从某种角度讲,其自动化程度和智能化程度在不断提升,机器翻译质量也得到了显著改善。机器翻译技术的研究现状可从欧盟组织的国际机器翻译评测(WMT)的结果中窥得一斑。


    该评测主要针对欧洲语言之间的互译,2006 年至 2016 年每年举办一次。对比法语到英语历年的机器翻译评测结果可以发现,译文质量已经在自动评价指标 BLEU 值上从最初小于 0.3 到目前接近 0.4(大量的人工评测对比说明,BLEU 值接近 0.4 的译文能够达到人类基本可以理解的程度)。


    另外,中国中文信息学会组织的全国机器翻译评测(CWMT)每两年组织一次, 除了英汉、日汉翻译评测以外,CWMT 还关注我国少数民族语言(藏、蒙、维)和汉语之间的翻译。


    相对而言,由于数据规模和语言复杂性的问题,少数民族与汉语之间的翻译性能要低于汉英、汉日之间的翻译性能。虽然机器翻译系统评测的分值呈逐年增长的趋势,译文质量越来越好,但与专业译员的翻译结果相比,机器翻译还有很长的路要走,可以说,在奔向“信、达、雅”翻译目标的征程上,目前的机器翻译基本挣扎在“信”的阶段,很多理论和技术问题仍有待于更深入的研究和探索。


    九. 自动摘要


    自动文摘(又称自动文档摘要)是指通过自动分析给定的一篇文档或多篇文档,提炼、总结其中的要点信息,最终输出一篇长度较短、可读性良好的摘要(通常包含几句话或数百字),该摘要中的句子可直接出自原文,也可重新撰写所得。


    简言之,文摘的目的是通过对原文本进行压缩、提炼,为用户提供简明扼要的文字描述。用户可以通过阅读简短的摘要而知晓原文中所表达的主要内容,从而大幅节省阅读时间。


    自动文摘研究的目标是建立有效的自动文摘方法与模型,实现高性能的自动文摘系统。近二十年来,业界提出了各类自动文摘方法与模型,用于解决各类自动摘要问题,在部分自动摘要问题的研究上取得了明显的进展,并成功将自动文摘技术应用于搜索引擎、新闻阅读 等产品与服务中。


    例如谷歌、百度等搜索引擎均会为每项检索结果提供一个短摘要,方便用 户判断检索结果相关性。在新闻阅读软件中,为新闻事件提供摘要也能够方便用户快速了解 该事件。2013 年雅虎耗资 3000 万美元收购了一项自动新闻摘要应用 Summly,则标志着自动文摘技术的应用走向成熟。


    自动文摘的研究在图书馆领域和自然语言处理领域一直都很活跃,最早的应用需求来自于图书馆。图书馆需要为大量文献书籍生成摘要,而人工摘要的效率很低,因此亟需自动摘要方法取代人工高效地完成文献摘要任务。


    随着信息检索技术的发展,自动文摘在信息检索系统中的重要性越来越大,逐渐成为研究热点之一。经过数十年的发展,同时在 DUC 与 TAC 等自动文摘国际评测的推动下,文本摘要技术已经取得长足的进步。国际上自动文摘方面比较著名的几个系统包括 ISI 的 NeATS 系统,哥伦比亚大学的 NewsBlaster 系统,密歇根大学的 NewsInEssence 系统等。

     

    1. 方法


    自动文摘所采用的方法从实现上考虑可以分为抽取式摘要(extractive summarization) 和生成式摘要(abstractive summarization)。


    抽取式方法相对比较简单,通常利用不同方法对文档结构单元(句子、段落等)进行评价,对每个结构单元赋予一定权重,然后选择最重要的结构单元组成摘要。而生成式方法通常需要利用自然语言理解技术对文本进行语法、 语义分析,对信息进行融合,利用自然语言生成技术生成新的摘要句子。


    目前的自动文摘方法主要基于句子抽取,也就是以原文中的句子作为单位进行评估与选取。抽取式方法的好处是易于实现,能保证摘要中的每个句子具有良好的可读性。


    为解决如前所述的要点筛选和文摘合成这两个关键科学问题,目前主流自动文摘研究工作大致遵循如下技术框架: 内容表示 → 权重计算 → 内容选择 → 内容组织。


    首先将原始文本表示为便于后续处理的表达方式,然后由模型对不同的句法或语义单元 进行重要性计算,再根据重要性权重选取一部分单元,经过内容上的组织形成最后的摘要。


    1.1 内容表示与权重计算


    原文档中的每个句子由多个词汇或单元构成,后续处理过程中也以词汇等元素为基本单位,对所在句子给出综合评价分数。


    以基于句子选取的抽取式方法为例,句子的重要性得分由其组成部分的重要性衡量。由于词汇在文档中的出现频次可以在一定程度上反映其重要性, 我们可以使用每个句子中出现某词的概率作为该词的得分,通过将所有包含词的概率求和得到句子得分。


    也有一些工作考虑更多细节,利用扩展性较强的贝叶斯话题模型,对词汇本身的话题相关性概率进行建模。一些方法将每个句子表示为向量,维数为总词表大小。通常使用加权频数作为句子向量相应维上的取值。加权频数的定义可以有多种,如信息检索中常用的词频-逆文档频率 (TF-IDF)权重。


    也有研究工作考虑利用隐语义分析或其他矩阵分解技术,得到低维隐含语义表示并加以利用。得到向量表示后计算两两之间的某种相似度(例如余弦相似度)。随后根据计算出的相似度构建带权图,图中每个节点对应每个句子。


    在多文档摘要任务中,重要的句子可能和更多其他句子较为相似,所以可以用相似度作为节点之间的边权,通过迭代求解基于图的排序算法来得到句子的重要性得分。


    也有很多工作尝试捕捉每个句子中所描述的概念,例如句子中所包含的命名实体或动词。


    出于简化考虑,现有工作中更多将二元词(bigram)作为概念。近期则有工作提出利用频繁图挖掘算法从文档集中挖掘得到深层依存子结构作为语义表示单元。


    另一方面,很多摘要任务已经具备一定数量的公开数据集,可用于训练有监督打分模型。


    例如对于抽取式摘要,我们可以将人工撰写的摘要贪心匹配原文档中的句子或概念,从而得到不同单元是否应当被选作摘要句的数据。然后对各单元人工抽取若干特征,利用回归模型或排序学习模型进行有监督学习,得到句子或概念对应的得分。


    文档内容描述具有结构性,因此也有利用隐马尔科夫模型(HMM)、条件随机场(CRF)、结构化支持向量机(Structural SVM)等常见序列标注或一般结构预测模型进行抽取式摘要有监督训练的工作。


    所提取的特征包括所在位置、包含词汇、与邻句的相似度等等。对特定摘要任务一般也会引入与具体设定相关的特征,例如查询相关摘要任务中需要考虑与查询的匹配或相似程度。


    1.2 内容选择


    无论从效果评价还是从实用性的角度考虑,最终生成的摘要一般在长度上会有限制。在获取到句子或其他单元的重要性得分以后,需要考虑如何在尽可能短的长度里容纳尽可能多的重要信息,在此基础上对原文内容进行选取。内容选择方法包括贪心选择和全局优化。


    2. 技术现状


    相比机器翻译、自动问答、知识图谱、情感分析等热门领域,自动文摘在国内并没有受到足够的重视。


    国内早期的基础资源与评测举办过中文单文档摘要的评测任务,但测试集规模比较小,而且没有提供自动化评价工具。2015 年 CCF 中文信息技术专委会组织了 NLPCC 评测,其中包括了面向中文微博的新闻摘要任务,提供了规模相对较大的样例数据和测试数据,并采用自动评价方法,吸引了多支队伍参加评测,目前这些数据可以公开获得。


    但上述中文摘要评测任务均针对单文档摘要任务,目前还没有业界认可的中文多文档摘要数据,这在事实上阻碍了中文自动摘要技术的发展。


    近些年,市面上出现了一些文本挖掘产品,能够提供中文文档摘要功能(尤其是单文档 摘要),例如方正智思、拓尔思(TRS),海量科技等公司的产品。百度等搜索引擎也能为检索到的文档提供简单的单文档摘要。这些文档摘要功能均被看作是系统的附属功能,其实现方法均比较简单。

    展开全文
  • 第一部分:文本分类 训练文本分类器过程见下图: 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个 ...文本分类的处理大致分为文本预处理、文本特征提取、分类模型构建等。...

    第一部分:文本分类

    训练文本分类器过程见下图:
    在这里插入图片描述
    文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个
    文本分类应用: 常见的有垃圾邮件识别,情感分析
    文本分类方向: 主要有二分类,多分类,多标签分类
    文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)
    文本分类的处理大致分为文本预处理文本特征提取分类模型构建等。和英文文本处理分类相比,中文文本的预处理是关键技术。

    一、文本预处理(解决特征空间高维性、语义相关性和特征分布稀疏)

    1、中文分词技术

    为什么分词处理?因为研究表明特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。

    中文分词主要分为两类方法:基于词典的中文分词和基于统计的中文分词。

    • 基于词典的中文分词

      ​ 核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。

      所以:字典,切分规则和匹配顺序是核心。

    • 基于统计的中文分词方法

      ​ 统计学认为分词是一个概率最大化问题,即拆分句子,基于语料库,统计相邻的字组成的词语出现的概率,相邻的词出现的次数多,就出现的概率大,按照概率值进行分词,所以一个完整的语料库很重要。

    • 基于理解的分词方法

      基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

    2、去除停用词

    建立停用词字典,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。

    二、文本特征提取

    1、词袋模型
    • 思想:

      建立一个词典库,该词典库包含训练语料库的所有词语,每个词语对应一个唯一识别的编号,利用one-hot文本表示。

    • 文档的词向量维度与单词向量的维度相同,每个位置的值是对应位置词语在文档中出现的次数,即词袋模型(BOW))

    • 问题:

      (1)容易引起维度灾难问题,语料库太大,字典的大小为每个词的维度,高维度导致计算困难,每个文档包含的词语数少于词典的总词语数,导致文档稀疏。(2)仅仅考虑词语出现的次数,没有考虑句子词语之间的顺序信息,即语义信息未考虑

    2、TF-IDF文本特征提取
    • 利用TF和IDF两个参数来表示词语在文本中的重要程度。

    • TF是词频:

      指的是一个词语在一个文档中出现的频率,一般情况下,每一个文档中出现的词语的次数越多词语的重要性更大,例如BOW模型一样用出现次数来表示特征值,即出现文档中的词语次数越多,其权重就越大,问题就是在长文档中 的词语次数普遍比短文档中的次数多,导致特征值偏向差异情况。

    • TF体现的是词语在文档内部的重要性。

    • IDF是体现词语在文档间的重要性

      即如果某个词语出现在极少数的文档中,说明该词语对于文档的区别性强,对应的特征值高,IDF值高,IDFi=log(|D|/Ni),D指的是文档总数,Ni指的是出现词语i的文档个数,很明显Ni越小,IDF的值越大。

    • 最终TF-IDF的特征值的表达式为:TF-IDF(i,j)=TFij*IDFi

    3、基于词向量的特征提取模型
    • 想基于大量的文本语料库,通过类似神经网络模型训练,将每个词语映射成一个定维度的向量,维度在几十到化百维之间,每个向量就代表着这个词语,词语的语义和语法相似性和通过向量之间的相似度来判断。

    • 常用的word2vec主要是CBOW和skip-gram两种模型,由于这两个模型实际上就是一个三层的深度神经网络,其实NNLM的升级,去掉了隐藏层,由输入层、投影层、输出层三层构成,简化了模型和提升了模型的训练速度,其在时间效率上、语法语义表达上效果明显都变好。word2vec通过训练大量的语料最终用定维度的向量来表示每个词语,词语之间语义和语法相似度都可以通过向量的相似度来表示。

    三、分类模型

    1、传统机器学习方法:

    ​ 传统机器学习算法中能用来分类的模型都可以用,常见的有:NB模型,随机森林模型(RF),SVM分类模型,KNN分类模型模型。

    2、深度学习文本分类模型
    • fastText模型

      模型结构:在这里插入图片描述
      原理: 句子中所有的词向量进行平均(某种意义上可以理解为只有一个avg pooling特殊CNN),然后直接连接一个 softmax 层进行分类。

    • TextCNN:利用CNN来提取句子中类似 n-gram 的关键信息

      模型结构[4]:在这里插入图片描述

    在这里插入图片描述
    改进: fastText 中的网络结果是完全没有考虑词序信息的,而TextCNN提取句子中类似 n-gram 的关键信息。

    • TextRNN

      模型: Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 “n-gram” 信息。
      在这里插入图片描述
      改进: CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。

    • TextRNN + Attention

      模型结构:
      在这里插入图片描述
      改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。

    • TextRCNN(TextRNN + CNN)

      模型结构:
      在这里插入图片描述
      过程:
      利用前向和后向RNN得到每个词的前向和后向上下文的表示:
      在这里插入图片描述
      词的表示变成词向量和前向后向上下文向量连接起来的形式:
      在这里插入图片描述
      再接跟TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层 filter_size = 1就可以了,不再需要更大 filter_size 获得更大视野。

    第二部分:情感分析

    一、概述

    ​ 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。

    ​ 情感分析可以采用基于情感词典的传统方法,也可以采用基于机器学习的方法。

    二、基于情感词典的情感分类方法

    1、基于词典的情感分类步骤

    ​ 基于情感词典的方法,先对文本进行分词和停用词处理等预处理,再利用先构建好的情感词典,对文本进行字符串匹配,从而挖掘正面和负面信息。如图:在这里插入图片描述

    2、情感词典

    ​ 情感词典包含正面词语词典、负面词语词典、否定词语词典、程度副词词典等四部分。一般词典包含两部分,词语和权重。在这里插入图片描述
    ​ 情感词典在整个情感分析中至关重要,所幸现在有很多开源的情感词典,如BosonNLP情感词典,它是基于微博、新闻、论坛等数据来源构建的情感词典,以及知网情感词典等。当然也可以通过语料来自己训练情感词典。

    3、情感词典文本匹配算法

    ​ 基于词典的文本匹配算法相对简单。逐个遍历分词后的语句中的词语,如果词语命中词典,则进行相应权重的处理。正面词权重为加法,负面词权重为减法,否定词权重取相反数,程度副词权重则和它修饰的词语权重相乘。如图:
    在这里插入图片描述
    利用最终输出的权重值,就可以区分是正面、负面还是中性情感了。

    4、缺点

    ​ 基于词典的情感分类,简单易行,而且通用性也能够得到保障。但仍然有很多不足:

    • 精度不高。

      ​ 语言是一个高度复杂的东西,采用简单的线性叠加显然会造成很大的精度损失。词语权重同样不是一成不变的,而且也难以做到准确。

    • 新词发现。

      ​ 对于新的情感词,比如给力,牛逼等等,词典不一定能够覆盖。

    • 词典构建难。

      ​ 基于词典的情感分类,核心在于情感词典。而情感词典的构建需要有较强的背景知识,需要对语言有较深刻的理解,在分析外语方面会有很大限制。

    三、基于机器学习的情感分类方法

    • 即为分类问题,文本分类中的各方法均可采用。

    第三部分:意图识别

    一、概述

    • 意图识别是通过分类的办法将句子或者我们常说的query分到相应的意图种类。

      ​ 举一个简单的例子,我想听周杰伦的歌,这个query的意图便是属于音乐意图,我想听郭德纲的相声便是属于电台意图。做好了意图识别以后对于很多nlp的应用都有很重要的提升,比如在搜索引擎领域使用意图识别来获取与用户输入的query最相关的信息。举个例子,用户在查询"生化危机"时,我们知道"生化危机"既有游戏还有电影,歌曲等等,如果我们通过意图识别发现该用户是想玩"生化危机"的游戏时,那我们直接将游戏的查询结果返回给用户,就会节省用户的搜索点击次数,缩短搜索时间,大幅提高用户的体验。

      ​ 再举一个目前最火热的聊天机器人来说明一下意图识别的重要性。目前各式各样的聊天机器人,智能客服,智能音箱所能处理的问题种类都是有限制的。比如某聊天机器人目前只有30个技能,那么用户向聊天机器人发出一个指令,聊天机器人首先得根据意图识别将用户的query分到某一个或者某几个技能上去,然后再进行后续的处理。 做好了意图识别以后,那种类似于电影场景里面人机交互就有了实现的可能,用户向机器发来的每一个query,机器都能准确的理解用户的意图,然后准确的给予回复。人与机器连续,多轮自然的对话就可以借此实现了。

    二、意图识别的基本方法

    1、基于词典以及模版的规则方法

    ​ 不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配程度或者重合程度来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。

    2、基于查询点击日志

    ​ 如果是搜索引擎等类型业务场景,那么我们可以通过点击日志得到用户的意图。

    3、基于分类模型来对用户的意图进行判别

    ​ 因为意图识别本身也是一个分类问题,其实方法和分类模型的方法大同小异。

    三、意图识别的难点

    ​ 意图识别工作最大的难点其实是在于标注数据的获取。目前标注数据的获取主要来自两方面,一方面是专门的数据标注团队对数据进行标注,一方面是通过半监督的方式自动生成标注数据。

    展开全文
  • NLP自然语言处理 完整流程

    千次阅读 2019-03-06 17:48:19
    自然语言处理 完整流程第一步:获取语料1、已有语料2、网上下载、抓取语料第二步:语料预处理1、语料清洗2、分词3、词性标注4、去停用词三、特征工程1、词袋模型(BoW)2、词向量第四步:特征选择第五步:模型训练1...
  • 中文自然语言处理入门实战

    万次阅读 多人点赞 2019-07-05 10:16:32
    本达人课,作为中文自然语言处理边学边实战的入门级教程,以小数据量的“简易版”实例,通过实战带大家快速掌握 NLP 在中文方面开发的基本能力。 本课程共包含 18 节。各小节之间并没有紧密耦合,但是整个内容还是...
  • 中文自然语言处理可能是 NLP 中最难的?

    万次阅读 热门讨论 2018-06-22 13:22:21
    在人工智能背景技术下,自然语言处理NLP)技术被越来越多的人看好,并受到重视。其中,以微软小冰为代表的聊天机器人,如今却成了网红,迅速刷爆了微信和朋友圈,一个17岁纯情少女懂礼貌、有素质和会作诗,众多...
  • 【总结】自然语言处理NLP)算法:概述与分类

    万次阅读 多人点赞 2018-09-16 08:43:59
    主要参考自然语言处理NLP)知识结构总结和知乎上的一些问答。 目录 NLP界神级人物 NLP知识结构 1.概述 2.形式语言与自动机 3.语言模型 4.概率图模型,生成模型与判别模型,贝叶斯网络,马尔科夫链与隐...
  • 自然语言处理过程中,有许多应用场景都需要考虑句子的语法,因此研究语法解析变得非常重要。语法解析有两个主要的问题,其一是句子语法在计算机中的表达与存储方法,以及语料数据集;其二是语法解析的算法。这也...
  • 1、自然语言处理圣经---《自然语言处理综论》2、视频课程《深度学习与自然语言处理-2018》3、Natural Language Processing (NLP)4、吴恩达经典课程 - Machine Learning —Coursera5、斯坦福 Natural Language ...
  • 一张图看懂自然语言处理技术框架

    万次阅读 2018-05-23 18:02:20
    一张图看懂自然语言处理技术框架 一、前 正在针对《人工智能产品经理最佳实践》视频课程第三部分,关键技术篇,进行相关的内容重构,今天整理的部分是自然语言处理技术框架,特地绘制了一张自然语言处理的技术...
  • 自然语言处理要解决的主要问题有: (1)垃圾邮件识别 (2)中文输入法 (3)机器翻译 (4)自动问答、客服机器人 这里简单罗列了一些NLP的常见领域:分词,词性标注,命名实体识别,句法分析,语义识别,垃圾...
  • 自然语言处理NLP)是指机器理解并解释人类写作、说话方式的能力。 NLP的目标是让计算机/机器在理解语言上像人类一样智能。最终目标是弥补人类交流(自然语言)和计算机理解(机器语言)之间的差距。 自然语言处理...
  • R语言安装NLP自然语言分析包

    千次阅读 2015-11-15 20:22:16
    1. 自然语言处理NLP)  对于英语体系,基于空格可以直接进行分词,而中文则不同,需要进行分词,然后进行后续处理。NLP是natural language processing的缩写,专指此类的工作。  自然语言处理包: Snowba
  • 自然语言处理NLP)- 建立一个搜索引擎(信息检索系统)的点点滴滴 教程在最底下 代码: 建索引:   搜索:                       bensonrachel简书教程...
  • 国内大陆部分主要NLP团队

    千次阅读 2019-05-25 19:22:29
    微软亚洲研究院自然语言计算组...清华大学自然语言处理与社会人文计算实验室http://nlp.csai.tsinghua.edu.cn/site2/ 清华大学智能技术与系统信息检索组http://www.thuir.cn/cms/ ...
  • 1.什么是信息抽取(IE) 信息抽取的英文就是Information Extraction,是把文本信息转换成结构化信息。整体步骤有三步: 从文本中了解到特定的信息; 然后从特定信息中获取到特定类别的对象; 然后获取对象之间的...
  • 【资源分享】《机器学习&深度学习》视频课程资源百度云下载
1 2 3 4 5 ... 20
收藏数 300,549
精华内容 120,219
关键字:

nlp自然语言处理