数据分析-深度学习 NLP Day2关键词提取案例

训练一个关键词提取算法需要以下几个步骤:

1)加载已有的文档数据集;

2)加载停用词表;

3)对数据集中的文档进行分词;

4)根据停用词表,过滤干扰词;

5)根据数据集训练算法;

根据训练好的关键词提取算法对新文档进行关键词提取要经过以下环节:

1)对新文档进行分词;

2)根据停用词表,过滤干扰词;

3)根据训练好的算法提取关键词;

1 加载模块

import math
import jieba
import jieba.posseg as psg
from gensim import corpora, models
from jieba import analyse
import functools

2 定义好停用词表的加载方法

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

3 定义一个分词方法

def seg_to_list(sentence, pos=False):
    ''' 分词方法,调用结巴接口。pos为判断是否采用词性标注 '''
    if not pos:
        # 不进行词性标注的分词方法
        seg_list = jieba.cut(sentence)
    else:
        # 进行词性标注的分词方法
        seg_list = psg.cut(sentence)
    return seg_list

4 定义干扰词过滤方法

def word_filter(seg_list, pos=False):
    ''' 
        1. 根据分词结果对干扰词进行过滤;
        2. 根据pos判断是否过滤除名词外的其他词性;
        3. 再判断是否在停用词表中,长度是否大于等于2等;
    '''
    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 sto
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值