【搞事情】英文文档单词对比&自动翻译

problem

可能的背景知识:python3;c++;dos&bat;World;Excel;PDF;

  • 给定两个英文文档(约会大作战3PDF版&高中英语词汇Word版)
  • 求两文档共同出现的单词有哪些,并翻译后输出到ans.txt文档中
    这里写图片描述
    这里写图片描述
solution(格式统一化)

1、对于PDF,导出得到1.txt文档。然后用文本编辑器打开把字符1234567890~!@%^&*()_+-=[];',./{}|:"<>? 替换为空格都。
这里写图片描述

2、对于Word,用替换通配符的方法把非字母的字符都替换为空格,然后再把所有空格都换行符,导出到文本2.txt。
这里写图片描述
(因为替换有点乱,所以很多空行)
这里写图片描述
【按照统计次频的方法,新建一个Excel;;从外部txt获取数据;;在列B自动填充全为1;;然后插入透视数据表】就得到了词频的统计同时完成了重复合并;;;另存为3.txt;;;
这里写图片描述
这里写图片描述
删掉前后空余的没用的行;;大约3500的高中词汇就呈现出来了。

codes

1、操作流程

1.新建4.txt;
2.复制1.txt到期中;
3.然后加入`gwj1314521`一行;
4.然后复制3.txt到期中;
5.然后加入'gwj233'一行;

2、新建cpp处理

#include<iostream>
#include<algorithm>
#include<string>
#include<set>
using namespace std;
const int maxn = 11000;
set<string>a,b,c;
int main(){
    freopen("4.txt","r",stdin);
    freopen("out.txt","w",stdout);
    string t; int flag = 1;
    while(cin>>t){
        if(t == "gwj1314521")flag = 0;
        if(flag){
            a.insert(t);
        }else{
            b.insert(t);
        }
        if(t == "gwj233")break;
    }
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    //cout<<c.size()<<'
';
    set<string>::iterator it;
    for(it = c.begin(); it != c.end(); it++){
        cout<<"echo "<<(*it)<<'
';
        cout<<"(tdic "<<(*it)<<") >> ans.txt
";
        cout<<"echo . >> ans.txt"<<endl;
    }
    return 0;
}

3、cmd环境下运行pip install termdic 安装hzwer的终端查词(您也可以自己写,或者也可以用其他地方的API,修改上一步具体代码即可)

1.因为编码炸锅,所以安装后他的代码还要做一两处修改。
2.打开目录(这里是你termdic软件的安装目录,,,找不到的话终端运行一下报错了就位置了)C:DevelopmentPython36Libsite-packages	ermdic
3.打开termdic.py。在最上面加入"import io";在main中加入"sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')"
4.保存退出

这里写图片描述
4、修改4.txt后缀为bat,点击运行即可、
因为这里只提供解决方案,所以txt的编码有待优化。
这里写图片描述

5、最后数据
高中英语课本全部的词汇量大约是3600个
约会大作战13集的词汇量大约是21000个
他们有2000个相同重合的单词
这里写图片描述

参考资料

1、统计词频率
2、py3-UnicodeEncodeError
3、github-termidic
4、批处理脚本教程
5、word通配符

原文地址:https://www.cnblogs.com/gwj1314/p/9444639.html