提取文章的关键词(一)

很多场合我们需要用简短的几句话来说明一篇文章的中心思想,用几个关键词来说明文章的主题。如果你写过论文的话,一定会对这些十分熟悉。一篇好的论文精炼的摘要和正确的关键词是必不可少的。这种提取关键词这种又枯燥又麻烦的事情肯定得教给计算机来做。当然是用的是我最爱的Python编程语言啦。

1 出现频率最高的词语

很容易想到的是根据词语出现的频率来排序,出现次数多的词语就是关键词啦。碰到的第一个问题是如何将一大篇文章,分成一个一个词语,因为中文里词语是没有明显间隔的。这个问题,这里我不作讨论,Python的jieba中文分词包就能很好地做这个事情。使用起来也非常简单:

import jieba
list(jieba.cut('国际奥委会评估团昨日在京召开新闻发布会,评估团主席茹科夫评价此次考察的相关情况时说,北京“有能力成功举办2022年冬奥会”。'))
#cut返回的结果是一个generator,用list便可将其转换为列表
['国际奥委会', '评估', '团', '昨日', '在', '京', '召开', '新闻', '发布会', ',', '评估', '团', '主席', '茹科夫', '评价', '此次', '考察', '的', '相关', '情况', '时说', ',', '北京', '“', '有', '能力', '成功', '举办', '2022', '年', '冬奥会', '”', '。']

 是不是很赞,各种名词都被识别了出来。那接下来我们就试一下吧。

文章内容来自这个网页 http://news.sohu.com/20150329/n410476532.shtml

import jieba
from collections import Counter

words = jieba.cut(text)
freq = Counter(words) #Counter正如其名字,就是统计列表中各个元素出现次数的
common = freq.most_common(20) #返回出现数目最多的20个关键词
[(',', 94), ('的', 78), ('\n', 67), ('\u3000', 66), ('。', 50), ('了', 30), ('北京', 27), ('和', 25), ('年', 24), ('评估', 21), ('我们', 17), ('在', 16), ('冬奥会', 16), ('将', 15), ('国际奥委会', 15), ('、', 12), ('也', 12), ('团', 11), ('”', 11), ('“', 11)]

 这里我们先瞅一瞅,出现最多的到底是什么,可以看到算法成功地发现了国际奥委会、北京、冬奥会这些关键词,无疑是文章的一个主题。但其他的好像都没有什么关系诶。出现次数最多的是标点符号,也毫不让人感到意外,毕竟每一句话几乎都有一个逗号。这样虽然找到的关键词,但效率太低了,10个才中了一两个。

除了标点符号外,我们还找到了一些没有意义的副词、代词等,这写都是不应该出现在关键词里的。

2 过滤标点符号

这解决起来也很简单,副词和标点符号基本上都是落单的,过滤掉一个字的词就行了,仔细想想现代中文里,一个字基本上都没有明确的含义,这样做也不会犯什么大错。

这个只需要在Python里加一行就行了

words = filter(lambda x:len(x)>1,words)

 filter这个函数会一次遍历words列表里的每一个元素,将其作为参数输入到filter的第一个参数里。第一个参数必须是一个函数,在这里是一个简单的匿名函数(及没有名字),匿名函数适合这种简单的功能。lambda关键词后是匿名函数的参数x,冒号后边便是返回值。在这里返回值是True或False,如果x的长度大于1就会就会返回True,反之返回False。更进一步说filter的第一个参数必须是这种返回True或False的函数。遍历words列表的元素过程中,如果输入到lambda函数返回True就会继续留在列表里,反之就会被踢出去。一行代码,多么凝练地实现了我们所需要的功能。

这时关键词就已经有很大的改观了:

[('北京', 27), ('评估', 21), ('我们', 17), ('冬奥会', 16), ('国际奥委会', 15), ('2022', 9), ('举办', 8), ('考察', 8), ('王安顺', 8), ('微克', 7)]

但我们仍然不能忍受'我们',这种没有意义的词出现在关键词里。

3 过滤停用词

要解决这个问题,最简单的方式是列一个表,囊括所有这种没有意义的词语。这种词语有一个专门的名字,叫做停用词(stop words)。很容易在网上找到这样一个表,包含1000个停用词的表就足够了。后面我会一起贴出来。

STOPWORDS = []
with open('stopwords_zh.txt','r',encoding='utf-8') as fh:
    for w in fh:
        STOPWORDS.append(w.strip())

