一段文字如何提取核心关键字?

2017-11-09 08:52:01 +08:00
 tianxiacangshen
比如一段关于比特币的文字,怎么将里面最核心的关键字提取出来?提取 3-5 个,比如下面这段文字:

“ SegWit2x 升级定于 11 月 16 日开始生效。该升级旨在提升比特币交易的速度,并将同时提高交易的手续费。不过,过去几个月来,越来越多的比特币开发者不再支持比特币的升级。
业内大佬向 CNBC 表示:“我们的目标一直是比特币顺利的升级。不幸的是,很显然我们没有足够的共识来进行升级。继续目前的道路可能分裂社区,并阻碍比特币的发展。随着比特币交易手续费的提升,开发人员一直希望数字货币社区能获得共识,解决这一问题。””

程序上怎么实现提取核心的关键字?我的思路是这样:

1、词库里面匹配,将文章全部打散成关键字

2、检测重复次数最多的关键字

3、去掉通用关键字(做一个通用关键字表,每个关键字都有相关通用率)

4、去掉通用之后保留的 3-5 个应该就是核心关键字了

可行吗?
4745 次点击
所在节点    PHP
13 条回复
neosfung
2017-11-09 08:52:59 +08:00
Tfidf
mpich
2017-11-09 08:53:42 +08:00
tfidf textrank 都是不错的 baseline
l00t
2017-11-09 08:56:06 +08:00
你的思路就是 TFIDF。我觉得就单篇文章而言,还是 textrank 的效果好些。TFIDF 太机械了。
y051313
2017-11-09 09:05:28 +08:00
scws 可以提取关键词
tedcon
2017-11-09 09:51:29 +08:00
这个常规做法不应该先分词, 去除停顿词,然后根据词性来获取预选词,在预选词里面统计频率最高的为关键词
Ginson
2017-11-09 09:56:46 +08:00
![核心词提取]( )

是否符合预期?
tianxiacangshen
2017-11-09 10:03:15 +08:00
@Ginson 应该比特币作为一个关键字,最核心的应该是比特币这个关键字
Ginson
2017-11-09 10:05:34 +08:00
@tianxiacangshen 语料库的问题,jieba 自带的语料库没有把“比特币”作为一个单词来看待,要手动弄一下。
princelai
2017-11-09 10:25:21 +08:00
自定义词库的效果

jieba.analyse.textrank(s,topK=10)
Out[10]: ['升级', '交易', '提升', '社区', '共识', '货币', '希望', '开发人员', '手续费', '旨在']

jieba.analyse.tfidf(s,topK=10)
Out[11]: ['比特币', '升级', '共识', '手续费', 'SegW', '2x', '定于', '11', '16', '生效']
EricJia
2017-11-09 10:42:03 +08:00
pagerank
gyorou
2017-11-09 10:47:03 +08:00
别提了,特么 segwit2x 都无限延期了。
tianxiacangshen
2017-11-09 10:55:50 +08:00
@princelai 显然第二种比较好
princelai
2017-11-09 11:27:56 +08:00
@tianxiacangshen 那是因为我有自己的 stopword 和 userdict,而且我训练的 tfidf 权重文件正好也是金融类相关的,只是有点小,如果再加上 wikipedia 的语料库应该会有更好的效果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX