上课无聊,手机打开《社交网站的数据挖掘与分析》看着看着,里面刚开始介绍着一个twitter的例子感觉很有。后来回去背单词的时候就突发奇想,我可以尝试尝试类似的,我可以把考研英语的单词和历年试题下载下来,然后通过考研单词和卷子的单词进行单词数统计并排序,然后再调用翻译的API翻译一下,导出doc,做一个自己的高频单词书,哈哈感觉挺6的。正好最近在学python,学学做做很棒啊。
按我的思路,首先,把考研单词读入python的字典类型变量里作为可以并初始value为0,卷子读入list类型变量里。然后遍历试卷的单词判断那个key里面是否存在value也就是是否是考研单词,是的加一,然后进行排序。之后调用有道词典的API,可惜每个每小时有次数使用限制,所以实验了一部分考研单词。然后pip了个docx的包参考实例代码把数据写进doc里面。
整体感觉很开心,虽然里面还不是很完善,例如:单词匹配是完全相同才算加一,没有计算进相似的或者衍生词,有个小想法,对单词匹配的时候按照权值,例如:abc各字母对应权值分别为 321,abcd->4321,然后顺序匹配,按照权值/总权值的大于一半或者更多的把相应单词算作同一个单词,不知道对不对,脑洞满想的。
-------记录记录
# -*- coding: UTF-8 -*-
__author__ = 'Intgrp'
import urllib # 网页操作模块,获取网页数据
import urllib2
import json
import operator
import re
from docx import Document
def YDTrans(cont):
t = ""
params = urllib.urlencode({'keyfrom':'ascaaffaf','key':'131397962','type': 'data','doctype':'json','version':'1.1','q':cont})
f = urllib2.urlopen("http://fanyi.youdao.com/openapi.do?%s" % params, timeout=5)
s=json.loads(f.read().decode('utf-8'))
strtmp=''
for i in s['translation']:
strtmp+=i+'; '
t += u'有道翻译:\n\t'+strtmp+'\n'
t += u'有道词典:\n\t'+u'英式发音:'+s['basic']['uk-phonetic']+u' 美式发音:'+s['basic']['us-phonetic']+'\n'
for i in s['basic']['explains']:
t += '\t'+i+'\n'
t += u'有道词典-网络释义:'
strtmp1=''
for i in s['web']:
for j in i['value']:
strtmp1+=j+'; '
t +='\n\t'+i['key']+'\n\t'+strtmp1
return t
def writer2doc(recordset):
print "wait"
document = Document()
document.add_heading(u'考研单词', 0)
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'word'
hdr_cells[1].text = 'mean'
hdr_cells[2].text = 'frequency'
for item in recordset:
row_cells = table.add_row().cells
row_cells[0].text = str(item[0][0])
row_cells[1].text = str(item[0][1])
row_cells[2].text = item[1]
document.add_page_break()
document.save('../data/demo.docx')
print "success!"
def load_word(filname):
#读取word.txt文件的所有单词并存到dict里面
f = open(filname,"r")
dict = {}
items = f.read().split()
for item in items:
dict[item] = 0
f.close()
return dict
def read_exam():
dict=load_word("../data/word_kaoyan.txt")#读取考研单词
#print "dict",len(dict)
f = open("../data/1980_2013.txt")#读取试卷
s = f.read()
#print "s",len(s)
reg = re.findall("[a-zA-Z]+",str.lower(s))
for i in reg:
if dict.has_key(i):
dict[i]=dict[i]+1
#对字典进行降序排序
result = sorted(dict.iteritems(), key=operator.itemgetter(1), reverse=True)
f.close()
return result
if __name__=="__main__":
con = read_exam()
content=[]
for i in con:
translate = YDTrans(i[0])
content += [(i,translate)]
print "第%s个已经完成"%len(content)
#print content
writer2doc(content)
文件保存地址:链接: http://pan.baidu.com/s/1slMLWiL 密码: 32j4