
格夫·斯里尼瓦萨-德西坎
自然语言处理是一门融语言学、计算机科学、数学于一体的科学,研究人与计算机之间用自然语言进行有效通信的各种理论和方法。计算语言学是指通过建立形式化的数学模型来分析、处理自然语言,并在计算机上用程序来实现分析和处理的过程,旨在以机器来模拟人的部分或全部语言能力的目的。 《自然语言处理与计算语言学》作为一本借助于Python编程语言以及各种开源工具(如Gensim、spaCy等)来执行文本分析、自然语言处理和计算语言学算法的图书,从应用层面介绍了相关的理论知识和所涉及的技术。《自然语言处理与计算语言学》共分为15章,其内容涵盖了文本分析的定义、使用Python进行文本分析的技巧、spaCy语言模型、Gensim工具、词性标注及其应用、NER标注及其应用、依存分析、主题模型、高级主题建模、文本聚类和文本分类、查询词相似度计算和文本摘要、词嵌入、使用深度学习处理文本、使用Keras和spaCy进行深度学习、情感分析与聊天机器人的原理介绍等。 《自然语言处理与计算语言学》适合对自然语言处理的实现细节感兴趣的Python程序开发人员阅读。如果读者具备统计学的基本知识,对学习本书内容会大有裨益。
《自然语言处理与计算语言学》核心拆解 一句话概括 这是一本以Python、spaCy和Gensim为主要工具的自然语言处理实战入门书,沿着“清洗文本—分析语言结构—向量化表示—发现主题与类别—构建应用”的路线,帮助读者把非结构化语言转换成可计算、可建模的信息。 核心逻辑 全书的主线,是将人类语言逐层转换为机器能够处理的表示。 第一步是获取并整理文本。作者从文本分析的用途、数据搜集和“垃圾进、垃圾出”原则讲起,强调数据质量决定后续分析的上限,再介绍Python中的字符串、列表及基础文本操作。 第二步是加入语言学结构。借助spaCy完成分词、词性标注、命名实体识别、规则匹配和依存分析,把连续文本拆解成带有语法和语义标签的结构化对象。 第三步是把文本表示成向量。通过词袋模型、TF-IDF、n-gram、Word2Vec和Doc2Vec等方法,将词语和文档映射到数值空间,使相似度计算、聚类、分类和检索成为可能。 第四步是从语料中发现模式。主题模型用于寻找文档集合中的潜在主题,聚类在缺乏标签时自动形成文本群组,分类则利用已标注数据预测类别,摘要和相似度计算负责压缩、匹配与检索信息。 第五步是扩展到深度学习和实际应用。书末介绍Keras与spaCy的深度学习接口,并把前面的能力组合到情感分析、社交媒体数据挖掘、文本生成和聊天机器人之中。 核心内容 1. 文本分析的起点是数据,而不是算法 自然语言数据往往包含噪声、拼写变化、符号、停用词和格式差异。采集范围、样本偏差和清洗规则会直接影响结论。“垃圾进、垃圾出”意味着,再复杂的模型也不能自动弥补错误或失真的语料。一个可靠项目应先定义问题、数据来源和评价方式,再选择工具。 2. 预处理是语言与模型之间的接口 分词把文本切分为基本单位;词形还原将不同变体映射到共同形式;停用词过滤、大小写统一和标点处理降低无关差异;n-gram保留连续词组信息。预处理并非固定配方:情感分析中的否定词、实体识别中的大小写、作者风格分析中的标点,都可能是重要信号。 3. 语言学标注让文本获得结构 词性标注回答一个词在句中承担什么语法角色;命名实体识别人名、地点、机构、时间等现实对象;依存分析描述词语之间的修饰和支配关系;规则匹配则把业务知识写成可执行模式。这些能力既可以直接服务信息抽取,也可以为分类、问答和知识组织提供特征。 4. 向量化决定机器如何比较文本 词袋模型只记录词语是否出现及出现次数,简单但忽略词序;TF-IDF降低高频通用词的权重,突出对某篇文档更有区分度的词;n-gram补充局部顺序;Word2Vec、GloVe和FastText等词嵌入,则根据上下文关系学习稠密向量,使语义接近的词在空间中彼此靠近。Doc2Vec进一步尝试表示整篇文档。 5. 主题模型用于探索没有标签的大规模语料 LDA把每篇文档看成多个主题的混合,并把每个主题表示为一组词的概率分布;LSI通过降维提取潜在语义结构;HDP尝试从数据中推断主题数量;动态主题模型用于观察主题随时间变化。主题结果不应只凭词表主观命名,还需要结合主题一致性、稳定性、可视化和具体业务用途进行评估。 6. 聚类、分类、相似度和摘要解决不同问题 K-means和层次聚类适合在缺乏标签时探索文档分组;监督分类使用已有标签预测新文本类别;余弦相似度等距离指标衡量查询与文档或文档之间的接近程度;抽取式摘要则从原文中挑选重要句子。它们共享向量表示,但目标、数据条件和评价标准并不相同。 7. 深度学习降低了人工特征设计的依赖 传统流程通常依赖手工选择词频、词性和句法特征,神经网络则能够从序列和上下文中自动学习表示。书中通过Keras和spaCy介绍文本分类、文本生成等任务,并延伸到情感分析、社交媒体挖掘与聊天机器人,展示如何将预处理、表示学习和任务模型连接起来。 本书最值得关注的核心观点 1. 自然语言处理本质上是一条多层转换流水线 原始文本先被清洗和切分,再获得词性、实体和依存关系等结构,随后变成向量,最后才进入统计模型或神经网络。任何一层的信息损失或错误,都会向下游传播。理解整条流水线,比只会调用一个模型更重要。 2. 统计表示与语言学知识并不是互相排斥的路线 词频、TF-IDF和词向量善于从数据中发现分布规律,词性、实体和依存关系则提供可解释的语言结构。真实项目往往需要把二者结合起来:既利用语料统计,又通过规则或语言知识约束结果。 3. 无监督模型给出的是候选结构,不是最终答案 主题模型和聚类能够帮助人发现语料中的模式,但“主题是什么”“分组是否有意义”仍取决于领域背景、参数选择和人工验证。模型输出应被视为探索工具,而不是自动生成的客观事实。 4. 工具能够降低门槛,但不能代替问题定义和评估 spaCy、Gensim、scikit-learn和Keras让复杂算法可以通过少量代码运行,但项目成败仍取决于数据是否代表现实、标签是否一致、指标是否匹配业务目标,以及错误是否经过分析。 5. 阅读本书需要区分长期原理与具体工具版本 本书的长期价值在于文本处理流水线、语言学标注、向量空间、主题建模和分类聚类等基本思想。书中部分spaCy、Gensim和Keras接口已具有时代性,且整体偏工具入门、算法推导较少;今天实践时应查阅新版文档,并补充Transformer、上下文嵌入和大语言模型相关知识。 一段话总结 《自然语言处理与计算语言学》以Python为基础,以spaCy、Gensim、scikit-learn和Keras等开源工具为载体,系统展示了如何把自然语言从非结构化文本转变为能够分析和建模的数据:先完成采集、清洗、分词与预处理,再用词性标注、命名实体识别、规则匹配和依存分析提取语言结构;随后通过词袋、TF-IDF、n-gram、Word2Vec和Doc2Vec建立数值表示,并将这些表示用于主题模型、文本聚类与分类、相似度计算、自动摘要、文本生成、情感分析和聊天机器人。全书最重要的启示是,自然语言处理并不是调用某个算法就能完成的单一步骤,而是一条由数据质量、语言结构、文本表示、模型选择和结果评估共同组成的流水线;工具可以降低实现门槛,却不能替代清晰的问题定义、合理的数据处理和严格的效果验证。虽然部分代码接口和技术生态已经更新,书中关于“如何逐层把语言转换为可计算信息”的方法仍具有基础价值。
挺不错的NLP书籍,帮助我理清了很多概念。
刚看这本书时感觉写的很通俗易懂,本以为是本好书。 看到后面发现了几处问题: 1.在4.6小节中的“列表的列表” 应翻译为 “二维列表”或者“嵌套列表” 2.在5.3小节中的sent_3句子是“Marie took out her rather suspicious and fishy cat to go fish for fish.”,而在后面的词性标注结果中没有“go”这个单词。推测是sent_3中多了一个"go"。此外,在代码结果中"fishy"被标注为‘ADJ’。而作者却在后文写到“单词fishy被标记为副词,第一个原因是因为紧跟其后的单词词性是名词”。代码标注结果是“ADJ”,fishy这个词也没有副词用法,怎么能说“被标记为副词“呢? 3.在7.1小节中,说到“它的正式提出则归功于Noam Chomsky,他被认为是语言学之父。”这句话有问题。 语言学之父是索绪尔!Noam Chomsky被称为转换生成语法之父还差不多。 看到这个错误后,后面的内容也没有看下去的想法了。
全书通篇都是工具的入门使用 没涉及算法原理 全书都在说spacy gensim的几个简单的使用[大兵]