新書推薦:
《
世界文明中的作物迁徙:聚焦亚洲、中东和南美洲被忽视的本土农业文明
》
售價:NT$
454.0
《
无端欢喜
》
售價:NT$
347.0
《
股票大作手操盘术
》
售價:NT$
245.0
《
何以中国·何谓唐代:东欧亚帝国的兴亡与转型
》
售價:NT$
398.0
《
一间只属于自己的房间 女性主义先锋伍尔夫代表作 女性精神独立与经济独立的象征,做自己,比任何事都更重要
》
售價:NT$
203.0
《
泉舆日志 幻想世界宝石生物图鉴
》
售價:NT$
611.0
《
养育女孩 : 官方升级版
》
售價:NT$
230.0
《
跨界:蒂利希思想研究
》
售價:NT$
500.0
|
編輯推薦: |
本书融合作者多年从业和教学经验,全面阐述使用Java从非结构化数据中组织和提取有用文本的各种实用方法。 本书重点介绍NLP应用中可能遇到的核心NLP任务,每个任务都从问题的描述以及应用领域开始,循序渐进地进行分析并给出解决方案,便于你更好地理解NLP技术,高效地解决实际问题。
全书内容丰富,不仅全面描述和总结了自然语言处理的基础知识,还详细介绍了自然语言处理的多种技术,包括NLP工具、文本分词、文本断句、词性判断、任务识别、文本分类、关系提取和组合应用等。书中结合多个示例进行深入分析,并采用Java编程语言进行处理与结果分析。
|
內容簡介: |
本书将教会读者如何在Java库的帮助下执行语言分析,同时不断地从结果中获得见解。首先介绍NLP及其各种概念是如何工作的,然后探索Java中用于NLP的重要工具和库,如CoreNLP、OpenNLP、Neuroph、Mallet等。之后,读者将开始对不同的输入和任务执行NLP,例如标记、模型训练、部分语音、解析树等。读者会学习到统计机器翻译、摘要、对话系统、复杂搜索、有监督和无监督的NLP,以及其他内容。在本书的*后,读者也会学习到更多关于NLP、神经网络和其他各种Java中用于增强NLP应用程序性能的训练模型。
|
關於作者: |
审校者简介
第1章 NLP概论1
1.1 NLP是什么2
1.2 为什么使用NLP2
1.3 为什么NLP这么难3
1.4 NLP工具汇总4
1.4.1 Apache OpenNLP5
1.4.2 Stanford NLP7
1.4.3 LingPipe8
1.4.4 GATE9
1.4.5 UIMA9译者序
前言
作者简介
审校者简介
第1章 NLP概论1
1.1 NLP是什么2
1.2 为什么使用NLP2
1.3 为什么NLP这么难3
1.4 NLP工具汇总4
1.4.1 Apache OpenNLP5
1.4.2 Stanford NLP7
1.4.3 LingPipe8
1.4.4 GATE9
1.4.5 UIMA9
1.4.6 Apache Lucene Core10
1.5 Java深度学习10
1.6 文本处理任务概述11
1.6.1 查找文本的各部分11
1.6.2 文本断句13
1.6.3 特征工程14
1.6.4 查找人物和事件14
1.6.5 词性判断16
1.6.6 对文本和文档进行分类17
1.6.7 关系提取17
1.6.8 使用组合方法19
1.7 理解NLP方法19
1.7.1 识别任务19
1.7.2 选择模型20
1.7.3 建立并训练模型20
1.7.4 验证模型20
1.7.5 运用模型21
1.8 准备数据21
1.9 总结22
第2章 查找文本的各部分24
2.1 理解文章的各个部分24
2.2 分词是什么25
2.3 简单的Java分词器27
2.3.1 使用Scanner类27
2.3.2 使用split方法29
2.3.3 使用BreakIterator类29
2.3.4 使用StreamTokenizer类30
2.3.5 使用StringTokenizer类32
2.3.6 Java核心分词的性能考虑32
2.4 NLP分词器API33
2.4.1 使用OpenNLPTokenizer类33
2.4.2 使用Stanford分词器35
2.4.3 训练分词器找出文本的各部分38
2.4.4 分词器比较41
2.5 了解规范化42
2.5.1 转换成小写42
2.5.2 删除停用词43
2.5.3 使用词干分析45
2.5.4 使用词元化48
2.5.5 使用管道进行标准化处理51
2.6 总结52
第3章 文本断句53
3.1 SBD方法53
3.2 SBD难在何处54
3.3 理解LingPipe的HeuristicSentenceModel类的SBD规则55
3.4 简单的Java SBD56
3.4.1 使用正则表达式56
3.4.2 使用BreakIterator类58
3.5 使用NLP API59
3.5.1 使用OpenNLP60
3.5.2 使用Stanford API62
3.5.3 使用LingPipe69
3.6 训练文本断句模型73
3.6.1 使用训练好的模型75
3.6.2 使用SentenceDetector-Evaluator类评估模型75
3.7 总结76
第4章 人物识别77
4.1 NER难在何处78
4.2 NER方法78
4.2.1 列表和正则表达式79
4.2.2 统计分类器80
4.3 使用正则表达式进行NER80
4.3.1 使用Java的正则表达式来寻找实体80
4.3.2 使用LingPipe的RegEx-Chunker类82
4.4 使用NLP API83
4.4.1 使用OpenNLP进行NER83
4.4.2 使用Stanford API进行NER88
4.4.3 使用LingPipe进行NER89
4.5 使用NER注释工具构建新数据集93
4.6 训练模型98
4.7 总结101
第5章 词性判断102
5.1 词性标注102
5.1.1 词性标注器的重要性104
5.1.2 词性标注难在何处105
5.2 使用NLP API106
5.2.1 使用OpenNLP POS标注器107
5.2.2 使用 Stanford POS标注器115
5.2.3 使用LingPipe POS标注器120
5.2.4 训练OpenNLP POSModel124
5.3 总结125
第6章 用特征表示文本127
6.1 n-gram127
6.2 词嵌入129
6.3 GloVe131
6.4 word2vec133
6.5 降维134
6.6 主成分分析134
6.7 t-SNE135
6.8 总结138
第7章 信息检索139
7.1 布尔检索139
7.2 字典和容错性检索141
7.2.1 通配符查询141
7.2.2 拼写校正142
7.2.3 Soundex143
7.3 向量空间模型143
7.4 计分和术语加权144
7.5 逆文档频率145
7.6 TF-IDF加权145
7.7 信息检索系统的评估145
7.8 总结146
第8章 对文本和文档进行分类 147
8.1 如何使用分类147
8.2 理解情感分析148
8.3 文本分类技术150
8.4 使用API对文本进行分类151
8.4.1 使用OpenNLP151
8.4.2 使用Stanford API154
8.4.3 使用LingPipe对文本进行分类158
8.5 总结165
第9章 主题建模166
9.1 什么是主题建模166
9.2 LDA的基础167
9.3 使用MALLET进行主题建模168
9.3.1 训练168
9.3.2 评价168
9.4 总结171
第10章 使用解析器提取关系172
10.1 关系类型173
10.2 理解解析树174
10.3 使用提取的关系175
10.4 提取关系178
10.5 使用NLP API178
10.5.1 使用OpenNLP178
10.5.2 使用Stanford API181
10.5.3 查找共指消解实体184
10.6 为问答系统提取关系186
10.6.1 查找单词依赖关系186
10.6.2 确定问题类型187
10.6.3 寻找答案188
10.7 总结190
第11章 组合管道192
11.1 准备数据193
11.1.1 使用Boilerpipe从HTML抽取文本193
11.1.2 使用POI从Word文档中抽取文本195
11.1.3 使用PDFBox从PDF文档抽取文本200
11.1.4 使用Apache Tika进行内容分析和抽取201
11.2 管道203
11.2.1 使用Stanford管道203
11.2.2 在Stanford管道中使用多核处理器205
11.3 创建用于搜索文本的管道206
11.4 总结211
第12章 创建一个聊天机器人212
12.1 聊天机器人架构213
12.2 人工语言网
|
目錄:
|
译者序
前言
作者简介
审校者简介
第1章 NLP概论1
1.1 NLP是什么2
1.2 为什么使用NLP2
1.3 为什么NLP这么难3
1.4 NLP工具汇总4
1.4.1 Apache OpenNLP5
1.4.2 Stanford NLP7
1.4.3 LingPipe8
1.4.4 GATE9
1.4.5 UIMA9
1.4.6 Apache Lucene Core10
1.5 Java深度学习10
1.6 文本处理任务概述11
1.6.1 查找文本的各部分11
1.6.2 文本断句13
1.6.3 特征工程14
1.6.4 查找人物和事件14
1.6.5 词性判断16
1.6.6 对文本和文档进行分类17
1.6.7 关系提取17
1.6.8 使用组合方法19
1.7 理解NLP方法19
1.7.1 识别任务19
1.7.2 选择模型20
1.7.3 建立并训练模型20
1.7.4 验证模型20
1.7.5 运用模型21
1.8 准备数据21
1.9 总结22
第2章 查找文本的各部分24
2.1 理解文章的各个部分24
2.2 分词是什么25
2.3 简单的Java分词器27
2.3.1 使用Scanner类27
2.3.2 使用split方法29
2.3.3 使用BreakIterator类29
2.3.4 使用StreamTokenizer类30
2.3.5 使用StringTokenizer类32
2.3.6 Java核心分词的性能考虑32
2.4 NLP分词器API33
2.4.1 使用OpenNLPTokenizer类33
2.4.2 使用Stanford分词器35
2.4.3 训练分词器找出文本的各部分38
2.4.4 分词器比较41
2.5 了解规范化42
2.5.1 转换成小写42
2.5.2 删除停用词43
2.5.3 使用词干分析45
2.5.4 使用词元化48
2.5.5 使用管道进行标准化处理51
2.6 总结52
第3章 文本断句53
3.1 SBD方法53
3.2 SBD难在何处54
3.3 理解LingPipe的HeuristicSentenceModel类的SBD规则55
3.4 简单的Java SBD56
3.4.1 使用正则表达式56
3.4.2 使用BreakIterator类58
3.5 使用NLP API59
3.5.1 使用OpenNLP60
3.5.2 使用Stanford API62
3.5.3 使用LingPipe69
3.6 训练文本断句模型73
3.6.1 使用训练好的模型75
3.6.2 使用SentenceDetector-Evaluator类评估模型75
3.7 总结76
第4章 人物识别77
4.1 NER难在何处78
4.2 NER方法78
4.2.1 列表和正则表达式79
4.2.2 统计分类器80
4.3 使用正则表达式进行NER80
4.3.1 使用Java的正则表达式来寻找实体80
4.3.2 使用LingPipe的RegEx-Chunker类82
4.4 使用NLP API83
4.4.1 使用OpenNLP进行NER83
4.4.2 使用Stanford API进行NER88
4.4.3 使用LingPipe进行NER89
4.5 使用NER注释工具构建新数据集93
4.6 训练模型98
4.7 总结101
第5章 词性判断102
5.1 词性标注102
5.1.1 词性标注器的重要性104
5.1.2 词性标注难在何处105
5.2 使用NLP API106
5.2.1 使用OpenNLP POS标注器107
5.2.2 使用 Stanford POS标注器115
5.2.3 使用LingPipe POS标注器120
5.2.4 训练OpenNLP POSModel124
5.3 总结125
第6章 用特征表示文本127
6.1 n-gram127
6.2 词嵌入129
6.3 GloVe131
6.4 word2vec133
6.5 降维134
6.6 主成分分析134
6.7 t-SNE135
6.8 总结138
第7章 信息检索139
7.1 布尔检索139
7.2 字典和容错性检索141
7.2.1 通配符查询141
7.2.2 拼写校正142
7.2.3 Soundex143
7.3 向量空间模型143
7.4 计分和术语加权144
7.5 逆文档频率145
7.6 TF-IDF加权145
7.7 信息检索系统的评估145
7.8 总结146
第8章 对文本和文档进行分类 147
8.1 如何使用分类147
8.2 理解情感分析148
8.3 文本分类技术150
8.4 使用API对文本进行分类151
8.4.1 使用OpenNLP151
8.4.2 使用Stanford API154
8.4.3 使用LingPipe对文本进行分类158
8.5 总结165
第9章 主题建模166
9.1 什么是主题建模166
9.2 LDA的基础167
9.3 使用MALLET进行主题建模168
9.3.1 训练168
9.3.2 评价168
9.4 总结171
第10章 使用解析器提取关系172
10.1 关系类型173
10.2 理解解析树174
10.3 使用提取的关系175
10.4 提取关系178
10.5 使用NLP API178
10.5.1 使用OpenNLP178
10.5.2 使用Stanford API181
10.5.3 查找共指消解实体184
10.6 为问答系统提取关系186
10.6.1 查找单词依赖关系186
10.6.2 确定问题类型187
10.6.3 寻找答案188
10.7 总结190
第11章 组合管道192
11.1 准备数据193
11.1.1 使用Boilerpipe从HTML抽取文本193
11.1.2 使用POI从Word文档中抽取文本195
11.1.3 使用PDFBox从PDF文档抽取文本200
11.1.4 使用Apache Tika进行内容分析和抽取201
11.2 管道203
11.2.1 使用Stanford管道203
11.2.2 在Stanford管道中使用多核处理器205
11.3 创建用于搜索文本的管道206
11.4 总结211
第12章 创建一个聊天机器人212
12.1 聊天机器人架构213
12.2 人工语言网
|
內容試閱:
|
自然语言处理(Natural Language Processing,NLP)允许使用任何句子并识别模式、特殊名称、公司名称等。本书将教会你如何在Java库的帮助下执行语言分析,同时不断地从结果中获得见解。
首先你会了解NLP及其各种概念。掌握了基础知识之后,你将探索Java中用于NLP的重要工具和库,如CoreNLP、OpenNLP、Neuroph、Mallet等。然后,你将开始对不同的输入和任务执行NLP,例如分词、模型训练、词性标注、解析树等。你会学习到统计机器翻译、提取摘要、对话系统、复杂搜索、有监督和无监督的NLP等内容。在本书的最后,你也会学到更多关于NLP、神经网络和Java中用于增强NLP应用程序性能的其他各种训练模型。
本书读者
如果你是数据分析师、数据科学家或机器学习工程师,希望使用Java从一种语言中提取信息,那么本书非常适合你。本书需要你有Java编程基础,而对统计数据有基本的了解有助于阅读本书,但这不是必需的。
本书涵盖的内容
第1章阐述NLP的重要性和用途。本章通过简单的例子对如何使用NLP技术进行了说明。
第2章主要关注分词。这是完成更高级的NLP任务的第一步。本章介绍了核心Java和Java NLP分词的API。
第3章论证句子边界消歧是一个重要的NLP任务。这个步骤是许多其他下游NLP任务的前驱,在这些任务中,文本元素不应该跨句子边界拆分。这可以确保所有短语都在一个句子中,并支持词性分析。
第4章涵盖通常所说的命名实体识别(Named Entity Recognition,NER)。这个任务与在文本中标识人、位置和类似实体有关。这个技术是处理查询和搜索的预备步骤。
第5章会向你展示如何检测词性。词性是文本的语法元素,如名词和动词,识别这些元素是确定文本含义和检测文本内部关系的重要步骤。
第6章解释如何使用n-gram表示文本,并概述它们在揭示上下文中所起的作用。
第7章处理信息检索中发现的大量数据,并使用各种方法寻找相关信息,如布尔检索、字典和容错检索。
第8章证明文本分类在垃圾邮件检测和情感分析等任务中是有用的。本章还对支持这一过程的NLP技术进行了研究和说明。
第9章讨论使用包含一些文本的文档进行主题建模的基础知识。
第10章演示解析树。解析树有许多用途,包括信息提取,信息提取保存了关于这些元素之间关系的信息。本章给出了一个实现简单查询的示例来说明这个过程。
第11章讨论围绕使用组合技术解决NLP问题的几个议题。
第12章介绍不同类型的聊天机器人,我们也将开发一个简单的预约聊天机器人。
如何充分利用本书
Java SDK 8用于说明NLP技术。需要的各种NLP API可以随时下载。IDE不是必需的,但有条件的话还是建议下载。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http:www.packtpub.com通过个人账号下载,也可以访问华章图书官网http:www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包也存储在GitHub上,网址为https:github.comPacktPublishingNatural-Language-Processing-with-Java-Second-Edition。如果代码有更新,它将会更新到现有的GitHub存储库。
我们还有其他的代码包,它们来自我们丰富的书籍和视频目录,可以在https:github.comPacktPublishing上找到。欢迎查找下载。
我们还提供了一个PDF文件,其中有本书中使用的屏幕截图(图表的彩色图像)。你可以在http:www.packtpub.comsitesdefaultfilesdownloadsNaturalLanguageProcessingwithJavaSecondEdition_ColorImages.pdf下载。
排版约定
书中代码块设置如下:
命令行输入或输出样式如下:
|
|