TF-IDF、TextRank两种文档关键词抽取算法:
代码实例:
TF-IDF算法实现:
import numpy as np
import pandas as pd
import jieba
import jieba.analyse
#读取txt文本文件
def read_from_file(directions):
decode_set=['utf-8','gb18030','ISO-8859-2','gb2312','gbk','Error']#编码集
#GBK不如GB18030覆盖得好,容易出错,故首先尝试GB18030。
for k in decode_set:#编码集循环
try:
file = open(directions,"r",encoding=k)
readfile = file.read()#这步如果解码失败就会引起错误,跳到except。
#print("open file %s with encoding %s" %(directions,k))#打印读取成功
#readfile = readfile.encode(encoding="utf-8",errors="replace")#若是混合编码则将不可编码的字符替换为"?"。
file.close()
break#打开路径成功跳出编码匹配
except:
if k=="Error":#如果碰到这个程序终止运行
raise Exception("%s had no way to decode"%directions)
continue
return readfile
#读取文件
file_data = str(read_from_file('射雕英雄传txt精校版.txt'))
#基于TF-IDF算法进行关键词抽取
tfidf=analyse.extract_tags
keywords=tfidf()
print('text关键词',set(keywords))
输出结果:
”射雕英雄传“关键词 {'洪七公', '郭靖道', '武功', '周伯通', '师父', '两人', '黄药师', '黄蓉', '梅超风', '说道', '郭靖', '欧阳锋', '柯镇恶', '黄蓉道', '爹爹', '裘千仞', '丘处机', '功夫', '欧阳克', '完颜洪烈'}
TextRank算法实现:
#基于TextRank算法进行关键词抽取
textrank=jieba.analyse.textrank
keywords_TR=textrank(file_data)
print('textrank抽取的关键词:',set(keywords_TR),allowPOS=('nr','nr1','nr2','ns', 'n', 'vn', 'v'))
输出结果:
textrank抽取的关键词: {'洪七公', '武功', '周伯通', '师父', '黄药师', '身子', '心想', '黄蓉', '不知', '梅超风', '说道', '郭靖', '欧阳锋', '知道', '蒙古', '成吉思汗', '只见', '丘处机', '功夫', '欧阳克'}