首页 编程教程正文

TextRank:基于Tr算法提取新闻关键词的Python爬虫

piaodoo 编程教程 2020-02-22 22:03:31 828 0 python教程

本文来源吾爱破解论坛

前阵子朋友在做关于网络货币热点的一个分析报道,于是便找到了我,希望我帮他编写一个可以提取关键词的爬虫
那么问题就出现在“如何提取关键词”这个问题上,经过一番资料查找,最后选择了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 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7448.html

搜索