本文来源吾爱破解论坛
前阵子朋友在做关于网络货币热点的一个分析报道,于是便找到了我,希望我帮他编写一个可以提取关键词的爬虫
那么问题就出现在“如何提取关键词”这个问题上,经过一番资料查找,最后选择了TextRank算法来提取关键词
接下来贴上一段百度上关于Tr算法的介绍
Textrank算法介绍那么在简单了解了算法的原理之后,我们开始编写程序:
先说一下自动文摘的方法。自动文摘(Automatic Summarization)的方法主要有两种:Extraction和Abstraction。其中Extraction是抽取式自动文摘方法,通过提取文档中已存在的关键词,句子形成摘要;Abstraction是生成式自动文摘方法,通过建立抽象的语意表示,使用自然语言生成技术,形成摘要。由于生成式自动摘要方法需要复杂的自然语言理解和生成技术支持,应用领域受限。所以本人学习的也是抽取式的自动文摘方法。
目前主要方法有:
基于统计:统计词频,位置等信息,计算句子权值,再简选取权值高的句子作为文摘,特点:简单易用,但对词句的使用大多仅停留在表面信息。
基于图模型:构建拓扑结构图,对词句进行排序。例如,TextRank/LexRank
基于潜在语义:使用主题模型,挖掘词句隐藏信息。例如,采用LDA,HMM
基于整数规划:将文摘问题转为整数线性规划,求全局最优解。
textrank算法
TextRank算法基于PageRank,用于为文本生成关键字和摘要。
首先编写爬虫部分:
[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*- import urllib.request from bs4 import BeautifulSoup ###爬虫部分### url = "http://www.bishijie.com/kuaixun" print("请稍等,正在爬行中......") #模拟浏览器请求 headers = ('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36') opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) data = urllib.request.urlopen(url).read() data = data.decode('utf-8') #将获取到内容扔进BeautifulSoup中转换格式 soup = BeautifulSoup(data, 'html.parser') result = soup.find_all('a', target='_blank') result = list(set(result)) filter(None, result) for link in result: title = str(link.get('title')) filewrite = open('vaule.txt','a+') filewrite.write(title) filewrite.close() ###提取关键词部分### #定义函数 def read_from_file(directions): decode_set=['utf-8','gb18030','ISO-8859-2','gb2312','gbk','Error'] for k in decode_set: file = open(directions,"r",encoding=k) readfile = file.read() file.close() break return readfile #读取文件 file_data = str(read_from_file('vaule.txt'))
接下来我们开始编写提取关键词的代码:
首先我们需要引用相关的几个第三方库(需要下载安装):
[Python] 纯文本查看 复制代码
import numpy as np import pandas as pd import jieba.analyse
然后我们开始编写提取关键词的程序:
[Python] 纯文本查看 复制代码
print("请稍等,正在提权关键词中......\n") #使用TextRank算法提取关键词 textrank=jieba.analyse.textrank #之前将返回的数据赋值给了file_data这个变量,现在对这些数据进行关键词提取 keywords_TR=textrank(file_data) print('今日关键词:',set(keywords_TR))
最后贴上完整代码:
[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*- #Author:MercuryYe import urllib.request import numpy as np import pandas as pd import jieba.analyse from bs4 import BeautifulSoup ###爬虫部分### url = "http://www.bishijie.com/kuaixun" print("请稍等,正在爬行中......") #模拟浏览器请求 headers = ('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36') opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) data = urllib.request.urlopen(url).read() data = data.decode('utf-8') #将获取到内容扔进BeautifulSoup中转换格式 soup = BeautifulSoup(data, 'html.parser') result = soup.find_all('a', target='_blank') result = list(set(result)) filter(None, result) for link in result: title = str(link.get('title')) filewrite = open('vaule.txt','a+') filewrite.write(title) filewrite.close() ###提取关键词部分### #定义函数 def read_from_file(directions): decode_set=['utf-8','gb18030','ISO-8859-2','gb2312','gbk','Error'] for k in decode_set: file = open(directions,"r",encoding=k) readfile = file.read() file.close() break return readfile #读取文件 file_data = str(read_from_file('vaule.txt')) print("请稍等,正在提权关键词中......\n") #使用TextRank算法提取关键词 textrank=jieba.analyse.textrank keywords_TR=textrank(file_data) print('今日关键词:',set(keywords_TR))
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: 【原创python】桌面快捷菜单,远离满桌面的快捷方式
- 下一篇: 安卓通讯录同步抖音头像