百度词汇检索,计算PMI值
'''词汇检索百度返回值,并且计算PMI值的类'''
from bs4 import BeautifulSoup
import requests
import re
import pandas as pd
import time
import numpy as np class PMI():
def __init__(self):
self.url = 'https://www.baidu.com/s?wd='
#self.vocab = vocab def getHtml(self, url): # 只输入URL的主体部分,后面的参数用下面的字典附加上
'''注意这里必须加一个user-Agent,不然request发送请求是是以Python名义发送的,百度知道是Python发的就不给你返回需要的内容,伪装一下'''
try:
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
}
r = requests.get(url, headers=header)
r.raise_for_status()
r.encoding = 'utf-8'
return r.text
except:
print('爬取失败') def getNum(self, html): # 返回搜索的数字
soup = BeautifulSoup(html, 'html.parser')
content = soup.find_all('span', {
'class': 'nums_text'}) # 返回内容为 <span class="nums_text">百度为您找到相关结果约100,000,000个</span>
num = re.findall(r'[\d+,*]+', content[0].string)[
0] # 返回我们需要的搜索次数,内容是字符串型的数字.形如'100,000,000',数字内部包含逗号,下一步需要剔除掉逗号
return int(re.sub(r',', '', num)) # 将逗号替换掉,并强制转换为整数 def retrieveNum(self, vocab): # url主体和爬取网页的数量
url = self.url + vocab
html = self.getHtml(url)
num = self.getNum(html)
return num def getPmi(self,vocab):
n_p = 100000000
n_f = self.retrieveNum(vocab)
n_pf = self.retrieveNum(' '.join(['手机', vocab]))
# print(' '.join(['手机',word]))
# print(n_pf)
pmi = np.log10(n_pf / (n_p * n_f))
return pmi def getPmiList(self,words_list):#返回输入词列表的pmi值,以列表形式
pmi_list=[]
for i in words_list:
pmi_list.append(self.getPmi(i))
return pmi_list if __name__ =='__main__':
time_start = time.time()
url = 'https://www.baidu.com/s?wd='
#print(getHtml( url+'爸爸'))
# file=pd.DataFrame(columns=name,data=comm)
# file.to_csv('D:/machinelearning data/crawlerData/huaWei_P20_JD100-110.csv',index=False)
# num = retrieveNum('办法')
# print('搜索次数为:', num)
d=PMI()
a=['快递','傻子','总体','物流', '验机', '物流', '游戏']#['鸡楚', '留香王者', '系列', '性能', '电池', '电', '视频', '游戏','中华民族', '性价比', '王者', '卡', '天', '红米.', '老婆', '电池', '电', '王者', '时间', '游戏', '相机', '感触', '粉色', '妹妹']
pmi=d.getPmiList(a)
print('PMI:',list(pmi))
time_end = time.time()
print('耗时%s秒' % (time_end - time_start))
百度词汇检索,计算PMI值的更多相关文章
- geotrellis使用(十七)使用缓冲区分析的方式解决单瓦片计算边缘值问题
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求分析 实现方案 总结 一.前言 最 ...
- 百度地图API显示多个标注点并添加百度样式检索窗口
原作者博客地址:http://blog.csdn.net/a497785609/article/details/24009031 在此基础上进行了修改: 1.添加闭包,将i传入内部 2.添加地图和卫星 ...
- treetable 前台 累计计算树值 提交后台
treetable 累计计算树值 效果图 html 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- ylbtech-Unitity-cs:计算阶乘值
ylbtech-Unitity-cs:计算阶乘值 1.A,效果图返回顶部 1.B,源代码返回顶部 1.B.1, using System; namespace Functions { public ...
- C#计算时间差值
/// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...
- 利用Python计算π的值,并显示进度条
利用Python计算π的值,并显示进度条 第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...
- excel计算时间差值
excel计算时间差值 2018/10/1 10:59:00 减去 2018/9/21 1:05:13 获取 多少天. 如1.2天.这种. ==
- 使用不同的方法计算TF-IDF值
摘要 这篇文章主要介绍了计算TF-IDF的不同方法实现,主要有三种方法: 用gensim库来计算tfidf值 用sklearn库来计算tfidf值 用python手动实现tfidf的计算 总结 之所以 ...
- C#实现像Git那样计算Hash值
从Git Tip of the Week: Objects一文中得知,Git是这样计算提交内容的Hash值的: Hash算法用的是SHA1 计算前,会在内容前面添加"blob 内容长度\0& ...
随机推荐
- mysql 5.7新特新 操作json 数组
; UPDATE EDI.edi_history SET response_summary = JSON_REPLACE(response_summary, ; 对于json数组,使用$[*] 然后 ...
- net send 换行和发送广播
net send ip message 要换行的时候按ctrl+t.最后按enter 或 ctrl + m 发出 如果是批处理里面要用: 在命令行下使用:echo ^T > a.txt,注意这里 ...
- 机器学习入门-DBSCAN聚类算法
DBSCAN 聚类算法又称为密度聚类,是一种不断发张下线而不断扩张的算法,主要的参数是半径r和k值 DBSCAN的几个概念: 核心对象:某个点的密度达到算法设定的阈值则其为核心点,核心点的意思就是一个 ...
- OpenSL ES 查询设备支持的SL Profiles
opensl es 提供了三种类型:分别是 SL_PROFILES_PHONE(手机):SL_PROFILES_MUSIC(音乐); SL_PROFILES_GAME (游戏). 如果你使用的手机的开 ...
- python引用,浅复制,深复制
引用:可以按照指针理解 copy:只复制父元素,所以如果一个列表嵌套了列表,那么浅复制后原变量和复制后的变量还是引用相同的子元素,子元素修改后,两个变量还会对应改变. deepcopy:复制父元素和子 ...
- mysql创建定时器(event),查看定时器,打开定时器,设置定时器时间
由于项目需要创建定时器(evevt),所以就百度了一下,发现基本都是来源于一个模板,有些功能还不全,现在自己总结一下. 注:mysql版本是从5.1开始才支持event的.如果你的版本低于5.1就先升 ...
- JUC学习记录
先附上学习的博客地址:http://blog.csdn.net/cx8122389/article/details/70049425, 具体见该博客 Java JUC 简介 在Java 5.0 提供了 ...
- X86汇编概要
来自:https://www.cnblogs.com/jiftle/p/8453106.html 本文翻译自:http://www.cs.virginia.edu/~evans/cs216/guide ...
- unity WWW加载进度条
using UnityEngine; using System.Collections; public class testProgress : MonoBehaviour { void Start ...
- java内存溢出的原因
前几天 ,面试被问到这个, 我只说了个死循环,所以上网查了下 ,下面给个总结: 内存溢出就是系统可以提供给Java虚拟机的内存不足导致的,主要分为以下几种情况: 1.要加载的数据量过大,比如加载一个很 ...