自然语言处理(NLP)是有关计算语言学与人工智能的研究领域之一。NLP主要关注人机交互,它提供了计算机和人类之间的无缝交互,使得计算机在机器学习的帮助下理解人类语言。
本书详细介绍如何使用Python执行各种自然语言处理(NLP)任务,并帮助读者掌握利用Python设计和构建基于NLP的应用的实践。本书引导读者应用机器学习工具来开发各种各样的模型。对于训练数据的创建和主要NLP应用的实现,例如命名实体识别、问答系统、语篇分析、词义消歧、信息检索、情感分析、文本摘要以及指代消解等,本书都进行了清晰的介绍。本书有助于读者使用NLTK创建NLP项目并成为相关领域的专家。
通过阅读本书,你将能够:
● 实现字符串匹配算法以及标准化技术;
● 实现统计语言建模技术;
● 深刻理解词干提取器、词形还原器、形态分析器以及形态生成器的开发;
● 开发搜索引擎并实现词性标注和统计建模(包含n-gram方法)等相关概念;
● 熟悉诸如树型库建设、CFG建设、CYK以及Earley线图解析算法等相关概念;
● 开发基于NER的系统并理解和应用情感分析的相关概念;
● 理解并实现信息检索和文本摘要等相关概念;
● 开发语篇分析系统以及基于指代消解的系统。
精通Python自然语言处理 内容简介
自然语言处理是计算语言学和人工智能之中与人机交互相关的领域之一。
本书是学习自然语言处理的一本综合学习指南,介绍了如何用Python实现各种NLP任务,以帮助读者创建基于真实生活应用的项目。全书共10章,分别涉及字符串操作、统计语言建模、形态学、词性标注、语法解析、语义分析、情感分析、信息检索、语篇分析和NLP系统评估等主题。
本书适合熟悉Python语言并对自然语言处理开发有一定了解和兴趣的读者阅读参考。
精通Python自然语言处理 目录
前言
第1章 字符串操作
1.1 切分
1.2 标准化
1.3 替换和校正标识符
1.4 在文本上应用Zipf定律
1.5 相似性度量
1.6 小结
第2章 统计语言建模
2.1 理解单词频率
2.2 在MLE模型上应用平滑
2.3 为MLE开发一个回退机制
2.4 应用数据的插值以便获取混合搭配
2.5 通过复杂度来评估语言模型
2.6 在语言建模中应用Metropolis-Hastings算法
2.7 在语言处理中应用Gibbs采样法
2.8 小结
第3章 形态学:在实践中学习
3.1 形态学简介
3.2 理解词干提取器
3.3 理解词形还原
3.4 为非英文语言开发词干提取器
3.5 形态分析器
3.6 形态生成器
3.7 搜索引擎
3.8 小结
第4章 词性标注:单词识别
4.1 词性标注简介
4.2 创建词性标注语料库
4.3 选择一种机器学习算法
4.4 涉及n-gram的统计建模
4.5 使用词性标注语料库开发分块器
4.6 小结
第5章 语法解析:分析训练资料
5.1 语法解析简介
5.2 Treebank建设
5.3 从Treebank提取上下文无关文法规则
5.4 从CFG创建概率上下文无关文法
5.5 CYK线图解析算法
5.6 Earley线图解析算法
5.7 小结
第6章 语义分析:意义很重要
6.1 语义分析简介
6.2 使用Wordnet生成同义词集id
6.3 使用Wordnet进行词义消歧
6.4 小结
第7章 情感分析:我很快乐
7.1 情感分析简介
7.2 小结
第8章 信息检索:访问信息
8.1 信息检索简介
8.2 向量空间评分及查询操作符关联
8.3 使用隐性语义索引开发IR系统
8.4 文本摘要
8.5 问答系统
8.6 小结
第9章 语篇分析:理解才是可信的
9.1 语篇分析简介
9.2 小结
第10章 NLP系统评估:性能分析
10.1 NLP系统评估要点
10.2 IR系统的评估
10.3 错误识别指标
10.4 基于词汇搭配的指标
10.5 基于句法匹配的指标
10.6 使用浅层语义匹配的指标
10.7 小结
精通Python自然语言处理 精彩文摘
自然语言处理(Natural Language Processing,NLP)关注的是自然语言与计算机之间的交互。它是人工智能(Artificial Intelligence,AI)和计算语言学的主要分支之一。它提供了计算机和人类之间的无缝交互并使得计算机能够在机器学习的帮助下理解人类语言。在编程语言(例如C、C++、Java、Python等)里用于表示一个文件或文档内容的基础数据类型被称为字符串。在本章中,我们将探索各种可以在字符串上执行的操作,这些操作将有助于完成各种NLP任务。
本章将包含以下主题:
·文本切分。
·文本标准化。
·替换和校正标识符。
·在文本上应用Zipf定律。
·使用编辑距离算法执行相似性度量。
·使用Jaccard系数执行相似性度量。
·使用Smith Waterman算法执行相似性度量。
切分可以认为是将文本分割成更小的并被称作标识符的模块的过程,它被认为是NLP的一个重要步骤。
当安装好NLTK包并且Python的交互式开发环境(IDLE)也运行起来时,我们就可以将文本或者段落切分成独立的语句。为了实现切分,我们可以导入语句切分函数,该函数的参数即为需要被切分的文本。
sent_tokenize函数使用了NLTK包的一个叫作PunktSentenceTokenizer类的实例。基于那些可以标记句子开始和结束的字母和标点符号,NLTK中的这个实例已经被训练用于对不同的欧洲语言执行切分。