基于textrank和TF-IDF的考研阅读词汇的关键词抽取

昨天做阅读做了两篇,错了一大堆,思来想去,语法应该问题不大,就是词汇!但是词汇,我自以为我的词汇量不差啊!但是一做阅读单词几乎都不认识!于是我就在想是不是阅读的词汇积累太少,于是就想干脆把历年的阅读真题的高频词汇都统计出来!但是问题来了,有一些“a”“the”这些无意义的词汇肯定最多,难道又要一个个去识别?

然后就想到了,可以利用自然语言处理的生成自动摘要的方法,抽取关键词就好了嘛!

(我的文档只收集了12-16年的阅读真题的文件)

于是这里利用了两种抽取文档词汇关键词的方法:

一种是TextRank:具体算法原理可以在我的另一篇博客去看看https://blog.csdn.net/qq_40276310/article/details/81215665

一种是TF-IDF:https://blog.csdn.net/qq_40276310/article/details/81047471

算法原理就不解释了!直接上代码,非常简单!

import jieba.analyse as analyse
from textrank4zh import TextRank4Keyword

# 读取自己制作的历年阅读的文档
# 大家可以根据自己的需求制作自己的文档
lines = open(u'考研历年阅读素材1980-.txt', 'rb').read()

word = TextRank4Keyword()
word.analyze(lines, window=2, lower=True)
w_list = word.get_keywords(num=100, word_min_len=1)
# 基于textrank的算法
with open("C:\\Users\\Administrator\\Desktop\\高频词汇T.txt", "w", encoding='utf-8') as f:
    f.write("  ".join(w.word for w in w_list ))
# 基于TF-IDF的算法
with open("C:\\Users\\Administrator\\Desktop\\高频词汇TF.txt", "w", encoding='utf-8') as f:
    f.write("  ".join(analyse.extract_tags(lines, topK=100,withWeight=False, allowPOS=())))

这里我分别抽取文档中100个关键词,(因为今天打算先背100个!)对比如下:

这是TextRank算法的抽取结果:

《基于textrank和TF-IDF的考研阅读词汇的关键词抽取》

这是TF-IDF算法的抽取结果:

《基于textrank和TF-IDF的考研阅读词汇的关键词抽取》

可以对比看出,TextRank的抽取的效果比较好!

如果需要2012-2016年高频词汇的可以去我的码云里面直接下载文件(我只抽取了1000个单词):

https://gitee.com/guochangxiaozhazha/NLP/tree/master

下一步,我打算先记100个(抽取的个数可以自己调参!)然后将背下来的做一个停词,这样下次抽取导入停词的文件,就可以跳过停词抽取其他的关键词!继续背!^_^!

点赞