本书以零基础的用户通过自学进行一个中文分词系统软件做为总体目标。从Java基本英语的语法刚开始,随后到文本处理相关的数据结构和优化算法,*后保持文字分割和词性标注。这书是小有的介绍业内受欢迎的Java开发设计中文分词的书藉。这书选择相关行业的经典內容深层次了解和发掘,也综合性了理论性强的自主创新念头。适用对开发软件很感兴趣的青少年儿童或是在校大学生。
这书以让零基础的用户根据通过自学进行一个中文分词系统软件为总体目标,从Java基本英语的语法刚开始解读,随后介绍文本处理相关的数据结构和优化算法,*后介绍怎样保持文字分割和词性标注。
这书是介绍业内受欢迎的以Java开发设计中文分词技术性的*书藉。这书选择相关行业的经典內容,深层次了解和发掘,也综合性了理论性强的自主创新念头,合适对开发软件很感兴趣的青少年儿童或是在校大学生阅读文章和学习培训。
目录
- 第1章 Java软件开发 1
- 1.1 背景 3
- 1.1.1 好身体是一切成功的保证 3
- 1.1.2 路线图 4
- 1.1.3 Java 4
- 1.2 软件工具 7
- 1.2.1 搜索引擎 7
- 1.2.2 Windows命令行 8
- 1.2.3 机器翻译 9
- 1.2.4 Linux 10
- 1.2.5 源代码比较工具 11
- 1.3 Java基础 11
- 1.3.1 准备开发环境 11
- 1.3.2 Eclipse 13
- 1.4 本章小结 17
- 第2章 结构化程序设计 19
- 2.1 基本数据类型 19
- 2.2 变量 20
- 2.2.1 表达式执行顺序 22
- 2.2.2 简化的运算符 23
- 2.2.3 常量 24
- 2.3 控制结构 25
- 2.3.1 语句 25
- 2.3.2 判断条件 25
- 2.3.3 三元运算符 27
- 2.3.4 条件判断 27
- 2.3.5 循环 31
- 2.4 方法 36
- 2.4.1 main方法 41
- 2.4.2 递归调用 41
- 2.4.3 方法调用栈 42
- 2.5 数组 42
- 2.5.1 数组求和 45
- 2.5.2 计算平均值举例 45
- 2.5.3 前趋节点数组 46
- 2.5.4 快速复制 47
- 2.5.5 循环不变式 49
- 2.6 字符串 50
- 2.6.1 字符编码 52
- 2.6.2 格式化 53
- 2.6.3 增强switch语句 54
- 2.7 数值类型 54
- 2.7.1 类型转换 58
- 2.7.2 整数运算 59
- 2.7.3 数值运算 60
- 2.7.4 位运算 61
- 2.8 安装Java 69
- 2.8.1 服务器端安装 69
- 2.8.2 自动安装Java 70
- 2.9 提高代码质量 72
- 2.9.1 代码整洁 72
- 2.9.2 单元测试 72
- 2.9.3 调试 73
- 2.9.4 重构 73
- 2.10 本章小结 74
- 第3章 面向对象编程 77
- 3.1 类和对象 77
- 3.1.1 类 78
- 3.1.2 类方法 78
- 3.1.3 类变量 79
- 3.1.4 实例变量 79
- 3.1.5 构造方法 82
- 3.1.6 对象 84
- 3.1.7 实例方法 87
- 3.1.8 调用方法 89
- 3.1.9 内部类 89
- 3.1.10 克隆 90
- 3.1.11 结束 91
- 3.2 继承 92
- 3.2.1 重写 92
- 3.2.2 继承构造方法 94
- 3.2.3 接口 95
- 3.2.4 匿名类 98
- 3.2.5 类的兼容性 98
- 3.3 封装 98
- 3.4 重载 99
- 3.5 静态 100
- 3.5.1 静态变量 100
- 3.5.2 静态类 100
- 3.5.3 修饰类的关键词 101
- 3.6 枚举类型 101
- 3.7 集合类 105
- 3.7.1 动态数组 105
- 3.7.2 散列表 106
- 3.7.3 泛型 109
- 3.7.4 Google Guava集合 112
- 3.7.5 类型擦除 112
- 3.7.6 遍历 114
- 3.7.7 排序 117
- 3.7.8 lambda表达式 119
- 3.8 比较 119
- 3.8.1 Comparable接口 119
- 3.8.2 比较器 120
- 3.9 SOLID原则 122
- 3.10 异常 123
- 3.10.1 断言 123
- 3.10.2 Java中的异常 124
- 3.10.3 从方法中抛出异常 126
- 3.10.4 处理异常 128
- 3.10.5 正确使用异常 130
- 3.11 字符串对象 132
- 3.11.1 字符对象 135
- 3.11.2 查找字符串 135
- 3.11.3 修改字符串 136
- 3.11.4 格式化 136
- 3.11.5 常量池 137
- 3.11.6 关于对象不可改变 139
- 3.12 日期 140
- 3.13 大数对象 141
- 3.14 给方法传参数 142
- 3.14.1 基本类型和对象 143
- 3.14.2 重载 145
- 3.15 文件操作 146
- 3.15.1 文本文件 146
- 3.15.2 二进制文件 149
- 3.15.3 文件位置 152
- 3.15.4 读写Unicode编码的文件 153
- 3.15.5 文件描述符 155
- 3.15.6 对象序列化 156
- 3.15.7 使用IOUtils 160
- 3.16 Java类库 161
- 3.16.1 使用Java类库 162
- 3.16.2 构建JAR包 163
- 3.16.3 使用Ant 167
- 3.16.4 生成JavaDoc 167
- 3.16.5 ClassLoader 168
- 3.16.6 反射 172
- 3.17 编程风格 173
- 3.17.1 命名规范 173
- 3.17.2 流畅接口 174
- 3.17.3 日志 175
- 3.18 IDEA 181
- 3.19 实例 181
- 3.20 本章小结 183
- 第4章 处理文本 185
- 4.1 字符串操作 185
- 4.2 有限状态机 188
- 4.2.1 从NFA到DFA 190
- 4.2.2 DFA 194
- 4.2.3 DFA交集 197
- 4.2.4 DFA并集 203
- 4.2.5 有限状态转换 204
- 4.3 本章小结 207
- 第5章 数据结构 209
- 5.1 链表 209
- 5.2 树算法 210
- 5.2.1 标准Trie树 211
- 5.2.2 链表Trie树 221
- 5.2.3 二叉搜索树 223
- 5.2.4 数组形式的二叉树 227
- 5.2.5 三叉Trie树 233
- 5.2.6 三叉Trie树交集 244
- 5.2.7 Trie树词典 245
- 5.2.8 平衡Trie树 249
- 5.2.9 B树 250
- 5.3 双数组Trie 251
- 5.4 队列 257
- 5.4.1 链表实现的队列 257
- 5.4.2 优先队列 258
- 5.4.3 找出前k个最大的元素 261
- 5.5 堆栈 262
- 5.6 双端队列 264
- 5.7 散列表 268
- 5.7.1 快速查找的散列表 269
- 5.7.2 HashMap 272
- 5.7.3 应用散列表 276
- 5.7.4 开放式寻址 279
- 5.7.5 布隆过滤器 282
- 5.7.6 SimHash 284
- 5.8 图 286
- 5.8.1 表示图 287
- 5.8.2 遍历图 295
- 5.9 大数据 297
- 5.10 本章小结 297
- 第6章 算法 299
- 6.1 贪婪法 299
- 6.2 分治法 301
- 6.3 动态规划 302
- 6.4 在中文分词中使用动态规划算法 303
- 6.5 本章小结 310
- 第7章 最长匹配分词 311
- 7.1 正向最大长度匹配法 312
- 7.2 逆向最大长度匹配法 316
- 7.3 处理未登录串 320
- 7.4 开发分词 324
- 7.5 本章小结 326
- 第8章 概率语言模型的分词方法 327
- 8.1 一元模型 328
- 8.2 整合基于规则的方法 334
- 8.3 表示切分词图 336
- 8.4 形成切分词图 342
- 8.5 数据基础 344
- 8.5.1 文本形式的词表 344
- 8.5.2 数据库词表 348
- 8.6 改进一元模型 349
- 8.7 二元词典 352
- 8.8 完全二叉数组 357
- 8.9 三元词典 360
- 8.10 N元模型 361
- 8.11 N元分词 362
- 8.12 生成语言模型 368
- 8.13 评估语言模型 369
- 8.14 概率分词的流程与结构 370
- 8.15 本章小结 371
- 第9章 词性标注 373
- 9.1 数据基础 376
- 9.2 隐马尔科夫模型 377
- 9.3 存储数据 385
- 9.4 统计数据 390
- 9.5 整合切分与词性标注 392
- 9.6 知识型词性序列标注 396
- 9.7 本章小结 396
- 参考资源 397
- 后记 398