描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121286209
2、Java实现精彩详实
3、应用案例真实有用
1.1 付出与回报 2
1.1.1 如何开始 2
1.1.2 招聘人员 2
1.1.3 学习 3
1.2 开发环境 3
1.3 技术基础 4
1.3.1 Java 4
1.3.2 规则方法 5
1.3.3 统计方法 5
1.3.4 计算框架 5
1.3.5 文本挖掘 7
1.3.6 语义库 7
1.4 本章小结 9
1.5 专业术语 9
第2章 中文分词原理与实现 11
2.1 接口 12
2.1.1 切分方案 13
2.1.2 词特征 13
2.2 查找词典算法 13
2.2.1 标准Trie树 14
2.2.2 三叉Trie树 18
2.2.3 词典格式 26
2.3 长匹配中文分词 27
2.3.1 正向长度匹配法 28
2.3.2 逆向长度匹配法 33
2.3.3 处理未登录串 39
2.3.4 开发分词 43
2.4 概率语言模型的分词方法 45
2.4.1 一元模型 47
2.4.2 整合基于规则的方法 54
2.4.3 表示切分词图 55
2.4.4 形成切分词图 62
2.4.5 数据基础 64
2.4.6 改进一元模型 75
2.4.7 二元词典 79
2.4.8 完全二叉树组 85
2.4.9 三元词典 89
2.4.10 N元模型 90
2.4.11 N元分词 91
2.4.12 生成语言模型 99
2.4.13 评估语言模型 100
2.4.14 概率分词的流程与结构 101
2.4.15 可变长N元分词 102
2.4.16 条件随机场 103
2.5 新词发现 103
2.5.1 成词规则 109
2.6 词性标注 109
2.6.1 数据基础 114
2.6.2 隐马尔可夫模型 115
2.6.3 存储数据 124
2.6.4 统计数据 131
2.6.5 整合切分与词性标注 133
2.6.6 大词表 138
2.6.7 词性序列 138
2.6.8 基于转换的错误学习方法 138
2.6.9 条件随机场 141
2.7 词类模型 142
2.8 未登录词识别 144
2.8.1 未登录人名 144
2.8.2 提取候选人名 145
2.8.3 长人名切分 153
2.8.4 一元概率人名切分 153
2.8.5 二元概率人名切分 156
2.8.6 未登录地名 159
2.8.7 未登录企业名 160
2.9 平滑算法 160
2.10 机器学习的方法 164
2.10.1 熵 165
2.10.2 条件随机场 170
2.11 有限状态机 171
2.12 地名切分 178
2.12.1 识别未登录地名 179
2.12.2 整体流程 185
2.13 企业名切分 187
2.13.1 识别未登录词 188
2.13.2 整体流程 190
2.14 结果评测 190
2.15 本章小结 191
2.16 专业术语 193
第3章 英文分析 194
3.1 分词 194
3.1.1 句子切分 194
3.1.2 识别未登录串 197
3.1.3 切分边界 198
3.2 词性标注 199
3.3 重点词汇 202
3.4 句子时态 203
3.5 本章小结 204
第4章 依存文法分析 205
4.1 句法分析树 205
4.2 依存文法 211
4.2.1 中文依存文法 211
4.2.2 英文依存文法 220
4.2.3 生成依存树 232
4.2.4 遍历 235
4.2.5 机器学习的方法 237
4.3 小结 237
4.4 专业术语 238
第5章 文档排重 239
5.1 相似度计算 239
5.1.1 夹角余弦 239
5.1.2 长公共子串 242
5.1.3 同义词替换 246
5.1.4 地名相似度 248
5.1.5 企业名相似度 251
5.2 文档排重 251
5.2.1 关键词排重 251
5.2.2 SimHash 254
5.2.3 分布式文档排重 268
5.2.4 使用文本排重 269
5.3 在搜索引擎中使用文本排重 269
5.4 本章小结 270
5.5 专业术语 270
第6章 信息提取 271
6.1 指代消解 271
6.2 中文关键词提取 273
6.2.1 关键词提取的基本方法 273
6.2.2 HITS算法应用于关键词提取 275
6.2.3 从网页中提取关键词 277
6.3 信息提取 278
6.3.1 提取联系方式 280
6.3.2 从互联网提取信息 281
6.3.3 提取地名 282
6.4 拼写纠错 283
6.4.1 模糊匹配问题 285
6.4.2 正确词表 296
6.4.3 英文拼写检查 298
6.4.4 中文拼写检查 300
6.5 输入提示 302
6.6 本章小结 303
6.7 专业术语 303
第7章 自动摘要 304
7.1 自动摘要技术 305
7.1.1 英文文本摘要 307
7.1.2 中文文本摘要 309
7.1.3 基于篇章结构的自动摘要 314
7.1.4 句子压缩 314
7.2 指代消解 314
7.3 Lucene中的动态摘要 314
7.4 本章小结 317
7.5 专业术语 318
第8章 文本分类 319
8.1 地名分类 321
8.2 错误类型分类 321
8.3 特征提取 322
8.4 关键词加权法 326
8.5 朴素贝叶斯 330
8.6 贝叶斯文本分类 336
8.7 支持向量机 336
8.7.1 多级分类 345
8.7.2 规则方法 347
8.7.3 网页分类 350
8.8 熵 351
8.9 信息审查 352
8.10 文本聚类 353
8.10.1 K均值聚类方法 353
8.10.2 K均值实现 355
8.10.3 深入理解DBScan算法 359
8.10.4 使用DBScan算法聚类实例 361
8.11 本章小结 363
8.12 专业术语 363
第9章 文本倾向性分析 364
9.1 确定词语的褒贬倾向 367
9.2 实现情感识别 368
9.3 本章小结 372
9.4 专业术语 373
第10章 问答系统 374
10.1 问答系统的结构 375
10.1.1 提取问答对 376
10.1.2 等价问题 376
10.2 问句分析 377
10.2.1 问题类型 377
10.2.2 句型 381
10.2.3 业务类型 381
10.2.4 依存树 381
10.2.5 指代消解 383
10.2.6 二元关系 383
10.2.7 逻辑表示 386
10.2.8 问句模板 386
10.2.9 结构化问句模板 389
10.2.10 检索方式 390
10.2.11 问题重写 395
10.2.12 提取事实 395
10.2.13 验证答案 398
10.2.14 无答案的处理 398
10.3 知识库 398
10.4 聊天机器人 399
10.4.1 交互式问答 401
10.4.2 垂直领域问答系统 402
10.4.3 语料库 405
10.4.4 客户端 405
10.5 自然语言生成 405
10.6 依存句法 406
10.7 提取同义词 410
10.7.1 流程 410
10.8 本章小结 411
10.9 术语表 412
第11章 语音识别 413
11.1 总体结构 414
11.1.1 识别中文 416
11.1.2 自动问答 417
11.2 语音库 418
11.3 语音合成 419
11.3.1 归一化 420
11.4 语音 420
11.4.1 标注 424
11.4.2 相似度 424
11.5 Sphinx 424
11.5.1 中文训练集 426
11.6 Julius 429
11.7 本章小结 429
11.8 术语表 429
参考资源 430
后记 431
本书的编者在自然语言处理教学和软件开发过程中积累的经验融入到本书的各个环节,读者会因此感到原理和实际应用结合得非常紧密。编者的实践经验还体现在相关的其他书中,如《自己动手写搜索引擎》《自己动手写网络爬虫》《自己动手写网络爬虫》《使用C#开发搜索引擎》《解密搜索引擎技术实战》等。
有一些自然语言处理的开发原理与技巧在专业的公司内部秘而不宣。理论与实践结合的专门讲自然语言处理的书籍仍然相对较少。本书尝试先介绍原理,接着是具体的代码实现分析。本书相关的代码在读者QQ群(499526946)中的共享文件中可以找到。
国外有的基础课程从“构建搜索引擎”开始介绍计算机科学。我们的相关培训课程已经这样做了。当年参加过培训的学员,有些已经创业成功或者成为公司的技术骨干。要根据培训经验写出很好的自学教程,我们还有很多工作要做。零基础自学的读者,可能还需要其他方式来补足。
自然语言处理开发岗位比较少。如果能够花若干年开写出自己的软件产品,那么就可以合伙创业了。这个过程对很多人来说,往往太漫长。像老外那样把冰箱放满匹萨饼和可乐,然后就开始干活,这样往往行不通,因为那样吃不了几天。可以买好能够保存几十年的谷子、水培可以吃若干年的韭菜。
就好像放在水里的韭菜种子,刚开始几天根本看不到变化,学习是个循序渐进的过程。可以在读者群中共同学习。
感谢开源软件和我们的家人,关心我们的老师和朋友们、创业伙伴,以及选择猎兔自然语言处理软件的客户多年来的支持。
特别提醒大家:经常面对电脑,容易阻塞气血。往往并没有免费的程序员保健师帮忙,所以需要自己多压腿,拉伸身体。多做腹部运动,减少腹部脂肪堆积,避免脂肪肝等疾病。此外,还可以拍打身体,例如腋下、臂弯、腘窝等关节凹下去的地方。
长时间对着散发蓝光的电脑屏幕容易失眠。为了提高睡眠质量,可以经常吃小米、藕、虾皮、鸡蛋等,喝决明子、玉兰花、熏衣草、绞股蓝等花草茶。
10.4 聊天机器人
离线时,可以有个代替本人的自动对话系统来和来人对话。实现时,对每个人分别建立惯用法。例如对肯定答复,有人喜欢说:好的呀;有人喜欢说:可以。根据对话历史记录对个人画像。
对话任务是由一系列的对话行为(Dialogue Act简称DA)组成的,如提问——回答——确认。
对话行为(Dialog Act)是指一个语句在“行为”方面的功能,如提问(Question)、陈述(Statement)、确认(Confirmation)等。事实上,人们在对话过程中可以很清楚地区分各种不同的对话行为(DA),这样,人与人之间才可以“交谈”,不会出现“文不对题”、“牛头不对马嘴”的现象。因此,人机交互中,如果系统能够知道用户语句的“对话行为”,对于理解用户语句,保持人机交流是非常有用的。
航班信息系统EasyFlight是一个特定领域的对话应用,其中的对话行为(DA)比较简单,涉及到系统用户的对话行为主要有以下几种。
? 提问(Question):提问是用户使用多的一种对话行为。通过提问,用户告诉系统自己需要什么样的信息。与英语不同,汉语中的问句没有严格的语序要求,疑问词的选择十分灵活,疑问词的位置几乎可以在句子的任何地方。EasyFlight中的提问主要有两种情况:一种是有明确的疑问词,如“什么”、“哪些”、“多少”、“有没有”;另一种语句很难找到一个真正的疑问词,但它有语气助词,如这个句子——“后天有从深圳回北京的票吗?”
? 陈述(Statement):用户回答系统提问时常用的一种对话行为,常用于给出查询信息,如“大概中午十二点左右的”。
? 确认(Confirmation):确认分为两种:肯定确认和否定确认,如“对,订三张票”。
? 问候(Greeting):引导对话开始的对话行为,如“您好”。
? 感谢和再见(Thank&GoodBye):表示对话结束的对话行为,如“谢谢帮忙”。
对话行为分类的研究中,一般使用基于文字信息的方法,如用N-gram的方法;而利用韵律信息是另外一种对话行为分类的方法。有些情况下,仅仅从文字上难以区分对话行为,如下面两个句子:
? 他拿了名。(陈述)
? 他拿了名?(反问)
这两个句子文字上完全相同,却是截然不同的两种对话行为(DA)。前一句话只是简单地陈述一个事实;而后面一句却包含了强烈的反问语气,表明说话人不太相信这个事实,希望对话的另一方给出解释或者说明,而且说话人强调的内容不同也可以反映他怀疑的内容不同(如强调“他”表示说话人不相信名是他,而强调“名”表示不相信他会取得那么好的成绩)。这时候,韵律是好的特征,它可以反映说话人的不同语气,从而区分对话行为。
对话管理器(Dialogue Manager简称DM)记录当前对话状态,DM根据输入对话行为更新状态并选择回应对话行为。
聊天机器人Alice有40,000多个模板,也是采用了模式匹配的方法来检索合适的回答。使用Artificial Intelligence Markup Language(简称为AIML)存储模式,也就是问答对。Alice采用了一种很好的扩充机制,AIML文件可以进行内联,许多包含特殊领域知识的AIML文件可以方便地合并成一个更大的知识库。
AIML的例子:
你叫什么
模板中可以使用变量,例如:
我叫
Think是一个模板标签,表示执行指令但是不输出答案。例如,执行加法的例子:
* PLUS *
AIML相关的实现见https://github.com/dawnofmusic/Elsbeth。
例如,询问天气,系统根据用户的IP地址或者手机所在位置得到提问者的位置。系统返回近多少天的天气信息。用户进一步可以更改要查询的城市。
把用户输入的拼音串转换成汉字,或者把繁体中文转换成简体中文。
给机器人说:“翻译,how old are you.”,机器人应该能够返回一个翻译结果。
评论
还没有评论。