TF-IDF关键词提取案例——用 TF-IDF 算法实现关键词提取。
1、数据预处理。对读取到的数据进行预处理,包括分词、去停用词和词性筛选, 处理完成后生成标记文件表示预处理部分完成
# 停用词表
stopWord = './data/stopWord.txt'
stopkey = [w.strip() for w in codecs.open(stopWord, 'rb').readlines()]
# 数据预处理操作:分词,去停用词,词性筛选
def dataPrepos(text,stopkey):
l = []
pos = ['n','nz','v', 'vd', 'vn', 'l', 'a', 'd'] # 定义选取的词性
seg = jieba.posseg.cut(text) #分词
for i in seg:
if i.word not in stopkey and i.flag in pos:# 去停用词 + 词性筛选
l.append(i.word)
return l
2构建TF-IDF模型,计算TF-IDF矩阵。
● 构建词频矩阵
● 计算语料中每个词语的TF-IDF权值
● 获取词袋模型中的关键词
● 获取TF-IDF矩阵
● 完成后生成标记文件
def get_tfidf(data):
# 1、构建词频矩阵
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data) # 词频矩阵,a[i][j]:表示j词在第i个文本中的词频
# 2、统计每个词的TF-IDF权值
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(X)
# 3、获取词袋模型中的关键词
word = vectorizer.get_feature_names()
# 4、获取TF-IDF矩阵,a[i][j]表示j词在i篇文本中的TF-IDF权重
weight = tfidf.toarray()
create__file('./data/flag3')
3、 排序输出关键词,将结果写入文件。 计算好每个词的