jiaba库之关键词提取(增量更新自定义语料)

本文介绍了如何使用jiaba库进行关键词提取,包括TF-idf与TextRank方法,并详细讲解了如何创建自定义语料库以及word_idf.txt的增量更新策略,强调了在增量更新时的注意事项,如分词去重、IDF值计算和文件读写操作。
摘要由CSDN通过智能技术生成
一、提取语句关键词

在自然语言处理中,经常会遇见对文章或者信件进行关键词提取。而jiaba库正给我们提供了两种简单的关键词提取方法(TF-idf与TextRank)。本文不讲这两方式提取关键词的原理,只注重如何实现。在Python中,短短四个语句就能实现关键词的提取,我们所使用的文本数据为《红楼梦》中的某个章节。

第二回 贾夫人仙逝扬州城 冷子兴演说荣国府
  诗云
  一局输赢料不真,香销茶尽尚逡巡。欲知目下兴衰兆,须问旁观冷眼人。
  却说封肃因听见公差传唤,忙出来陪笑启问。那些人只嚷:“快请出甄爷来!”封肃忙陪笑道:“小人姓封,并不姓甄。只有当日小婿姓甄,今已出家一二年了,不知可是问他?”那些公人道:“我们也不知什么。真假,因奉太爷之命来问,他既是你女婿,便带了你去亲见太爷面禀,省得乱跑。”说着,不容封肃多言,大家推拥他去了。封家人个个都惊慌,不知何兆。
  那天约二更时,只见封肃方回来,欢天喜地。众人忙问端的。他乃说道:“原来本府新升的太爷姓贾名化,本贯胡州人氏,曾与女婿旧日相交。方才在咱门前过去,因见娇杏那丫头买线,所以他只当女婿移住于此。我一一将原故回明,那太爷倒伤感叹息了一回,又问外孙女儿,我说看灯丢了。太爷说:不妨,我自使番役务必探访回来。说了一回话,临走倒送了我二两银子。”甄家娘子听了,不免心中伤感。一宿无话。至次日,早有雨村遣人送了两封银子,四匹锦缎,答谢甄家娘子,又寄一封密书与封肃,转托问甄家娘子要那娇杏作二房。封肃喜的屁滚尿流,巴不得去奉承,便在女儿前一力撺掇成了,乘夜只用一乘小轿,便把娇杏送进去了。雨村欢喜,自不必说,乃封百金赠封肃,外谢甄家娘子许多物事,令其好生养赡,以待寻访女儿下落。封肃回家无话。
  却说娇杏这丫鬟,便是那年回顾雨村者。因偶然一顾,便弄出这段事来,亦是自己意料不到之奇缘。谁想他命运两济,不承望自到雨村身边,只一年便生了一子,又半载,雨村嫡妻忽染疾下世,雨村便将他扶侧作正室夫人了。正是:
  偶因一着错,便为人上人。原来,雨村因那年士隐赠银之后,他于十六日便起身入都,至大比之期,不料他十分得意,已会了进士,选入外班,今已升了本府知府。虽才干优长,未免有些贪酷之弊,且又恃才侮上,那些官员皆侧目而视。不上一年,便被上司寻了个空隙,作成一本,参他生情狡猾,擅纂礼仪,大怒,即批革职。该部文书一到,本府官员无不喜悦。那雨村心中虽十分惭恨,却面上全无一点怨色,仍是嘻笑自若,交代过公事,将历年做官积的些资本并家小人属送至原籍,安排妥协,却是自己担风袖月,游览天下胜迹。
  那日,偶又游至维扬地面,因闻得今岁鹾政点的是林如海。这林如海姓林名海,表字如海,乃是前科的探花,今已升至兰台寺大夫,本贯姑苏人氏,今钦点出为巡盐御史,到任方一月有余。
  原来这林如海之祖,曾袭过列侯,今到如海,业经五世。起初时,只封袭三世,因当今隆恩盛德,远迈前代,额外加恩,至如海之父,又袭了一代;至如海,便从科第出身。虽系钟鼎之家,却亦是书香之族。只可惜这林家支庶不盛,子孙有限,虽有几门,却与如海俱是堂族而已,没甚亲支嫡派的。今如海年已四十,只有一个三岁之子,偏又于去岁死了。虽有几房姬妾,奈他命中无子,亦无可如何之事。今只有嫡妻贾氏,生得一女,乳名黛玉,年方五岁。夫妻无子,故爱如珍宝,且又见他聪明清秀,便也欲使他读书识得几个字,不过假充养子之意,聊解膝下荒凉之叹。
  1. 利用jieba库对该段文字进行关键词提取
import pandas as pd
from jieba.analyse import extract_tag, textrank
text = pd.read('hongloumeng.csv')
# 使用tfidf进行关键词提取
for keyword, weight in extract_tags(text, topK=10, withWeight=True):
    print('%s %s' % (keyword, weight))
# 使用textrank进行关键词提取
for keyword, weight in textrank(text, topK=10, withWeight=True):
    print('%s %s' % (keyword, weight))
  1. 结果展示
    在这里插入图片描述
  2. 常见参数解释
    1>topn: 返回关键词的个数,默认为10
    2>withWeight: 是否返回权重, 默认为False
    3>allowPOS: 对关键词的词性进行限制, 默认为(),即不设限制
  3. 思考
    我们都知道,基于TF-IDF的关键词提取,需要对每个词语计算IDF值,而IDF值是逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到,那么只有一篇文章是如何计算IDF值的呢?
二、自定义语料库

经过上面的思考,发现其实jieba库自带了一些语料库,它是基于自身的语料库来计算IDF值的。那么,如果我们在一些特定的场合,需要自定义语料来提高关键词的合理性,应当如何实现呢?jieba库给我们提供了特定的接口用于自定义语料。

from jieba.analyse import set_idf_path
jieba.analyse.set_idf_path('word_idf.txt')

这个word_idf.txt的形式如下图所示:
在这里插入图片描述
第一列为词语,第二列为对应的IDF值。

  • 思考
    当我们用自定义语料进行关键词提取时, 随着文章数的不断增多,应如何实现word_idf.txt的增量更新呢?
三、自定义语料word_idf.txt的计算与更新
  1. 数据预处理
import re
import jieba

# 对文章进行分词
corpus_new['corpus'] = corpus_new['corpus'].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值