jieba关键词抽取(TF-IDF)与中文抽取式摘要

        jieba关键词抽取有两种方法。一种是基于TF-IDF算法的关键词抽取,另一种是基于TextRank算法的关键词抽取。这里主要介绍TF-IDF。

TF-IDF

        TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种统计方法,用以评估一个词(关键词)对于一个文档集或一个语料库中的其中一份文档的重要程度。词语的重要性随着它在文档中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

        TF(Term Frequency,词频)表示词语在文本中出现的频率。计算公式如下:

在这里插入图片描述

        IDF(Inverse Document Frequency,逆文档频率)表示某个词由总文件数目除以包含该词的文件数目,再将得到的商取对数得到。

在这里插入图片描述

最终得到TF-IDF值:

        即TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语料库中出现次数成反比。TF-IDF可用作搜索引擎关键词提取文本相似性文本摘要。

Jieba基于TF-IDF算法的关键词抽取

        jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

  • sentence 为待提取的文本
  • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
  • withWeight 为是否一并返回关键词权重值,默认值为 False
  • allowPOS 仅包括指定词性的词,默认值为空,即不筛选

        根据官方文档,关键词抽取所使用逆向文件频率(IDF)文本语料库可以使用jieba.analyse.set_idf_path(file_name)切换成自定义语料库,但是经过我的测试此方法无效。所以我改用jieba.load_userdict(file_name)加载自定义语料库,可以起作用。

  • 自定义语料库示例:

import jieba.analyse

texts = ["四海网讯,近日,有媒体报道称:章子怡真怀孕了!报道还援引知情人士消息称,“章子怡怀孕大概四五个月,预产期是年底前后,现在已经不接工作了。”这到底是怎么回事?消息是真是假?",
         "鉴于统一误差计算模型简化方法自适应性差的问题,提出了一种根据地势特征自适应分割地形区域从而有选择性地进行误差计算和模型简化的方法.针对地形模型数据量大的特点,建立了细节层次结构,并证明了空间快速索引方法的有效性.",
         "针对央视3·15晚会曝光的电信行业乱象,工信部在公告中表示,将严查央视3·15晚会曝光通信违规违法行为。工信部称,已约谈三大运营商有关负责人,并连夜责成三大运营商和所在省通信管理局进行调查,依法依规严肃处理。",
         "就废弃茶叶被转手事件发声明本报讯(记者刘俊) “我们也是受害者!”昨日,有媒体报道称康师傅的废弃茶叶被转手卖给不良商家、冒充名茶流入市场,康师傅的一位联系人这样说。",
         "记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有摆脱雨水的困扰。7月31日下午6点,国奥队的日常训练再度受到大雨的干扰,无奈之下队员们只慢跑了25分钟就草草收场。",
         "我想做一张关于火星的海报,建一个火星模型,画一个火星漫画分镜,做两首火星相关的音乐,火星特效和火星小程序,用java开发后端"]

jieba.load_userdict("defined_word.txt")
# jieba.analyse.set_idf_path("defined_word.txt")
for i in texts:
    print(jieba.analyse.extract_tags(i, withWeight=True))

        结果如下:

