想要在这样的一个文档里,根据最后一列内容,提取出最后一列所有内容的关键词
由于没怎么用过 jieba
,不知道对这个文档直接操作该怎么操作(有知道的小伙伴可以告诉下怎么操作,感谢)
所以考虑先将最后一列的内容提取到一个文档里,然后再对这个文档使用 jieba 提取关键词
# 数据预处理,对原始数据进行处理,加特征,改标签
import pandas as pd
# 读取数据的函数
def load_data(filename, nameList):
data = pd.read_table(filename, names=nameList, sep='\t', encoding='utf8', header=None)
return data
# 获取热度值满足条件的内容
def get_data_content(data):
# 对 ccs,fcs,lcs 进行整合成热度值特征
data['hot'] = data['ccs'] + data['fcs'] + data['lcs']
# 提取出 hot 大于25的微博内容
data = data[data['hot'] > 25]
return data
if __name__ == '__main__':
# 读取数据
file_path = "weibo_train_data.txt"
# 定义一些列的展示
nameList = ['uid', 'mid', 'time', 'fcs', 'ccs', 'lcs', 'cont']
# 调用函数进行读取数据,并且对数据进行清洗
data = load_data(file_path, nameList)
data = get_data_content(data)
# 保留剩余的所有内容
data.to_csv("weibo_data.txt")
# 只保留内容
data = data.drop(['uid', 'mid', 'time', 'css', 'fcs', 'lcs', 'hot'], axis=1)
data.to_csv("weibo_cont_data.txt", sep='\t', index=False)
基于 TF-IDF(term frequency–inverse document frequency) 算法的关键词抽取
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence
:为待提取的文本
topK
: 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight
: 为是否一并返回关键词权重值,默认值为 False
allowPOS
: 仅包括指定词性的词,默认值为空,即不筛选
# 提取关键词
import jieba.analyse
# 读取数据
filename = "weibo_cont_data.txt"
data = open(filename, 'rt', encoding='utf-8').read()
keywords =jieba.analyse.extract_tags(data, topK=20, withWeight=True, allowPOS=())
print(keywords)
其他可参考:https://blog.csdn.net/bozhanggu2239/article/details/80157305