文本关键词提取-Python

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抽取的关键词: {'洪七公', '武功', '周伯通', '师父', '黄药师', '身子', '心想', '黄蓉', '不知', '梅超风', '说道', '郭靖', '欧阳锋', '知道', '蒙古', '成吉思汗', '只见', '丘处机', '功夫', '欧阳克'}

你可能感兴趣的:(文本挖掘)