【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)

简介: 【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

文本提取及文本向量化

词频和所谓的Tf-idf是传统自然语言处理中常用的两个文本特征。

以词频特征和Tf-idf特征为基础,可以将一段文本表示成一个向量。将多个文本向量化后,然后就可以运用向量距离计算方法来比较它们的相似性、用聚类算法来分析它们的自然分组。如果文本有标签,比如新闻类、军事类、财经类等等,那么还可以用它们来训练一个分类模型,用于对未知文本进行标签预测。

词频

将文本中每个词出现的次数按一定的顺序排列起来,就得到了一个向量,如已经分好词的句子:

小王 喜欢 看 电影 , 他 还 喜欢 吃 鱼 可以用向量:

[1, 1, 2, 1, 1, 1, 1, 1]

来表示。向量每一特征表示的词依次为: ['他', '吃', '喜欢', '小王', '电影', '看', '还', '鱼']

这种将文本向量化的方法,称为词袋(Bag of Words)模型。由实现过程可以知道,词袋模型只是把文本看成装下词语的“袋子”,它不考虑文本的语法、句法和单词顺序等因素。也就是说,它认为文本中每个词语出现的位置都是独立不相关的,与其它词语是否出现没有关系,不存在依赖性。

在sklearn.feature_extraction.text模块中,CountVectorizer类实现了提取词频特征,并用词袋模型向量化文本。

定义由n个文本组成的集合为S,定义其中第i个文本d_i的特征向量为d_i:

 

其中,t_j表示第j个词,m为词的总数,TF(t_j,d_i)表示第j个词在第i个文档中的频数。 词频特征有一种简化应用,称为布尔词频。布尔词频是用1来统一表示非0的词频。

TF-IDF

相较于词频,TF-IDF还综合考虑词语的稀有程度。它认为一个词语的重要程度不光正比于它在文本中的频次,还反比于有多少文本包含它。

其中,DF(t_j)是包含单词t_j的文本数,IDF(t_j)是DF(t_j)的倒数。

如果把相继出现的两个词语作为一个特征提取,则考虑了间距为1的关联性。如“小王 喜欢 看 电影”文本中,可以提取出“小王 喜欢”、“喜欢 看”、“看 电影”三个这样的特征。在自然语言处理领域,以这样的特征构建的模型称为2元(2-gram)模型,相应地,把前述的模型称为1元模型。

文本相似度比较示例

余弦相似度刻画的是两个向量之间的夹角,它适合于与向量方向相关的距离度量。点x_i,x_j的余弦相似度为:

四个字符串如下

str1 = "计算机应用数学课程面向计算机科学本科专业介绍基本数学技巧,以及这些技巧怎样在计算机科学中应用。现代计算机科学教育需要学生掌握宽阔的数学知识,并能灵活和创新地解决现在和将来的科技挑战。在该课程中,数学技巧主要涵括代数、几何、概率理论,随机模型、信息理论等。这些技巧将应用于不同专题的问题和算法设计,包括互联网、无线传感网、密码学、分布式系统、算法设计和优化等。最后,该课程向学生介绍在计算理论基础方面深层次的科学问题,如不可解性、复杂性和量子计算。"

str2 = "人工智能数学基础课程面向人工智能本科专业介绍基本数学技巧,以及这些技巧怎样在人工智能中应用。人 工智能和多学科有紧密联系。因此一个完整的人工智能专业教育需要学生掌握宽阔的数学知 识,并能灵活和创新地解决现在和将来的科技挑战。在该课程中,数学技巧主要涵括线性代 数、高维几何、统计推断,数学优化,信息理论等。这些技巧将应用于不同专题的问题和算 法设计,包括机器学习、大数据,遥感压缩、贝叶斯网络、计算生物和自然语言等。最后, 该课程向学生介绍在计算理论基础方面深层次的科学问题,如复杂性和量子人工智能。"

str3 = "密码学基础课程的主要目的是介绍现代密码学的一些基本概念。与数字内容分布有关的两个主要问题是信息的隐秘性和数据来源。在简短介绍代数之后,将会在现代私钥和公钥加密的背景下讨论隐私问题及其解决方案。之后将回顾一下使用散列函数和数字签名来实现数字内容认证的一些工具。其中所提出的结构是建立设计安全系统和实际应用协议。同时,本课程也将涉及加密方案和协议的攻击和安全分析等内容。"

