搜索引擎文本预处理
实验报告
学院: 信息科学与技术学院
教师: 吴晓
姓名:
武瑞梓
学号:
2016112368
班级: 软件 2016-01 班
2018-2019
目录
1 中文文本预处理 ...............................................................................................................................................1
1.1 文本下载 ................................................................................................................................................1
1.2 文本去重复 ............................................................................................................................................4
1.3 文本分词处理 .......................................................................................................................................6
1.4 去停用词处理 .......................................................................................................................................8
2 英文文本预处理 ............................................................................................................................................ 10
2.1 文本下载 ............................................................................................................................................. 10
2.2Poter-Stemming ................................................................................................................................ 13
2.3 去停用词处理 .................................................................................................................................... 22
3 文本命名处理 ................................................................................................................................................. 24
4 项目感想 .......................................................................................................................................................... 26
1 中文文本预处理
1.1 文本下载
综合衡量了多个网站以后,选择了知乎主页面的每日热榜文章进行文章的下
载。首先确定了该页面的 url:https://www.zhihu.com/explore#daily-hot。然
后在该页面中,出现如下的页面内容:
接下来进行文本的爬取过程。通过开发者工具中监控网站的请求,多次请求
网站后台以后发现有一系列相似的格式的请求重复出现,每次在网站页面请求更
多文本的时候会重复出现。因此确定该请求即需要爬取的文章的网站后台请求。
1
通过查看该请求,即发现猜想符合实际情况。进入该请求的返回 URL 链接,
发现该请求每次请求后台一次,即返回 5 篇文章。即每一个返回的 URL 的内容即
五篇新的文章。然后考虑到这些相似返回的 URL 的格式以及参数问题,我使用
URL decode 工具对选取的这一系列的 URL 进行了解析。得到以下结果。
通过解析结果可以知道该请求的参数有两个,即 offset 表示文章的索引,
type 表示文章的栏目属于日推。
根据该结论,可以得到包含日推文章的所有 URL。因此利用 python 编写程
序下载日榜的所有文章:
import requests
import self as self
from pyquery import PyQuery as pq
index=1
i=1
f=open('urls.txt','w+',encoding='utf-8')
while(i<=506):
url='https://www.zhihu.com/node/ExploreAnswerListV2?params={"offset":'+str(i)+',"type":"day
"}'
f.write(url+'\n')
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/73.0.3683.103 Safari/537.36",
}
html = requests.get(url, headers=headers).text
doc = pq(html)
items = doc('.explore-feed.feed-item').items()
for item in items:
question = item.find('h2').text()
author = item.find('.author-link').text()
answer = pq(item.find('.content').html()).text()
file = open('OriginArticles\article'+str(index)+'.txt', 'a', encoding='utf-8')
file.write('\n'.join([question, author, answer]))
file.write('\n')
file.close()
index=index+1
i=i+5
该程序运行会出现一个问题,即只有 198 篇符合标准的文章,而第 199 篇文
章之后所有文章都为空文档。然后重新去查看知乎热榜连接,参考所有 html 代
码时发现,日榜文章最多只会保存 198 篇文章。即请求网站后台返回的文章最多
有 198 篇。
因此,将该程序在不同的三天事件中运行三次,即可得到 594 篇文章。在该
594 篇文章中保留前 500 篇文章。得到所需的 500 篇源文本。