自然语言处理综论第三版笔记1

举报
feichaiyu 发表于 2019/10/14 20:31:55 2019/10/14
【摘要】 丹尼尔(daniel)的新书自然语言处理综论(第二版)2018年刚刚发布不久(其实这本书可能在2007年已经完成了初稿(我在网上看到的英文版draft edition写的是2007年,存疑)),他继续教授自然语言处理和语音识别的相关课程。但就在书籍完成后的10多年间计算机领域发生翻天覆地的变化。尽管第二版对第一版的修订内容非常多,但是书籍仍然忠实的对照其题目《Speech and langu...

丹尼尔(daniel)的新书自然语言处理综论(第二版)2018年刚刚发布不久(其实这本书可能在2007年已经完成了初稿(我在网上看到的英文版draft edition写的是2007年,存疑)),他继续教授自然语言处理和语音识别的相关课程。但就在书籍完成后的10多年间计算机领域发生翻天覆地的变化。尽管第二版对第一版的修订内容非常多,但是书籍仍然忠实的对照其题目《Speech and language Processing》,对语音识别领域花费了巨大的篇幅。实际上,近年来随着模式识别技术的发展以及机器学习领域的不断突破,语音识别的准确率已经非常高,人们逐渐把目标转移到了自然语言处理的其他方面如语义识别,情感分析,语义检索等。所幸的是,丹尼尔一直保持着对自然语言处理领域技术的不断追求,他的第三版已经将研究的重点放在了上述领域,同时减少了技术实现的一些细节性的探求,进一步降低了学习的门槛。本周以来,我一直在学习这本书,这本书是一本百科全书式的工具书,值得每个人深入学习NLP技术的人学习。我在学习这本书的时候做了些笔记,已经向这本书的作者Daniel申请将这些笔记,放到网上(尽管他还未回复)。这些笔记和翻译的内容不作为商业应用的目的,同时如果需要引用请注明引用来源: YanjunQian@YNU。如果在阅读过程中出现难以理解或者翻译错误的地方请及时指出,并可以通过邮件与我联系 q_y_jun@163.com。   自己写发挥的内容一般都用斜体标出。

####一、书籍的下载地址    我获取这本书的途径为互联网,是作者课件的一些汇编:http://web.stanford.edu/~jurafsky/slp3/ 。 请大家自行下载同时注意对作者劳动的尊重和版权的保护。

####二、2.9-2.14笔记 1、书籍的组织    我阅读书籍一般是从译者序和前言开始阅读,从中可以了解到这本书的重点在什么地方,同时计算机教科书类书籍一般会介绍每个章节的先序知识是哪些,那部分内容应该花费多少时间去学习。这是非常重要的。这样才能有的放矢。同时书籍的组织形式也可以让我们对知识框架有所了解,有助于系统性学习。    这本书主体内容共26章,分别为:1、引言;2、正则表达式、文本规范化、编辑距离;3、N元语言模型;4、朴素贝叶斯以及情感分类;5、逻辑回归;6、语义向量表示;7、自然语言的神经网络模型;8、语音标注;9、序列处理和递归神经网络;10、英语的规范语法;11、句法解析;12、统计解析;13、依赖解析;14、句子内容的表示;15、计算语义;16、语义解析;17、信息提取;18、语义角色标注;19、情感、情绪以及内涵的词汇;20、实体联系及依赖解析;21、话语连贯;22、机器翻译;23、问答系统;23、对话系统和对话机器人;24、先进的对话系统;25、语音识别及综合推理(synthesis)。    从文章的组织来看,全是自然语言处理的热点和难点。同时,深入阅读你还会看到,由于国内自然语言处理取得的举世瞩目的成绩,这本书对中文自然语言处理的内容也做了一部分描述。    附录部分还介绍了隐马尔科夫模型、拼写校正以及噪声通道、wordNet等内容。 2、阅读计划     我的阅读计划是2-3天一章。整理出来可能要到第3天或者第4天。同时也会把我认为自己认为是重点的部分加以介绍,笔记的内容可能是原文,也可能会有扩展。对于我不懂的部分也会拿出来表明是自己的理解,欢迎讨论。 第一章、引言 作者没有写 第二章、本章一开始介绍了一种能够进行对话的聊天机器人,这种机器人发明于20世纪70年代,它可以通过对特定模式的句子翻译从而产生对话。虽然基于的是一种简单规则但是有效。正则表达式是一种描述提取满足指定文本格式内容的工具。正则表达式可以在文本规范化(text nomalization)中发挥作用。    文本规范化的目的是为了产生满足自然语言处理需要的格式。比如分词(tokenization或者叫做词次),将表情符号或者转义符号进行处理等。文本规范化还包括词性转换(不同时态的单词之间的转换)、词干提取、句子划分等内容。编辑距离是英语中衡量两个词语语义距离的有效手段。在这一章中也有介绍。   2.1 正则表达式regular expression 正则表达式的工具很多,其中很出名的有unix下的grep等,通常正则表达式可以找出语料库(corpus)中所有满足条件的内容。但是正则表达式的实现形式有很多种我们这里介绍扩展的正则表达式。  正则表达式以“/”开头,以“/”结尾,其基本表达模式有以下几种 基本表达式 (1)单词“/rich/” (2)析取(只取其中的一个)表达式1:“/[]/”,如“/[abc]/”则只要包含a、b、c这三个字母中的一个即为满足条件。表达式2:“/a-z/”,只要是小写字母就满足条件。 (3)转义字符以“\”开头,正则表达式中存在特殊字符如? + . 等,特殊字符前面加转义字符可以表示特殊字符本身。如“.”及代表字符. (4)非,不是该字符即可,如“/^a/”不是a的句子都满足条件。 (5)句尾标志,“/a$/”,如果句尾为a满足条件, (6)单词标签“\b”, "/\bthe\b/"表示\b内的是一整个单词例如 other就不会被统计进来。   python是近年来数据科学家常用的一种编程语言,具有入门起点低,上手快,第三方代码库多的特点。正则表达式在python中实现非常简单。下面这段代码实现了一个简单正则表达式的检索。

