吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6095|回复: 5
收起左侧

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

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

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| c0ld 发表于 2018-9-24 01:02
一楼补上程序截图
2018-09-24 01-01-19 的屏幕截图.png
jimo 发表于 2018-9-24 06:41
 楼主| c0ld 发表于 2018-9-25 22:29
jimo 发表于 2018-9-24 06:41
摘要去哪里取得呢?

摘要一般可以直接通过爬虫获取的,不需要使用这类复杂的算法的
小黑LLB 发表于 2019-2-12 11:22
有趣 点赞 支持一波 感谢分享
newbie2019 发表于 2019-5-22 14:47
学习了,谢谢分享好技术!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 10:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表