words = jieba.cut(text)
words = filter(lambda x:len(x)>1 and x not in STOPWORDS, words)
freq = Counter(words)
common = freq.most_common(10)

这时我们就成功地去掉了,

[('北京', 27), ('评估', 21), ('冬奥会', 16), ('国际奥委会', 15), ('2022', 9), ('考察', 8), ('举办', 8), ('王安顺', 8), ('微克', 7), ('2008', 7)]

看起来已经非常不错了。

 

附 中文停用词

🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
实拍
点击数
播放
新闻
分享
评论
网易
推荐
微博
广告
内容
新浪
首页
视频
图片
网友
登录
手机
相关
阅读
论坛
正文
关注
宋体
频道
客户端
获得
下载
邮箱
点击
注册
跟帖
网站
微信
排行
热门
媒体
专题
来源
参与
文章
热点
导航
提高
雅黑
输入
微软
资讯
搜索
博客
查看
版权所有
官方
搜藏
按钮
标题
腾讯
发布
加载
推广
关键词
密码
最新
回复
凤凰
千龙网
盘点
报道
大于
添加
查询
二维码
新华社
排行榜
热点新闻
声明
图集
广告位
用户
雷锋
千龙
举报
中国日报
订阅
通行证
责任编辑
浏览器
凤凰网
朋友圈
和讯网
用户名
发帖
声望
热线
版权
投诉
讨论
不良信息
意见反馈
详细
热词
插入
字号
关键字
评价
上传
京华
一下
一个
一些
一何
一切
一则
一天
一定
一方面
一旦
一时
一来
一样
一次
一片
一番
一直
一致
一般
一起
一转眼
一边
一面
万一
三天两头
三番两次
三番五次
上下
上升
上去
上来
上述
上面
下列
下去
下来
下面
不一
不下
不久
不了
不亦乐乎
不仅
不仅仅
不仅仅是
不会
不但
不光
不免
不再
不力
不单
不变
不只
不可
不可开交
不可抗拒
不同
不外
不外乎
不够
不大
不如
不妨
不定
不对
不少
不尽
不尽然
不巧
不已
不常
不得
不得不
不得了
不得已
不必
不怎么
不怕
不惟
不成
不拘
不择手段
不敢
不料
不断
不日
不时
不是
不曾
不止
不止一次
不比
不消
不满
不然
不然的话
不特
不独
不由得
不知不觉
不管
不管怎样
不经意
不胜
不能
不能不
不至于
不若
不要
不论
不起
不足
不过
不迭
不问
不限
与其
与其说
与否
与此同时
专门
且不说
且说
两者
严格
严重
个人
个别
中小
中间
丰富
串行
临到
为主
为了
为什么
为什麽
为何
为止
为此
为着
主张
主要
举凡
举行
乃至
乃至于
之一
之前
之后
之後
之所以
之类
乌乎
乘势
乘机
乘胜
乘虚
乘隙
也好
也就是说
也是
也罢
了解
争取
二来
二话不说
二话没说
于是
于是乎
云云
云尔
互相
交口
产生
亲口
亲手
亲眼
亲自
亲身
人人
人们
人家
什么
什么样
什麽
仅仅
今后
今天
今年
今後
介于
仍旧
仍然
从不
从严
从中
从事
从今以后
从优
从古到今
从古至今
从头
从宽
从小
从新
从无到有
从早到晚
从未
从来
从此
从此以后
从而
从轻
从速
从重
他人
他们
他的
代替
以上
以下
以为
以便
以免
以前
以及
以后
以外
以後
以故
以期
以来
以至
以至于
以致
任何
任凭
任务
企图
伙同
伟大
传说
传闻
似乎
似的
但凡
但愿
但是
何乐而不为
何以
何况
何处
何妨
何尝
何必
何时
何止
何苦
何须
余外
作为
你们
你的
使得
使用
例如
依据
依照
依靠
便于
促进
保持
保管
保险
俺们
倍加
倍感
倒不如
倒不如说
倒是
倘使
倘或
倘然
倘若
借以
借此
假使
假如
假若
偏偏
做到
偶尔
偶而
傥然
允许
充其极
充其量
充分
先不先
先后
先後
先生
光是
全体
全力
全年
全然
全身心
全部
全都
全面
八成
公然
共同
共总
关于
其一
其中
其二
其他
其余
其后
其它
其实
其次
具体
具体地说
具体来说
具体说来
具有
兼之
再其次
再则
再有
再者
再者说
再说
决不
决定
决非
况且
准备
凑巧
凝神
几乎
几度
几时
几番
几经
凡是
凭借
出于
出去
出来
出现
分别
分头
分期
分期分批
切不可
切切
切勿
切莫
则甚
刚好
刚巧
刚才
别人
别处
别是
别的
别管
别说
到了儿
到处
到头
到头来
到底
到目前为止
前后
前此
前者
前进
前面
加上
加之
加以
加入
加强
动不动
动辄
勃然
匆匆
十分
千万
千万千万
单单
单纯
即令
即使
即便
即刻
即如
即将
即或
即是说
即若
却不
原来
又及
及其
及时
及至
双方
反之
反之亦然
反之则
反倒
反倒是
反应
反手
反映
反而
反过来
反过来说
取得
取道
受到
变成
古来
另一个
另一方面
另外
另悉
另方面
另行
只当
只怕
只是
只有
只消
只要
只限
叫做
召开
叮咚
叮当
可以
可好
可是
可能
可见
各个
各人
各位
各地
各式
各种
各级
各自
合理
同一
同时
同样
后来
后者
后面
向使
向着
否则
吧哒
呆呆地
呜呼
周围
呵呵
呼哧
呼啦
咱们
哈哈
哎呀
哎哟
哗啦
哪个
哪些
哪儿
哪天
哪年
哪怕
哪样
哪边
哪里
哼唷
唯有
啊呀
啊哈
啊哟
啪达
啷当
喔唷
嗡嗡
嘎嘎
嘎登
嘿嘿
因为
因了
因此
因着
因而
固然
在下
在于
坚决
坚持
基于
基本
基本上
处在
处处
处理
复杂
多么
多亏
多多
多多少少
多多益善
多少
多年前
多年来
多数
多次
够瞧的
大不了
大举
大事
大体
大体上
大凡
大力
大多
大多数
大大
大家
大张旗鼓
大批
大抵
大概
大略
大约
大致
大都
大量
大面儿上
失去
奋勇
她们
她的
好在
好的
好象
如上
如上所述
如下
如今
如何
如其
如前所述
如同
如常
如是
如期
如果
如次
如此
如此等等
如若
始而
姑且
存在
存心
孰料
孰知
宁可
宁愿
宁肯
它们
它们的
它的
安全
完全
完成
实现
实际
宣布
容易
密切
对于
对应
对待
对方
对比
将才
将要
将近
少数
尔后
尔尔
尔等
尚且
尤其
就地
就是
就是了
就是说
就此
就算
就要
尽可能
尽如人意
尽心尽力
尽心竭力
尽快
尽早
尽然
尽管
尽管如此
尽量
局外
居然
届时
属于
屡屡
屡次
屡次三番
岂但
岂止
岂非
川流不息
左右
巨大
巩固
差一点
差不多
已矣
已经
巴巴
帮助
常常
常言说
常言说得好
常言道
平素
年复一年
并不
并不是
并且
并排
并无
并没
并没有
并肩
并非
广大
广泛
应当
应用
应该
庶乎
庶几
开外
开始
开展
引起
弹指之间
强烈
强调
归根到底
归根结底
归齐
当下
当中
当儿
当前
当即
当口儿
当地
当场
当头
当庭
当时
当然
当真
当着
形成
彻夜
彻底
彼时
彼此
往往
待到
很多
很少
後来
後面
得了
得出
得到
得天独厚
得起
心里
必定
必将
必然
必要
必须
快要
忽地
忽然
怎么
怎么办
怎么样
怎奈
怎样
怎麽
急匆匆
怪不得
总之
总体来看
总体来说
总体言之
总体说来
总是
总的来看
总的来说
总的说来
总结
总而言之
恍然
恐怕
恰似
恰好
恰如
恰巧
恰恰
恰恰相反
恰逢
惟其
惯常
意思
愤然
愿意
慢说
成为
成年
成年累月
成心
我们
我的
或则
或多或少
或是
或曰
或者
或许
战斗
截然
截至
所以
所在
所幸
所有
所谓
才能
扑通
打从
打开天窗说亮话
扩大
抑或
抽冷子
拦腰
按时
按期
按照
按理
按说
挨个
挨家挨户
挨次
挨着
挨门挨户
挨门逐户
换句话说
换言之
据实
据悉
据我所知
据此
据称
据说
掌握
接下来
接着
接著
接连不断
放量
故意
故此
故而
敞开儿
敢于
敢情
整个
断然
方便
方才
方能
方面
旁人
无宁
无法
无论
既定
既往
既是
既然
既然如此
日复一日
日渐
日益
日臻
日见
时候
昂然
明显
明确
是不是
是以
是否
是的
显然
显著
普通
普遍
暗中
暗地里
暗自
更为
更加
更进一步
曾经
替代
最后
最大
最好
最後
最近
最高
有些
有关
有利
有力
有及
有所
有效
有时
有点
有的
有的是
有着
有著
朝着
本人
本地
本着
本身
权时
来不及
来得及
来看
来着
来自
来讲
来说
极为
极了
极其
极力
极大
极度
极端
构成
果然
果真
某个
某些
某某
根据
根本
格外
次第
欢迎
正值
正在
正如
正巧
正常
正是
此中
此后
此地
此处
此外
此时
此次
此间
毋宁
每个
每天
每年
每当
每时每刻
每每
每逢
比及
比如
比如说
比方
比照
比起
比较
毕竟
毫不
毫无
毫无例外
毫无保留地
沙沙
没奈何
没有
沿着
注意
深入
清楚
满足
漫说
然则
然后
然後
然而
照着
牢牢
特别是
特殊
特点
犹且
犹自
独自
猛然
猛然间
率尔
率然
现代
现在
理应
理当
理该
瑟瑟
甚且
甚么
甚或
甚而
甚至
甚至于
用来
由于
由是
由此
由此可见
略为
略加
略微
白白
的确
的话
皆可
目前
直到
直接
相似
相信
相反
相同
相对
相对而言
相应
相当
相等
省得
看上去
看出
看到
看来
看样子
看看
看见
看起来
真是
真正
眨眼
着呢
矣乎
矣哉
知道
确定
碰巧
积极
移动
究竟
穷年累月
突出
突然
立刻
立即
立地
立时
立马
竟然
竟而
第二
等到
等等
策略地
简直
简而言之
简言之
类如
精光
紧接着
累年
累次
纯粹
纵令
纵使
纵然
练习
组成
经常
经过
结合
结果
绝不
绝对
绝非
绝顶
继之
继后
继续
继而
维持
综上所述
缕缕
罢了
老大
老是
老老实实
考虑
而且
而况
而又
而后
而外
而已
而是
而言
而论
联系
联袂
背地里
背靠背
能否
能够
自个儿
自从
自各儿
自后
自家
自己
自打
自身
至于
至今
至若
般的
良好
若夫
若是
若果 
若非
范围
莫不
莫不然
莫如
莫若
莫非
获得
藉以
虽则
虽然
虽说
行为
行动
表明
表示
要不
要不是
要不然
要么
要是
要求
规定
觉得
譬喻
譬如
认为
认真
认识
许多
论说
设使
设或
设若
诚如
诚然
话说
该当
说明
说来
说说
请勿
诸位
诸如
谁人
谁料
谁知
豁然
贼死
赖以
赶快
赶早不赶晚
起先
起初
起头
起来
起见
起首
趁便
趁势
趁早
趁机
趁热
趁着
越是
路经
转动
转变
转贴
轰然
较为
较之
较比
达到
达旦
迅速
过于
过去
过来
运用
近几年来
近年来
近来
还是
还有
还要
这一来
这个
这么
这么些
这么样
这么点儿
这些
这会儿
这儿
这就是说
这时
这样
这次
这点
这种
这般
这边
这里
这麽
进入
进去
进来
进步
进而
进行
连同
连声
连日
连日来
连袂
连连
迟早
迫于
适应
适当
适用
逐步
逐渐
通常
通过
造成
遇到
遭到
遵循
遵照
避免
那个
那么
那么些
那么样
那些
那会儿
那儿
那时
那末
那样
那般
那边
那里
那麽
部分
鄙人
采取
里面
重大
重新
重要
鉴于
针对
长期以来
长此下去
长线
长话短说
问题
间或
防止
附近
陈年
限制
陡然
除了
除却
除去
除外
除开
除此
除此之外
除此以外
除此而外
除非
随后
随时
随着
随著
隔夜
隔日
难得
难怪
难说
难道
难道说
集中
需要
非但
非常
非徒
非得
非特
非独
顶多
顷刻
顷刻之间
顷刻间
顺着
顿时
风雨无阻
首先
马上
高低
高兴
默然
默默地

 

posted on 2015-03-29 20:11  meelo  阅读(2338)  评论(0编辑  收藏  举报