全栈 - 16 NLP 走近自然语言处理
这是全栈数据工程师养成攻略系列教程的第十六期:16 NLP 走近自然语言处理。
文本是一种极其重要的数据类型,让我们来了解下文本数据中有哪些研究问题和挖掘价值。
概念
我们在处理数据时经常会接触到文本,例如电影简介、新闻报道等,以及互联网上每天大量积累的用户产生内容(User Generated Content ),例如新浪微博、用户评论等,因此文本是一种十分常见和重要的数据类型。这些文本大多以自然语言的形式存在,即通过人类语言组织和产生,广泛应用于我们的日常对话、办公写作、阅读浏览等行为中。自然语言处理,即Natural Language Processing,希望让机器能够像人一样去理解,以人类自然语言为载体的文本所包含的信息,并完成一些语言领域的特定任务。
内容
语言是人类智慧长期沉淀的成果,对于看似简单的文本,从词汇级别、语法级别、语义级别、应用级别等不同角度出发,都包含大量研究问题和工作内容。
中文NLP中最基础的一块内容便是中文分词。英文等外文语言的单词之间以空格分开,因此显式提供了词和词之间的边界。而中文仅使用标点符号进行断句,字和字彼此相连,例如“上海自来水来自海上”。虽然类似N-grams等语言模型并不需要进行中文分词,但毕竟中文的基本语义单元是词而不是字,所以在大多数应用场景下,为了正确理解一句话所包含的语义,进行准确的中文分词仍是必不可少的预处理步骤。
词性标注是指在中文分词的基础上,结合上下文对分好的每个词标注最合适的词性。常见的词性有名词、动词、形容词、副词等,同一词语在不同的语境下可以表现为不同的词性,进而在语句中充当不同的语义角色。因此,词性标注主要是依据词本身的词性分布,以及上下文的实际语境来判断的。
命名实体识别是指识别出语句中的人名、地名、机构名、数字、日期、货币、地址等以名称为标识的实体,大多属于实词。而关系抽取则是指完成命名实体识别之后,抽取实体之间存在的关系。例如“乔布斯出任苹果公司CEO”,其中乔布斯和苹果公司分别属于人名和机构名,而CEO则是两个命名实体之间的关系。
关键词提取是指从大量文本中提取出最为核心的关键内容。常用的实现算法有TF-IDF
和TextRank
两种,在提取之前需要对给定文本进行中文分词并移除停用词,即例如“你”、“我”、“着”、“了”等十分常用但不包含具体语义的词。TF-IDF
选出那些一般并不常用(Inverse Document Frequency低),但是在给定文本中频繁出现(Term Frequency高)的词作为关键词;而TextRank
则基于词之间的上下文关系构建共现网络,将处于网络核心位置的词作为关键词。
信息抽取则是从非结构化文本中抽取出有意义或者感兴趣的字段,例如对于一篇法律判决文书,从中提取出原告、被告、案件类型、判决结果等信息字段,从而将非结构化文本转化为结构化数据,便于信息管理和数据分析。目前大多数信息抽取都是通过人工制定规则,使用整理好的模式去目标文本中匹配出相应的字段,或者使用半监督学习,结合人工标注样本和机器学习模型,在不断的迭代和反馈中提高信息抽取的准确率。
依存分析主要包括句法依存分析和语义依存分析,其过程都是将原始语句解析为依存树,树中的每个节点都代表一个词,节点之间的连接则反应了词之间的句法关系或语义关系。通过依存分析,原本以顺序排列的词语之间产生了更加复杂和层次化的关系,便于机器更好地理解语句的语法和语义,往往能够为后续自然语言处理任务带来帮助。
词嵌入(Word Embedding)是指将词映射成低维(low-dimension)、实值(real-value)、稠密(dense)的词向量,从而赋予词语更加丰富的语义涵义,同时更加适合作为机器学习模型的输入。词嵌入的概念非常有用,在自然语言处理任务中应用也十分广泛,我们下一节中将详细进行讨论并实现。
应用
如果以上内容是从理论角度出发,探讨NLP所涉及的内容,那么从实际应用角度出发,NLP又可以用来实现哪些任务呢?
篇章理解是指对于给定的文章集合,通过处理后能够把握文章的主要内容并完成一些分类任务,例如对文章进行主题分类。篇章理解的实现大多基于有监督学习,即提供标注好的训练集和待分类的测试集,基于训练集得到一个能够准确提取信息、全面把握内容的分类模型,从而应用于测试集的分类任务。
文本摘要是指对于给定的大量文本,提取出核心思想和主要内容,快速生成篇幅更小、便于阅读和理解的摘要。文本摘要主要分为提取式和生成式两种,前者从原始文本中直接提取出已有的代表性语句,经过处理和组合后输出为摘要,后者在理解和融合原始文本的基础上,自动生成原始文本中没有的语句并组合为摘要。相较而言,生成式比抽取式更加困难,而人类的习惯也是先阅读并理解,选出重要的语句,再用自己的语言进行复述、总结和融合。
情感分析是指根据语句中蕴含的情感成分判断整个语句所表达的情感倾向,例如判断用户评论是否为积极或消极。情感分析的实现往往是简单地使用一些情感词典,对语句中出现的情感词进行加权组合,从而输出整个语句的情感得分,或者使用有监督学习,基于人工标注数据训练情感分类或回归模型。
知识图谱是一种表示知识的方法,使用节点表示实体,使用有向边表示实体之间的关系,实体和边都可以具备丰富的属性,从而将海量知识表示成一个庞大的网络。知识图谱模拟了人脑管理和检索知识的过程,当我们看到乔布斯和苹果公司这两个实体时,会很自然地去联想两者之间的关系。如果能够将某一领域所涉及的知识都以知识图谱的形式进行整理和组织,那么对于领域知识的管理、推理和检索等都能起到很大的便利。
文本翻译是一项十分常用的NLP应用,大家或多或少都使用过Google翻译等工具将文本从一种语言翻译成另一种语言。从本质上来看,文本翻译是一种序列到序列(Sequence to Sequence)的映射,其实现大多是基于人工标注数据集,即大量源语言文本以及对应的目标语言文本,使用循环神经网络等训练映射模型。当然,并不能简单地将源语言文本中的每个字翻译成目标语言并直接拼接,往往需要结合两种语言的语法特点以及具体的上下文语境进行调整,而这也正是文本翻译所面临的最大困难和挑战。
问答系统是对传统搜索引擎的一种改进。传统搜索引擎接受用户的关键词作为输入,以列表形式输出按相关性递减排序的搜索结果,用户仍然需要依次浏览直到找到最符合自己要求的内容。问答系统则直接根据用户问题返回最准确的答案,其实现涉及NLP的诸多领域,例如对用户输入内容进行理解和处理、以庞大的知识图谱作为知识存储、快速高效的知识检索和推理技术等。
聊天机器人很早便得到了应用,完成一些自动信息采集和回复的功能,但那时的聊天机器人主要基于关键词和模版等人工制定规则,智能程度不高。近年来随着深度学习等相关技术的发展,以及海量聊天语料的积累,聊天机器人逐渐可以接受任意文本输入并输出较为合理的回复。从本质上来看,聊天机器人也属于序列到序列的映射,但其涉及对用户输入文本的理解、知识图谱、文本生成等多个领域,并且需要解决多轮对话一致性等挑战。智能聊天机器人主要包括日常调侃的聊天机器人,例如微软小冰等,以及垂直领域的功能机器人,例如法律、购车、医疗等领域的专业咨询机器人。它们作为用户需求的万能入口,吸引了大量研究机构和创业公司的密切关注。
视频链接:走近自然语言处理