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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【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)

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

相关文章
|
5月前
|
机器学习/深度学习
大模型开发:解释正则化及其在机器学习中的作用。
正则化是防止机器学习过拟合的技术,通过限制模型参数和控制复杂度避免过拟合。它包含L1和L2正则化,前者产生稀疏解,后者适度缩小参数。选择合适的正则化方法和强度对模型性能关键,常用交叉验证评估。
132 1
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
|
5月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】解释什么是线性回归?
【5月更文挑战第15天】【机器学习】解释什么是线性回归?
|
5月前
|
机器学习/深度学习 算法 TensorFlow
实战技术:如何使用Python进行机器学习建模
实战技术:如何使用Python进行机器学习建模
93 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】小波变换在特征提取中的实践与应用
【机器学习】小波变换在特征提取中的实践与应用
166 0
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】解释什么是K-means聚类?
【5月更文挑战第11天】【机器学习】解释什么是K-means聚类?
|
5月前
|
机器学习/深度学习 监控 算法
【机器学习】提供学习率的直观解释
【5月更文挑战第18天】【机器学习】提供学习率的直观解释
|
5月前
|
机器学习/深度学习 算法 数据可视化
【Python机器学习专栏】决策树算法的实现与解释
【4月更文挑战第30天】本文探讨了决策树算法,一种流行的监督学习方法,用于分类和回归。文章阐述了决策树的基本原理,其中内部节点代表特征判断,分支表示判断结果,叶节点代表类别。信息增益等标准用于衡量特征重要性。通过Python的scikit-learn库展示了构建鸢尾花数据集分类器的示例,包括训练、预测、评估和可视化决策树。最后,讨论了模型解释和特征重要性评估在优化中的作用。
105 1
|
5月前
|
机器学习/深度学习 计算机视觉 Python
【Python 机器学习专栏】图像数据的特征提取与预处理
【4月更文挑战第30天】本文探讨了图像数据的特征提取与预处理在机器学习中的重要性。图像数据具有大容量、信息丰富和冗余性高的特点。特征提取涉及颜色、纹理和形状特征;预处理包括图像增强、去噪和分割。Python的OpenCV和Scikit-image库在处理这些任务时非常有用。常见的特征提取方法有统计、变换和基于模型的方法,而预处理应注意保持图像真实性、适应性调整及验证评估。有效的特征提取和预处理能提升模型性能,Python工具使其更高效。
291 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
【Python机器学习专栏】文本数据的特征提取与表示
【4月更文挑战第30天】本文探讨了文本特征提取与表示在机器学习和NLP中的重要性。介绍了词袋模型、TF-IDF和n-gram等特征提取方法,以及稀疏向量和词嵌入等表示方式。Python中可利用sklearn和gensim库实现这些技术。有效的特征提取与表示有助于将文本数据转化为可处理的数值形式,推动NLP和机器学习领域的进步。
137 0
下一篇
无影云桌面