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

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

相关文章
|
1天前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
9 3
|
2天前
|
数据采集 前端开发 Python
Python3网络开发实战读后感
Python3网络开发实战读后感
|
3天前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
3天前
|
机器学习/深度学习 传感器 算法
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
Python
实战!用 Python 给母亲送祝福!
今天是母亲节,小阿酱在这里祝天下所有的母亲节日快乐,作为女儿的我除了买礼物送惊喜外还要用 Python 送上特殊的祝福! 母亲节(Mother’s Day),是一个感谢母亲的节日。妈妈曾经也是一个女孩子,怕黑怕虫子,也会掉眼泪,笨手笨脚怕扎针,但她温柔了我,温柔了岁月。 借此祝全天下妈妈母亲节快乐!
402 0
实战!用 Python 给母亲送祝福!
|
1天前
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
1天前
|
机器学习/深度学习 存储 自然语言处理
惊艳!老司机熬夜总结的Python高性能编程,高效、稳定、快速!
Python 语言是一种脚本语言,其应用领域非常广泛,包括数据分析、自然语言处理机器学习、科学计算、推荐系统构建等。 能够轻松实现和代码跑得够快之间的取舍却是一个世人皆知且令人惋惜的现象而这个问题其实是可以解决的。 有些人想要让顺序执行的过程跑得更快。有些人需要利用多核架构、集群,或者图形处理单元的优势来解决他们的问题。有些人需要可伸缩系统在保证可靠性的前提下酌情或根据资金多少处理更多或更少的工作。有些人意识到他们的编程技巧,通常是来自其他语言,可能不如别人的自然。
|
1天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
1天前
|
存储 Python 索引
【Python编程挑战】:单链表实现技巧与最佳实践
【Python编程挑战】:单链表实现技巧与最佳实践
|
2天前
|
数据库 云计算 Python
不容错过的经典!Python核心编程(第3版)教你用实例学Python!
在学完任何其他入门类的 Python 图书之后,你可能觉得已经掌握了 Python 而且还觉得学得不错,并为此感到自豪。通过完成大量练习之后,你将会对自己新掌握的 Python 编程技能拥有更多信心。 但是,你可能仍然会有这样的疑问,“现在该怎么办?我能用 Python 编写哪种类型的应用程序呢?”或许你是为了一个相当小众的工作项目而学习使用 Python,你可能会考虑“我还能用 Python 写点其他的吗?”