首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
4.1 分类变量
4.1.1 One-Hot 编码(虚拟变量)
4.1.2 数字可以编码分类变量
4.2 分箱、离散化、线性模型与树
4.3 交互特征与多项式特征
4.4 单变量非线性变换
4.5 自动化特征选择
4.5.1 单变量统计
4.5.2 基于模型的特征选择
4.5.3 迭代特征选择
4.6 利用专家知识
5.1 交叉验证
5.1.1 scikit-learn 中的交叉验证
5.1.2 交叉验证的优点
5.1.3 分层k 折交叉验证和其他策略
5.2 网格搜索
5.2.1 简单网格搜索
5.2.2 参数过拟合的风险与验证集
5.2.3 带交叉验证的网格搜索
5.3 评估指标与评分
5.3.1 牢记目标
5.3.2 二分类指标
5.3.3 多分类指标
5.3.4 回归指标
5.3.5 在模型选择中使用评估指标
6.1 用预处理进行参数选择
6.2 构建管道
6.3 在网格搜索中使用管道
6.4 通用的管道接口
6.4.1 用make_pipeline 方便地创建管道
6.4.2 访问步骤属性
6.4.3 访问网格搜索管道中的属性
6.5 网格搜索预处理步骤与模型参数
6.6 网格搜索选择使用哪个模型
7.1 用字符串表示的数据类型
7.2 示例应用:电影评论的情感分析
7.3 将文本数据表示为词袋
7.3.1 将词袋应用于玩具数据集
7.3.2 将词袋应用于电影评论
7.4 停用词
7.5 用tf-idf 缩放数据
7.6 研究模型系数
7.7 多个单词的词袋(n元分词)
7.8 分词、词干提取与词形还原
7.9 主题建模与文档聚类
8.1 处理机器学习问题
8.2 从原型到生产
8.3 测试生产系统
8.4 构建你自己的估计器
8.5 下一步怎么走
8.5.1 理论
8.5.2 其他机器学习框架和包
8.5.3 排序、推荐系统与其他学习类型
8.5.4 概率建模、推断与概率编程
8.5.5 神经网络
8.5.6 推广到更大的数据集
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(下)
小册名称:Python机器学习基础教程(下)
### 7.4 停用词 在自然语言处理(NLP)和机器学习,尤其是文本分类、情感分析、信息检索等任务中,停用词(Stop Words)是一个至关重要的概念。它们通常指的是在语言中频繁出现,但对于文本的含义理解贡献较小甚至可能产生干扰的词汇。了解并正确处理停用词,对于提升模型性能、优化存储和计算资源、以及增强文本分析的准确性具有重要意义。本章将深入探讨停用词的定义、作用、识别方法、以及在Python中实现停用词处理的策略。 #### 7.4.1 停用词的定义与作用 **定义**:停用词是指那些在文本中频繁出现,但几乎不提供关于文档内容有用信息的词汇。这些词包括但不限于冠词(如英语中的“the”, “a”, “an”)、介词(如“in”, “on”, “at”)、连词(如“and”, “but”, “or”)、代词(如“he”, “she”, “it”)、以及一些高频但无实际意义的动词(如“is”, “are”, “was”等)。不同语言和领域可能拥有不同的停用词列表。 **作用**: 1. **减少数据维度**:移除停用词可以显著减少文本数据集的词汇量,从而降低后续处理(如特征提取、模型训练)的复杂度。 2. **提高处理效率**:减少数据中的噪声词汇,有助于模型更快地聚焦于关键信息,提高处理速度和效率。 3. **改善模型性能**:通过去除对模型预测贡献不大的词汇,可以减少模型过拟合的风险,提高模型的泛化能力。 #### 7.4.2 停用词的识别方法 **预定义列表法**:最简单直接的方法是利用已有的停用词列表进行匹配。这些列表可以是通用的,如NLTK、spaCy等NLP库中提供的,也可以是针对特定领域或语言定制的。 **统计方法**:通过统计文档中词汇的出现频率,结合文档频率(DF)、逆文档频率(IDF)等指标,自动识别出高频但重要性低的词汇作为停用词。这种方法可以动态地根据数据集特性调整停用词列表。 **基于语言模型的方法**:利用自然语言处理模型(如BERT、GPT等)评估词汇在文本中的语义重要性,进而识别出对文本意义贡献较小的词汇作为停用词。这种方法更加复杂,但能够更精确地捕捉词汇的上下文意义。 #### 7.4.3 Python中实现停用词处理 在Python中,处理停用词通常涉及到文本预处理阶段,可以使用多种库和工具来辅助完成。以下是一些常用的方法: **使用NLTK库**: NLTK(Natural Language Toolkit)是Python中一个广泛使用的NLP库,它提供了丰富的文本处理功能,包括停用词处理。 ```python import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize # 下载停用词集 nltk.download('stopwords') # 设定语言(例如英语) stop_words = set(stopwords.words('english')) # 示例文本 text = "This is a simple example showing stop words removal." words = word_tokenize(text.lower()) # 去除停用词 filtered_words = [word for word in words if word not in stop_words] print(filtered_words) ``` **自定义停用词列表**: 除了使用预定义的停用词列表外,还可以根据具体需求自定义停用词列表。 ```python custom_stop_words = set(['this', 'is', 'showing', 'removal']) # 去除自定义停用词 filtered_words_custom = [word for word in words if word not in custom_stop_words.union(stop_words)] print(filtered_words_custom) ``` **使用spaCy库**: spaCy是另一个强大的NLP库,它提供了更高级的语言处理能力,包括停用词处理。 ```python import spacy # 加载英文模型 nlp = spacy.load("en_core_web_sm") # 处理文本 doc = nlp(text.lower()) # 去除停用词 filtered_tokens = [token.text for token in doc if not token.is_stop] print(filtered_tokens) ``` #### 7.4.4 停用词处理的注意事项 1. **语言与文化差异**:不同语言和文化背景下的停用词可能大相径庭,需根据具体应用场景选择合适的停用词列表。 2. **领域特异性**:在某些特定领域,某些看似无用的词汇可能具有重要意义,因此应根据领域特性调整停用词列表。 3. **过度移除风险**:过度依赖停用词列表可能会导致关键信息的丢失,特别是当某些重要但低频的词汇被错误地归类为停用词时。 4. **动态调整**:随着数据集的变化和模型性能的提升,可能需要动态调整停用词列表,以达到最佳的处理效果。 #### 7.4.5 总结 停用词处理是文本预处理中不可或缺的一环,它通过减少数据维度、提高处理效率和改善模型性能,对NLP和机器学习任务的成功至关重要。在Python中,我们可以利用多种库和工具来实现停用词的识别和去除,同时需要注意语言差异、领域特异性以及过度移除的风险。通过合理应用停用词处理技术,我们可以为后续的文本分析工作打下坚实的基础。
上一篇:
7.3.2 将词袋应用于电影评论
下一篇:
7.5 用tf-idf 缩放数据
该分类下的相关小册推荐:
Python合辑2-字符串常用方法
Python合辑9-判断和循环
Python3网络爬虫开发实战(上)
Python合辑13-面向对象编程案例(上)
Python合辑14-面向对象编程案例(下)
Python爬虫入门与实战开发(上)
Python爬虫入门与实战开发(下)
剑指Python(磨刀不误砍柴工)
Python合辑11-闭包函数
Python合辑5-格式化字符串
Python数据分析与挖掘实战(下)
Python编程轻松进阶(五)