[('章子怡', 0.800708588312), ('怀孕', 0.6079913485848), ('知情人士', 0.47819070011599996), ('不接', 0.47819070011599996), ('预产期', 0.447705098036), ('网讯', 0.440412235764), ('消息', 0.4031915804936), ('真是假', 0.37303866693880006), ('四五个', 0.36986869207280004), ('四海', 0.34830883204359997), ('援引', 0.3408312119376), ('怎么回事', 0.303412786018), ('媒体报道', 0.3003504215432), ('大概', 0.2453365462088), ('前后', 0.2447148155656), ('近日', 0.23524259430320002), ('报道', 0.23521628716639997), ('到底', 0.23210571583200001), ('年底', 0.2269107125752), ('工作', 0.168109573694)]
[('模型简化', 0.7139205660216217), ('误差', 0.44130299213513513), ('方法', 0.4027950024356757), ('自适应性', 0.37569399059459463), ('地形模型', 0.37569399059459463), ('数据量', 0.3382265754297297), ('计算', 0.30261685714054054), ('层次结构', 0.2947282534702703), ('索引', 0.2509610036521622), ('选择性', 0.2329047006281081), ('有效性', 0.22701133625486486), ('分割', 0.20688029422945947), ('细节', 0.19475988090405405), ('鉴于', 0.19269968183972971), ('地形', 0.1776636313437838), ('地势', 0.17696204679621622), ('适应', 0.17096232303972975), ('针对', 0.16326698571378379), ('证明', 0.16154944432567567), ('快速', 0.1555910723027027)]
[('15', 0.6291982896263157), ('晚会', 0.4924938352478947), ('央视', 0.4296897555), ('运营商', 0.4263992103957895), ('曝光', 0.4234529331457894), ('通信', 0.34955586967789476), ('工信部', 0.31459914481315787), ('工信', 0.31459914481315787), ('部称', 0.31459914481315787), ('已约', 0.31459914481315787), ('谈三大', 0.31459914481315787), ('三大', 0.31459914481315787), ('依规', 0.31459914481315787), ('乱象', 0.2763021123763158), ('严肃处理', 0.25987699898), ('责成', 0.25595501005473686), ('严查', 0.25184063978131577), ('违法行为', 0.22213400362710525), ('管理局', 0.22008798381473685), ('电信', 0.2108368340431579)]
[('康师傅', 0.8026878268615385), ('转手', 0.6966531204246155), ('废弃', 0.6506353801115385), ('茶叶', 0.5283797225546154), ('发声明', 0.4727399899807692), ('刘俊', 0.4064797362230769), ('联系人', 0.37653091491538465), ('名茶', 0.3637702459803846), ('冒充', 0.3511535779811539), ('受害者', 0.3270198057869231), ('商家', 0.30587087164615384), ('不良', 0.29623842059538463), ('媒体报道', 0.2887984822530769), ('本报讯', 0.2786135049153846), ('流入', 0.24443415009076921), ('事件', 0.2190876628396154), ('一位', 0.2014681819), ('昨日', 0.19273437154538461), ('记者', 0.16526710588961538), ('这样', 0.14737703029576923)]
[('国奥队', 0.8443740078785714), ('沈阳', 0.5313721054014285), ('傅亚雨', 0.42695598224642856), ('31', 0.42695598224642856), ('25', 0.42695598224642856), ('草草收场', 0.41081365639999995), ('慢跑', 0.37744546935), ('大雨', 0.29897316301642857), ('困扰', 0.28005551629964287), ('队员', 0.2795583256385714), ('雨水', 0.27818608258821426), ('干扰', 0.26138044689571427), ('日常', 0.2533517246992857), ('无奈', 0.2531154661592857), ('分钟', 0.23837388006714286), ('训练', 0.23747616673571428), ('摆脱', 0.22810601443357142), ('之下', 0.22131312294142855), ('再度', 0.21391858104035716), ('下午', 0.21319260323035713)]
[('火星', 2.3340936545481816), ('分镜', 0.5433985228590908), ('java', 0.5433985228590908), ('两首', 0.4619549106227273), ('海报', 0.4522469969722728), ('特效', 0.4435246784354545), ('漫画', 0.4211794847159091), ('后端', 0.40379080978000004), ('模型', 0.30945926981818184), ('音乐', 0.3013485960768182), ('程序', 0.2878552293868182), ('一张', 0.27272913813454547), ('一个', 0.2561409974663636), ('开发', 0.25122241108409094), ('关于', 0.22634032253318181), ('相关', 0.21980499695545455)]

中文抽取式摘要

        文本摘要分两种,一种是生成式摘要,另一种则是抽取式摘要。经过我的测试,目前中文摘要效果较好的是bert-extractive-summarizer中文抽取式摘要。

环境安装

        因为summarizer默认使用spacy英文分词包,所以这里需要下载中文分词包

pip install bert-extractive-summarizer
pip install spacy
pip install transformers
pip install neuralcoref

# 下载中文spacy模型
python -m spacy download zh_core_web_lg

代码实现 

from summarizer import Summarizer
from summarizer.sentence_handler import SentenceHandler
from spacy.lang.zh import Chinese
from transformers import *

# 通过Transformers加载模型
modelName = "hfl/rbt6"  # 使用中文bert,可以换成自己常用的
custom_config = AutoConfig.from_pretrained(modelName)
custom_config.output_hidden_states = True
custom_tokenizer = AutoTokenizer.from_pretrained(modelName)
custom_model = AutoModel.from_pretrained(modelName, config=custom_config)

model = Summarizer(
    custom_model=custom_model,
    custom_tokenizer=custom_tokenizer,
    sentence_handler=SentenceHandler(language=Chinese)  # 使用中文分词
)

