单词统计、翻译、生成doc

上课无聊,手机打开《社交网站的数据挖掘与分析》看着看着,里面刚开始介绍着一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值