Python与自然语言处理——关键词提取算法(二)

本文介绍了使用Python进行关键词提取的实战,包括TF-IDF和主题模型的实现。通过数据预处理、停用词过滤,训练算法,并在新文档上应用,展示了关键词提取的效果。
摘要由CSDN通过智能技术生成

关键词提取算法(二)

前面我们已经介绍了关键词提取算法的一些理论知识,这里我们主要看一些简单的示例。我们用到的库包括Jieba和Gensim

算法流程

除了TextRank,其他的算法都需要一个已知的数据集才能正常工作。

训练一个关键词提取算法
  • 加载已有的文档数据集
  • 加载停用词表
  • 对数据集中的文档进行分词
  • 根据停用词过滤干扰词
  • 根据数据集训练算法
对新文档进行关键词提取
  • 对新文档进行分词
  • 根据停用词去除干扰词
  • 根据训练好的算法提取关键词

具体实现

引入相关库
import math
import jieba
import jieba.posseg as psg
from gensim import corpora,models
from jieba import analyse
import functools
数据预处理
定义停用词表的加载方法
######停用词表加载######
def get_stopword_list():
    stop_word_path='./stopword.txt'    #停用词所在的路径
    stopword_list=[sw.replace('\n','') for sw in open(stop_word_path).readlines()]  #获取其中的停用词
    return stopword_list
定义分词方法
######定义分词方法######
###pos为是否只保留名词的依据
def seg_to_list(sentence,pos=False):
    if not pos:
        seg_list=jieba.cut(sentence)   #不进行词性标注的分词
    else:
        seg_list=psg.cut(sentence)     #进行词性标注的分词
    return seg_list
定义干扰词过滤方法
######定义干扰词过滤方法######
def word_filter(seg_list,pos=False):
    stopword_list=get_stopword_list()    #获得停用词
    filter_list=[]    #存储过滤后的词
    
    ##根据pos确定是否进行此行过滤
    ####不进行此行过滤则都标记为n并保留
    for seg in seg_list:
        if not pos:
            word=seg
            flag='n'
        else:
            word=seg.word
            flag=seg.flag
        if not flag.startswith('n'):
            continue
        #过滤停用词中词以及长度<2的
        if  not word in stopword_list and len(word)>1:
            filter_list.append(word)
    
    return filter_list
加载数据集
######加载数据集######
def load_data(pos=False,corpus_path='./corpus.txt'):
    #对数据进行预处理
    doc_list=[]
    for line in open(corpus_path,'r'):
        content=line.strip()
        seg_list=seg_to_list(content,pos)      #对句子进行分词
        filter_list=word_filter(seg_list,pos)  #对分词结果过滤干扰词
        doc_list.append(filter_list)
    return doc_list
输出top关键词
######TopK关键词######
def cmp(e1,e2):
    import numpy as np
    res
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值