【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)

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

相关文章
|
16天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
16天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
41 10
|
28天前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
29天前
|
数据处理 Python
探索Python中的异步编程:从基础到实战
在Python的世界中,“速度”不仅是赛车手的追求。本文将带你领略Python异步编程的魅力,从原理到实践,我们不单单是看代码,更通过实例感受它的威力。你将学会如何用更少的服务器资源做更多的事,就像是在厨房里同时烹饪多道菜而不让任何一道烧焦。准备好了吗?让我们开始这场技术烹饪之旅。
|
7月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
213 0
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
60 5
|
2月前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
186 3
|
2月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
45 1
|
3月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
54 1
|
4月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【8月更文挑战第3天】在数据的海洋中探寻真知,决策树犹如智慧之树,以其直观易懂的强大功能,引领我们逐步缩小决策范围,轻松获取数据洞察。本篇将带您踏上Python机器学习之旅,从理解决策树为何受青睐开始,通过scikit-learn库实现鸢尾花数据集分类,解析其决策机制,并掌握调参技巧,最终优化模型性能,共同摘取数据科学的甜美果实。
55 1
下一篇
DataWorks