- 深度序列模型与自然语言处理:基于TensorFlow 2实践
- 阮翀
- 1500字
- 2024-12-27 22:34:46
1.1.1 自然语言处理能做什么
常用的自然语言处理任务有很多,包括但不限于:
· 中文分词(Chinese Word Segmentation):由于中文文本中没有空格,而自然语言处理算法通常以词(Word)为最基本的处理粒度(Granularity),因此在处理前需要把句子里的单词拆分开,例如将“我爱北京天安门”处理成“我/爱/北京/天安门”。不过现在以字(Character)为基本粒度的算法也越来越常见,所以有时中文分词也不再必要。
· 词形归并(Lemmatization,也译作词形还原)和词干还原(Stemming,也译作词干提取):这两种技术主要用在单词形态丰富的语言中,以便减少词形变化、降低处理难度,因此中文文本处理通常没有这一步骤。具体而言,前者是指将同一个单词的不同形态都处理为原型,例如将good/better/best全部归一化为good;而后者是指将单词的词缀部分舍弃,只保留词干,例如将revival变为reviv。由此可以看出,前者的实现更依赖于词典映射,也更难;而后者更依赖规则,截取后的结果不一定是完整的单词,上面的例子也可以说明这一点。
· 词例化(Tokenization):将文本处理为词例(Token)的序列。词例是自然语言处理系统的基本处理单位,很难给词例下一个简洁而有描述力的定义,因此更好的了解方式可能是看几个具体的例子。对中文自然语言处理来说,一个单词或者一个标点符号都可以是一个词例,例如将“我爱北京天安门。”处理成“我/爱/北京/天安门/。”,所以也有人把词例化译为分词;对英文自然语言处理来说,虽然单词之间已经有了空格,但是在交给计算机算法处理之前仍然需要处理标点和缩写问题,例如将“He's tall.”处理为“He/'s/tall/.”。全体语料库(Corpus)中,一个词可能会出现多次,并且每次出现都叫一个词例,但这些词例都属于同一个词型(Type)。所有词型的集合被称为词汇表(Vocabulary,亦称词表)。值得注意的是,现在也有很多基于单个汉字的中文处理系统或者基于子词单元(Subword Unit)的英文处理系统,此时词例就是单个汉字或子词,词表就是全体汉字或者子词组成的集合。
· 词性标注(Part-Of-Speech Tagging):给一句话中的每个词标记出词性,例如将“我/爱/北京/天安门”标记为“代词/动词/名词/名词”。
· 命名实体识别(Named Entity Recognition):识别出一句话中的命名实体(Named Entity),即人名、地名、机构名等。例如将“我/爱/北京/天安门”标记为“无关/无关/地名/地名”。命名实体识别在智能语音助手等领域很有用。
· 情感分析(Sentiment Analysis):判断一段输入文字的情感倾向是正面的还是负面的。例如从网络语料中分析某一部电影的口碑好坏。
· 词义消歧(Word Sense Disambiguation):确定一句话中的某个多义词到底取哪一个义项。
· 依存句法分析(Dependency Parsing):解析出一句话中词与词之间的依赖关系,进而解释其句法结构。
· 语言模型(Language Modelling):给出一个句子出现的概率。可以用于判断句子是否通顺,或者生成新的句子。
· 文本摘要(Text Summarization):给一篇文章生成一份摘要。应用场景包括新闻标题生成、搜索结果片段生成等。
· 机器翻译(Machine Translation):将一段话从一种语言(如汉语)翻译到另一种语言(如英语),其中前一种语言称作源语言(Source Language),后一种语言称作目标语言(Target Language)。
也有人将自然语言处理划分为自然语言理解(Natural Language Understanding)和自然语言生成(Natural Language Generation)。前者是指那些分析文本内容的任务,例如情感分析和词义消歧等;而后者是指那些生成新的文本内容的任务,例如文本摘要和机器翻译等,如图1-1所示。当然,严格来讲,受控条件下的文本生成都需要某种程度的文本“理解”。以机器翻译为例,一种可能的实现方式是通过自然语言理解技术解析源语言的句意,将其表示成某种中间结果(例如隐向量或者句法树),然后再利用自然语言生成技术,从该中间结果生成目标语言的句子。现在常用的编码器-解码器框架(Encoder-Decoder Framework)从模型结构上恰好对应了自然语言理解和自然语言生成这两部分。
图1-1 自然语言处理=自然语言理解+自然语言生成