str4 = "《英汉口译》课程主要训练学生英汉、汉英双语转换的口译能力。课程从句子和简单会话过渡到口语段落以及口语语篇的翻译,内容涉及简单的日常生活会话、涉外导游、商务谈判、会展解说、学术讲座等体裁的演讲或访谈。通过本课程的学习,学生可以提高双语听、说、读、译的综合应用能力,并强化英语语言基础。"

利用余弦相似度计算结果如下

部分代码如下

#!/usr/bin/env python
# coding: utf-8
# ## 文本特征提取
# In[1]:
from sklearn.feature_extraction.text import CountVectorizer
# In[84]:
vectorizer = CountVectorizer(token_pattern='(?u)\\b\\w+\\b')
corpus = [
    '小王 喜欢 看 电影 , 他 还 喜欢 吃 鱼'
]
X = vectorizer.fit_transform(corpus)
prin
# In[86]:
corpus = [
    '小王 喜欢 看 电影 , 他 还 喜欢 吃 鱼',
    '小温 也 喜欢 看 电影 , 她 还 喜欢 旅游'
]
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
X.toarray()
# ## 文本相似度比较示例
# In[124]:
str1 = "计算机应用数学课程面向计算机科学本科专业介绍基本数学技巧,以及这些技巧怎样在计算机科学中应用。现代计算机科学教育需要学生掌握宽阔的数学知识,并能灵活和创新地解决现在和将来的科技挑战。在该课程中,数学技巧主要涵括代数、几何、概率理论,随机模型、信息理论等。这些技巧将应用于不同专题的问题和算法设计,包括互联网、无线传感网、密码学、分布式系统、算法设计和优化等。最后,该课程向学生介绍在计算理论基础方面深层次的科学问题,如不可解性、复杂性和量子计算。"
str2 = "人工智能数学基础课程面向人工智能本科专业介绍基本数学技巧,以及这些技巧怎样在人工智能中应用。人 工智能和多学科有紧密联系。因此一个完整的人工智能专业教育需要学生掌握宽阔的数学知 识,并能灵活和创新地解决现在和将来的科技挑战。在该课程中,数学技巧主要涵括线性代 数、高维几何、统计推断,数学优化,信息理论等。这些技巧将应用于不同专题的问题和算 法设计,包括机器学习、大数据,遥感压缩、贝叶斯网络、计算生物和自然语言等。最后, 该课程向学生介绍在计算理论基础方面深层次的科学问题,如复杂性和量子人工智能。"
str3 = "密码学基础课程的主要目的是介绍现代密码学的一些基本概念。与数字内容分布有关的两个主要问题是信息的隐秘性和数据来源。在简短介绍代数之后,将会在现代私钥和公钥加密的背景下讨论隐私问题及其解决方案。之后将回顾一下使用散列函数和数字签名来实现数字内容认证的一些工具。其中所提出的结构是建立设计安全系统和实际应用协议。同时,本课程也将涉及加密方案和协议的攻击和安全分析等内容。"
str4 = "《英汉口译》课程主要训练学生英汉、汉英双语转换的口译能力。课程从句子和简单会话过渡到口语段落以及口语语篇的翻译,内容涉及简单的日常生活会话、涉外导游、商务谈判、会展解说、学术讲座等体裁的演讲或访谈。通过本课程的学习,学生可以提高双语听、说、读、译的综合应用能力,并强化英语语言基础。"
# In[125]:
import jieba
str1 = " ".join(jieba.lcut(str1))
str2 = " ".join(jieba.lcut(str2))
str3 =
corpus = [str1, str2, str3, str4]
corpus
# In[127]:
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
X.toarray()
# In[128]:
from sklearn.preprocessing import Normalizer
X_normal = Normalizer().fit_transform(X.toarray())
X_normal
# In[129]:
from sklearn.metrics.pairwise import cosine_similarity, euclidean_distances
cosine_similarity(X_normal)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
8月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
656 46
|
11月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
11月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
691 3
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
1083 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
11月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
12月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
R1类模型推理能力评测手把手实战
366 2
|
12月前
|
人工智能 自然语言处理 网络安全
基于阿里云 Milvus + DeepSeek + PAI LangStudio 的低成本高精度 RAG 实战
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
|
12月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
1005 2
|
12月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
780 3
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
629 3

推荐镜像

更多