python自然语言处理之词袋模型
词袋模型
文本分词处理后, 若需要分析文本语义, 需要把分词得到的结果构建样本模型, 词袋模型就是由每一个句子为一个样本, 单词在句子中出现的次数为特征值构建的数学模型.
The brown dog is running. The black dog is in the black room. Running in the room is forbidden.
- The brown dog is running.
- The black dog is in the black room.
- Running in the room is forbidden.
the | brown | dog | is | running | black | in | room | forbidden |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 1 | 0 | 2 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
获取一篇文档的词袋模型:
import sklearn.feature_extraction.text as ft
# 构建词袋模型对象
model = ft.CountVectorizer()
bow = model.fit_transform(sentences)
print(bow)
# 获取词袋模型的特征名
words = model.get_feature_names()
案例:
"""
词袋模型 bag of word
"""
import sklearn.feature_extraction.text as ft
import nltk.tokenize as tkdoc = 'The brown dog is running. \The black dog is in the black room. \Running in the room is forbidden.'
# 拆分句子
sents = tk.sent_tokenize(doc)
print(sents)
# 构建词袋模型
model = ft.CountVectorizer()
bow = model.fit_transform(sents)
print(bow.toarray())
print(model.get_feature_names())
输出结果:
['The brown dog is running.', 'The black dog is in the black room.', 'Running in the room is forbidden.']
[[0 1 1 0 0 1 0 1 1][2 0 1 0 1 1 1 0 2][0 0 0 1 1 1 1 1 1]]
['black', 'brown', 'dog', 'forbidden', 'in', 'is', 'room', 'running', 'the']
词频(TF)
单词在句子中出现的次数 除以 句子的总词数 称为词频. 即一个单词在句子中出现的频率. 词频相对于单词出现的次数可以更加客观的评估单词对一句话的语义的贡献度. 词频越高,代表当前单词对语义贡献度越大。
文档频率(DF)
含有某个单词的文档样本数 / 总文档样本数.
逆文档频率(IDF)
总文档样本数 / 含有某个单词的文档样本数
单词的逆文档频率越高, 代表当前单词对语义的贡献度越大.
词频-逆文档频率(TF-IDF)
词频矩阵中的每一个元素乘以相应单词的逆文档频率, 其值越大, 说明该词对样本语义的贡献度越大. 可以根据每个单词的贡献力度, 构建学习模型.
获取TFIDF矩阵相关API:
model = ft.CountVectorizer()
bow = model.fit_transform(sentences)
# 获取IFIDF矩阵
tf = ft.TfidfTransformer()
tfidf = tf.fit_transform(bow)
# 基于tfidf 做模型训练
....
案例:
"""
tfidf转换
"""
import sklearn.feature_extraction.text as ft
import nltk.tokenize as tk
import numpy as np
doc = 'The brown dog is running. \The black dog is in the black room. \Running in the room is forbidden.'
# 拆分句子
sents = tk.sent_tokenize(doc)
print(sents)
# 构建词袋模型
model = ft.CountVectorizer()
bow = model.fit_transform(sents)
print(model.get_feature_names())# 通过词袋矩阵 得到tfidf矩阵
tf = ft.TfidfTransformer()
tfidf = tf.fit_transform(bow)
print(np.round(tfidf.toarray(), 2))
输出结果:
['The brown dog is running.', 'The black dog is in the black room.', 'Running in the room is forbidden.']
['black', 'brown', 'dog', 'forbidden', 'in', 'is', 'room', 'running', 'the']
[[0. 0.59 0.45 0. 0. 0.35 0. 0.45 0.35][0.73 0. 0.28 0. 0.28 0.22 0.28 0. 0.43][0. 0. 0. 0.54 0.41 0.32 0.41 0.41 0.32]]
python自然语言处理之词袋模型相关推荐
- 【自然语言处理】词袋模型在文本分类中的用法
词袋模型在文本分类中的用法 1.加载数据 20 Newsgroups:数据被组织成 20 个不同的新闻组,每个新闻组对应一个不同的主题.一些新闻组彼此非常密切相关(例如 comp.sys.ibm.pc ...
- 【Python自然语言处理】文本向量化的六种常见模型讲解(独热编码、词袋模型、词频-逆文档频率模型、N元模型、单词-向量模型、文档-向量模型)
觉得有帮助请点赞关注收藏~~~ 一.文本向量化 文本向量化:将文本信息表示成能够表达文本语义的向量,是用数值向量来表示文本的语义. 词嵌入(Word Embedding):一种将文本中的词转换成数字向 ...
- 自然语言处理(nlp)之词袋模型及句子相似度
本博文将会介绍NLP中常见的词袋模型(Bag of Words)以及如何利用词袋模型来计算句子间的相似度(余弦相似度,cosine similarity). 首先,让我们来看一下,什么是词袋模型. ...
- 词袋模型BoW图像检索Python实战
前几天把HABI哈希图像检索工具包更新到V2.0版本后,小白菜又重新回头来用Python搞BoW词袋模型,一方面主要是练练Python,另一方面也是为了CBIR群开讲的关于图像检索群活动第二期而准备的 ...
- 词袋 图像检索 matlab,词袋模型BoW图像检索Python实战
前几天把HABI哈希图像检索工具包更新到V2.0版本后,小白菜又重新回头来用Python搞BoW词袋模型,一方面主要是练练Python,另一方面也是为了CBIR群开讲的关于图像检索群活动第二期而准备的 ...
- python链表划分_《Python自然语言处理》——1.2 近观Python:将文本当做词链表-阿里云开发者社区...
本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.2节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...
- 根据词袋模型使用Python实现一个简单的分析句子对相似度的软件
使用词袋模型实现一个简单的分析句子对相似度的软件 1. 实验内容 本次实验使用词袋(bag of words)技术,利用词袋模型进行编程并计算了不少于10组句子对的相似度,同时设计了图形界面,可以在界 ...
- BoW词袋模型原理学习及Python实现
文章目录 BoW词袋模型原理 为什么要用BoW模型描述图像 构建BoW码本步骤 编码 测试 BoW词袋模型原理 BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量.它 ...
- 【自然语言处理】从词袋模型到Transformer家族的变迁之路
从词袋模型到Transformer家族的变迁之路 模型名称 年份 描述 Bag of Words 1954 即 BOW 模型,计算文档中每个单词出现的次数,并将它们用作特征. TF-IDF 1972 ...
最新文章
- 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
- 戴尔PowerEdge-C服务器新成员
- Apollo 11登月代码成Github热度第一:14.5万行,获星3.3万
- stdafx.h的作用以及原理
- 苏区振兴下的赣州发展状况分析
- 近期机器学习竞赛汇总~总奖池超三百万人民币!
- hive与hbase的联系与区别
- Python春节特训营03:打倒拦路虎,学会键盘打字
- mysql 15位升18位_身份证号码15位升18位规则
- linux设备/dev/dsp,/dev/mixer
- 苹果IOS模拟器电脑版用哪个好 逍遥模拟器玩部分苹果账号互通
- 【组织架构】中国铁路上海局集团有限公司
- npm配置镜像、设置代理cnpm和取消代理的方法
- 云服务器oa系统,oa系统放到云服务器云服务器
- 任正非称“鸿蒙”适用于自动驾驶,而非手机!
- Quagga编译安装
- 【Bitmap】Canvas: trying to use a recycled bitmap android.graphics.Bitmap问题
- AOP的底层原理:动态代理
- 外卖与打车派单逻辑谁更复杂
- 由“涨落耗散定理”看研发的简单生活