Python全系列 教程
3567个小节阅读:5931.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
词袋模型是一种常用于自然语言处理(NLP)和文本挖掘的文本表示方法。它的基本思想是将文本文档转换成一个由词汇表中的词组成的集合,简单说就是将每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来)。
忽略文本中词语的顺序和语法结构,只考虑词汇表中的词是否在文本中出现以及出现的频次。
例句:
上面2个例句,就可以构成一个词袋,袋子里包括Jane、wants、to、go、Shenzhen、Bob、Shanghai。假设建立一个数组(或词典)用于映射匹配
[Jane, wants, to, go, Shenzhen, Bob, Shanghai]
那么上面两个例句就可以用以下两个向量表示,对应的下标与映射数组的下标相匹配,其值为该词语出现的次数
[(0,1),(1,1),(2,2),(3,1),(4,1)]
[(5,1),(1,1),(2,2),(3,1),(6,1)]
注意
在实际应用中,很多python包会分别处理每个句子,查找该句子中每个单词出现的次数,将每个句子转换为对应的向量(这种情况下,向量的长度可能不同)
作用:
安装
xxxxxxxxxx
11pip install gensim==4.3.2
代码
xxxxxxxxxx
321# 加载数据
2df = pd.read_csv('./data/technology_news.csv', encoding='gbk')
3# 去除空值
4df = df.dropna()
5# 获取要提取关键词的文本数据
6lines = df.content.values
7# 加载敏感词
8stop_words = pd.read_table('./data/stopwords.txt',sep='\t',quoting=3,names=['stopword'])
9
10import jieba
11# 用于存储每行文本分词后的结果
12sentences = []
13# 遍历每一条文本数据
14for line in lines:
15 # 分词
16 segs = jieba.lcut(line)
17 # 去除内容少1的词
18 segs = list(filter(lambda x:len(x.strip())>1,segs))
19 # 去除停用词
20 segs = list(filter(lambda x:x not in stop_words,segs))
21 # 将分词结果追加到列表中
22 sentences.append(segs)
23
24# 词袋模型的建立
25from gensim import corpora
26
27# 构建词袋模型 corpora.Dictionary会遍历每行数据,每个词条会被赋予一个唯一的id
28dictionary = corpora.Dictionary(sentences)
29# 通过doc2bow将文档转换为词袋模型
30corpus = [dictionary.doc2bow(sentence) for sentence in sentences]
31display(corpus[3])
32display(sentences[3])