texts = [
    "四海网讯,近日,有媒体报道称:章子怡真怀孕了!报道还援引知情人士消息称,“章子怡怀孕大概四五个月,预产期是年底前后,现在已经不接工作了。”这到底是怎么回事?消息是真是假?针对此消息,23日晚8时30分,华西都市报记者迅速联系上了与章子怡家里关系极好的知情人士,这位人士向华西都市报记者证实说:“子怡这次确实怀孕了。她已经36岁了,也该怀孕了。章子怡怀上汪峰的孩子后,子怡的父母亲十分高兴。子怡的母亲,已开始悉心照料女儿了。子怡的预产期大概是今年12月底。”当晚9时,华西都市报记者为了求证章子怡怀孕消息,又电话联系章子怡的亲哥哥章子男,但电话通了,一直没有人接听。有关章子怡怀孕的新闻自从2013年9月份章子怡和汪峰恋情以来,就被传N遍了!不过,时间跨入2015年,事情却发生着微妙的变化。2015年3月21日,章子怡担任制片人的电影《从天儿降》开机,在开机发布会上几张合影,让网友又燃起了好奇心:“章子怡真的怀孕了吗?”但后据证实,章子怡的“大肚照”只是影片宣传的噱头。过了四个月的7月22日,《太平轮》新一轮宣传,章子怡又被发现状态不佳,不时深呼吸,不自觉想捂住肚子,又觉得不妥。然后在8月的一天,章子怡和朋友吃饭,在酒店门口被风行工作室拍到了,疑似有孕在身!今年7月11日,汪峰本来在上海要举行演唱会,后来因为台风“灿鸿”取消了。而消息人士称,汪峰原来打算在演唱会上当着章子怡的面宣布重大消息,而且章子怡已经赴上海准备参加演唱会了,怎知遇到台风,只好延期,相信9月26日的演唱会应该还会有惊喜大白天下吧。",
    "鉴于统一误差计算模型简化方法自适应性差的问题,提出了一种根据地势特征自适应分割地形区域从而有选择性地进行误差计算和模型简化的方法.针对地形模型数据量大的特点,建立了细节层次结构,并证明了空间快速索引方法的有效性.为了解决平缓地势区域分割困难的问题,提出了基于凸点和扩散点相结合的特征选择算法,并有效控制了特征点的密度.在此基础上提出了多分辨率邻域节点查找与匹配方法,实现了区域的快速粗粒度分割.提出了地表起伏度计算方法,进一步评价了分割区域的地势特征,从而对部分区域进行细分处理.在真实数据上进行了实验研究,结果表明算法性能以及简化模型的精度和自适应性较好.",
    "针对央视3·15晚会曝光的电信行业乱象,工信部在公告中表示,将严查央视3·15晚会曝光通信违规违法行为。工信部称,已约谈三大运营商有关负责人,并连夜责成三大运营商和所在省通信管理局进行调查,依法依规严肃处理。",
    "就废弃茶叶被转手事件发声明本报讯(记者刘俊) “我们也是受害者!”昨日,有媒体报道称康师傅的废弃茶叶被转手卖给不良商家、冒充名茶流入市场,康师傅的一位联系人这样说。康师傅昨日晚间发出声明表示生产废料处理商作出了 “不良行为”,公司方面除表达严正关注的立场外,也已经配合政府有关单位进行调查。中止与生产废料厂商的合同康师傅在给本报的声明中确认,经查,与康师傅签订生产废料处理合同之厂商为吉安三石饲料商行,且系通过公开招标程序取得合同承揽资格,并签有保证透过合法渠道处理康师傅生产废料的承诺。昨日媒体报道的内容显示吉安三石饲料商行可能违反与康师傅签订之合同,即日起,康师傅已中止履行与吉安三石饲料商行的有关合同,并静待相关单位调查结果后从严追究责任。昨日,康师傅一位熟悉情况的人士告诉记者,这家商家是从去年三季度后开始给康师傅处理生产废料的,有关合同将在今年年底届满,这位联系人指康师傅和该商行之间没有参股或任何资本关系。“厂家承诺废料用来做枕头”“为了确保不会出现乱子我们在合同上跟这家商行更是明确约定,不能利用废弃茶叶做任何违法国家法律法规的事情的。”上述人士说,这家商行向他们承诺茶叶是用于做枕头等用品的,康师傅方面为了安全起见,还特意向他们索要用于做枕头等业务的单据,没有想到还是出了这样的事情。康师傅是内地最大的即饮茶饮料生产商,其市场份额近四成。据媒体昨日曝光的二手茶叶的产业链,回收商行将康师傅泡过后的废弃茶叶以低价出售给不良商家,商家将茶叶运往外地进行加工出售。每年百万斤的二手茶叶被制成名茶出口国外或卖给国内企业。据报道,泡后的茶叶先是被运往广州增城新塘永和龟山,在烘干后被运往东莞麻涌的茶厂加工,然后集中运至浙江安吉凯丰茶叶有限公司(下称凯丰茶厂)进行再次加工。作者:刘俊 (来源:广州日报)",
    "记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有摆脱雨水的困扰。7月31日下午6点,国奥队的日常训练再度受到大雨的干扰,无奈之下队员们只慢跑了25分钟就草草收场。31日上午10点,国奥队在奥体中心外场训练的时候,天就是阴沉沉的,气象预报显示当天下午沈阳就有大雨,但幸好队伍上午的训练并没有受到任何干扰。下午6点,当球队抵达训练场时,大雨已经下了几个小时,而且丝毫没有停下来的意思。抱着试一试的态度,球队开始了当天下午的例行训练,25分钟过去了,天气没有任何转好的迹象,为了保护球员们,国奥队决定中止当天的训练,全队立即返回酒店。在雨中训练对足球队来说并不是什么稀罕事,但在奥运会即将开始之前,全队变得“娇贵”了。在沈阳最后一周的训练,国奥队首先要保证现有的球员不再出现意外的伤病情况以免影响正式比赛,因此这一阶段控制训练受伤、控制感冒等疾病的出现被队伍放在了相当重要的位置。而抵达沈阳之后,中后卫冯萧霆就一直没有训练,冯萧霆是7月27日在长春患上了感冒,因此也没有参加29日跟塞尔维亚的热身赛。队伍介绍说,冯萧霆并没有出现发烧症状,但为了安全起见,这两天还是让他静养休息,等感冒彻底好了之后再恢复训练。由于有了冯萧霆这个例子,因此国奥队对雨中训练就显得特别谨慎,主要是担心球员们受凉而引发感冒,造成非战斗减员。而女足队员马晓旭在热身赛中受伤导致无缘奥运的前科,也让在沈阳的国奥队现在格外警惕,“训练中不断嘱咐队员们要注意动作,我们可不能再出这样的事情了。”一位工作人员表示。从长春到沈阳,雨水一路伴随着国奥队,“也邪了,我们走到哪儿雨就下到哪儿,在长春几次训练都被大雨给搅和了,没想到来沈阳又碰到这种事情。”一位国奥球员也对雨水的“青睐”有些不解。",
    "我想做一张关于火星的海报,建一个火星模型,画一个火星漫画分镜,做两首火星相关的音乐,火星特效和火星小程序,用java开发后端"]

