赞
踩
本篇博客将基于TF-IDF获取一段中文文本的嵌入/向量表示,文本是指包含一句或多句话的短文本。
目录
- import sys,codecs
- import pandas as pd
- import numpy as np
- import jieba.posseg
- import jieba.analyse
- from sklearn import feature_extraction
- from sklearn.feature_extraction.text import TfidfTransformer
- from sklearn.feature_extraction.text import CountVectorizer
- #读取数据集
- dataFile = './data/sample_data.csv' #数据集路径
- data = pd.read_csv(dataFile)
- print(len(data)) #数据量
- print(data.head(3)) #前三条数据
该数据集包含10条数据,每条数组有id,标题,摘要三个字段。
- #数据预处理
- def dataPrepos(text):
- l = []
- pos = ['n','nz','v','vd','vn','l','a','d'] #定义选取的词性
- seg = jieba.posseg.cut(text) #对文本进行分词和词性标注
- for i in seg: #形式 [pair(word,flag),...]
- if i.word and i.flag in pos: #词性筛选
- l.append(i.word)
- return l
- #基于TF-IDF获取文本的嵌入表示
- def getTfidfTextEmbedding(data):
- #每条数据包含id title 和 abstract三个部分
- idList, titleList, abstractList = data['id'], data['title'], data['abstract']
- corpus = [] #将所有文本放在一个列表中,列表中的每一个元素代表一段文本
- for index in range(len(idList)):#通过索引 遍历每条数据
- text = '%s。%s' % (titleList[index],abstractList[index])#拼接标题和摘要
- text = dataPrepos(text) #对拼接后的文本进行预处理 返回处理后的单词列表
- text = " ".join(text) #用" "把列表中的单词连接起来 构成一个字符串
- corpus.append(text)
-
- #Step1:构建词频矩阵,将文本中的词语转换为词频矩阵
- vectorizer = CountVectorizer()
- '''
- X是词频矩阵,X[i][j]表示第j个词在第i个文本中出现的次数
- X的各个列对应词典中的各个单词
- X的各个行对应各个文本
- '''
- X = vectorizer.fit_transform(corpus)
- #Step2:统计每个词的tf-idf值
- transformer = TfidfTransformer()
- tfidf = transformer.fit_transform(X)
- #Step3:获取词袋模型中的关键词 word为词典
- word = vectorizer.get_feature_names()
- print(len(word)) #词典大小
- #Step4:获取tf-idf矩阵,weight[i][j]代表第j个词在第i个文本中的tf-idf值
- '''
- weight矩阵的每一行对应一段文本,为该文本的向量表示,维度与词典大小相同
- 向量中的值为该文本中词语的tf-idf值,0值表示该文本中没有出现该词
- '''
- weight = tfidf.toarray()
-
- ids,titles,keys = [],[],[]
- for i in range(len(weight)):#遍历每段文本
- print(u"-------这里输出第", i+1 , u"篇文本中词语的tf-idf值(向量表示)------")
- ids.append(idList[i])
- titles.append(titleList[i])
- df_word,df_weight = [],[] # 当前文章的所有词汇列表、词汇对应权重列表
- for j in range(len(word)):
- print (word[j],weight[i][j])
-
- getTfidfTextEmbedding(data)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。