屏幕快照 2019-10-14 下午8.28.00.png

从运行结果中可以看到,可以检索到所有满足条件的字符。需要注意的是,python正则表达式中并没有使用""标明是正则表达式标记,而是使用表达式前的字符r标识该表达式为正则表达式。 高级表达式  通配符:.单个字符。 \w 字母 \W非字母 \d 数字 \D非数字 \s 空格表示含义如[空白 \r \t \n \f]等 \S非空格字符。  个数表示字符: * 出现零次或者多次 +出现一次或多次 ?出现零次或一次{n}出现n次 {n,m}出现最少n最多m次 {n,}最少出现n次 {,m}最多出现m次  转义字符: \n换行 \t tab符号 书中给出了很多例子。我这里就不盗用了。 2.2 单词   讨论单词时很重要的两个内容一个是什么是单词,另外一个是单词数量和语料库大小的关系是什么。   什么是单词这个问题包含(1)标点符号是否是单词。在很多情况下标点符号发挥着很大作用比如,意群的划分,句子的语态(陈述、感叹、疑问等)。因此一般处理自然语言时,可以考虑将标点符号计入考虑范围。(2)同时在处理语音识别问题时断断续续(broken-off)的话语也需要考虑进来。(3)大小写有时可以表示专有名词,因此如果要进行语段规范化,也应充分考虑。(4)提取词干有助于减小词典数量。   与语料库对应的词典内单词数量是与语料库的大小呈正比关系的。可以用如下公式来表明这种关系: $$|V| = k N^\beta$$   其中V是词典内单词的数量,k为常系数,β为从0.67到0.75的一个参数。 2.3 语料库   语言不是凭空出现的(Words don't appear of nowhere.)。我们研究自然语言必须借助语料库(corpus),但是不同的语料库收到其来源的不同会有不同的风格,比如说受到文本题材的影响,作者的影响,时代的影响,来源国家的影响(不同的国家有不同的语言使用风格)。因此,使用语料库进行训练学习时最好使用与目标数据相同风格的语料库进行训练 2.4 文本规范化(Text Normalization)   文本的规范化最基本的形式有以下几种:1、分词;2、词形规范化;3、断句。Unix操作系统给出了分词和规范化的一般工具,我没有unix操作系统,所以没试。   我们在考虑分词时,还需要考虑到标点符号,因为有些标点符号的应用不是那么简单比如Ph.D这里的句号,就不是句子的分割,而是单词中的内容。这样的例子还有很多,都需要我们注意。另外在数字中也要很多需要注意的地方例如55.30这里的句号,55,555.00这里的逗号。   词性规范化要考虑词干的提取(不同的语态中)和缩写的还原如you're 可以分成you are。另外,分开写的单词不代表就是分开的两个单词如New York。这里可以使用命名实体检测(named entity detection)来找出代表姓名,日期,组织等名词的实体。对于同一单词的不同拼法,在词形归并中也要注意。例如USA和US基本可以认为等同。   应该注意的是,文本规范化的算法应该是能高效运行的。   中文分词与英文分词大不相同可以使用最大匹配算法。这是一个递归算法,最大匹配算法在英文分词中效果很差,但在中文分词中可以取得较好的效果。算法如下:

1.png

该算法在英文分词中效果不好的原因主要是英文的编辑距离太大。(编辑距离下个笔记专门介绍)。   词库缩减(collapsing words),词库缩减的方法主要是词形归并和词干提取,这里边用到的算法是BPE算法。算法如下:

2.png

连同下一节的最小编辑距离算法我们介绍一次Text Normalization算法专题。



本文转载自异步社区。

文链接:https://www.epubit.com/articleDetails?id=N0d46f219-739d-481d-b5d4-244f155fb825

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。