for i, j in enumerate(texts):
    result = model(j)
    print(str(i + 1) + ':' + result)

        在modelName输入huggingface上有的模型,这里用的是哈工大的中文bert,然后通过huggingface封装的transformers加载模型,使用spacy中文分词。效果如下:

1:报道还援引知情人士消息称,“章子怡怀孕大概四五个月,预产期是年底前后,现在已经不接工作了。” 当晚9时,华西都市报记者为了求证章子怡怀孕消息,又电话联系章子怡的亲哥哥章子男,但电话通了,一直没有人接听。
2:鉴于统一误差计算模型简化方法自适应性差的问题,提出了一种根据地势特征自适应分割地形区域从而有选择性地进行误差计算和模型简化的方法. 为了解决平缓地势区域分割困难的问题,提出了基于凸点和扩散点相结合的特征选择算法,并有效控制了特征点的密度.
3:针对央视3·15晚会曝光的电信行业乱象,工信部在公告中表示,将严查央视3·15晚会曝光通信违规违法行为。 工信部称,已约谈三大运营商有关负责人,并连夜责成三大运营商和所在省通信管理局进行调查,依法依规严肃处理。
4:昨日,有媒体报道称康师傅的废弃茶叶被转手卖给不良商家、冒充名茶流入市场,康师傅的一位联系人这样说。 昨日,康师傅一位熟悉情况的人士告诉记者,这家商家是从去年三季度后开始给康师傅处理生产废料的,有关合同将在今年年底届满,这位联系人指康师傅和该商行之间没有参股或任何资本关系。
5:7月31日下午6点,国奥队的日常训练再度受到大雨的干扰,无奈之下队员们只慢跑了25分钟就草草收场。 31日上午10点,国奥队在奥体中心外场训练的时候,天就是阴沉沉的,气象预报显示当天下午沈阳就有大雨,但幸好队伍上午的训练并没有受到任何干扰。 而女足队员马晓旭在热身赛中受伤导致无缘奥运的前科,也让在沈阳的国奥队现在格外警惕,“训练中不断嘱咐队员们要注意动作,我们可不能再出这样的事情了。”
6:我想做一张关于火星的海报,建一个火星模型,画一个火星漫画分镜,做两首火星相关的音乐,火星特效和火星小程序,用java开发后端

参考链接

 https://blog.csdn.net/asialee_bird/article/details/81486700

https://github.com/dmmiller612/bert-extractive-summarizer/issues/45

猜你喜欢

转载自blog.csdn.net/weixin_41611054/article/details/118440044