38. Python批量翻译英语单词
Python批量翻译英语单词
用途:
对批量的英语文本,生成英语-汉语翻译的单词本,提供Excel下载
本代码实现:
- 提供一个英文文章URL,自动下载网页;
- 实现网页中所有英语单词的翻译;
- 下载翻译结果的Excel
涉及技术:
- pandas的读取csv、多数据merge、输出Excel
- requests库下载HTML网页
- BeautifulSoup解析HTML网页
- Python正则表达式实现英文分词
1. 读取英语-汉语翻译词典文件
词典文件来自:https://github.com/skywind3000/ECDICT
使用步骤:
- 下载代码打包:https://github.com/skywind3000/ECDICT/archive/master.zip
- 解压master.zip,然后解压其中的stardict.csv文件
import pandas as pd
# 注意:stardict.csv的地址需要替换成你自己的文件地址
df_dict = pd.read_csv("D:/tmp/ECDICT-master/stardict.csv")
d:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3063: DtypeWarning: Columns (11) have mixed types.Specify dtype option on import or set low_memory=False.interactivity=interactivity, compiler=compiler, result=result)
df_dict.shape
(3402564, 13)
df_dict.sample(10).head()
word | phonetic | definition | translation | pos | collins | oxford | tag | bnc | frq | exchange | detail | audio | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3370509 | WWDH | NaN | NaN | [网络] 淇楄壋 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
518014 | chauhtan (chotan) | NaN | NaN | 卓丹 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
389953 | breviarist | NaN | NaN | [网络] 短笛师 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
951231 | electric-vehicle | NaN | NaN | abbr. “EV”的变体;“electric car”的变体\n[网络] 电动汽车 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
91258 | Albionian | æl'biәniәn | NaN | [地质]阿尔比翁期 | NaN | NaN | NaN | NaN | 0.0 | 0.0 | NaN | NaN | NaN |
# 把word、translation之外的列扔掉
df_dict = df_dict[["word", "translation"]]
df_dict.head()
word | translation | |
---|---|---|
0 | 'a | na. 一\nn. 英文字母表的第一字母;【乐】A音\nart. 冠以不定冠词主要表示类别\... |
1 | 'A' game | [网络] 游戏;一个游戏;一局 |
2 | 'Abbāsīyah | [地名] 阿巴西耶 ( 埃 ) |
3 | 'Abd al Kūrī | [地名] 阿卜杜勒库里岛 ( 也门 ) |
4 | 'Abd al Mājid | [地名] 阿卜杜勒马吉德 ( 苏丹 ) |
2. 下载网页,得到网页内容
import requests
# Pandas官方文档中的一个URL
url = "https://pandas.pydata.org/docs/user_guide/indexing.html"
html_cont = requests.get(url).text
html_cont[:100]
'\n\n<!DOCTYPE html>\n\n<html xmlns="http://www.w3.org/1999/xhtml">\n <head>\n <meta charset="utf-8" />'
3. 提取HTML的正文内容
即:去除HTML标签,获取正文
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_cont)
html_text = soup.get_text()
html_text[:500]
'\n\n\nIndexing and selecting data — pandas 1.0.1 documentation\n\n\n\n\n\n\n\n\n\n\n\n\nMathJax.Hub.Config({"tex2jax": {"inlineMath": [["$", "$"], ["\\\\(", "\\\\)"]], "processEscapes": true, "ignoreClass": "document", "processClass": "math|output_area"}})\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nHome\n\n\nWhat\'s New in 1.0.0\n\n\nGetting started\n\n\nUser Guide\n\n\nAPI reference\n\n\nDevelopment\n\n\nRelease Notes\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nIO tools (text, CSV, HDF5, â\x80¦)\n\n\nIndexing and selecting data\n\n\nMultiIndex / advanced indexing\n\n\nMerge, join, a'
4. 英文分词和数据清洗
# 分词
import re
word_list = re.split("""[ ,.\(\)/\n|\-:=\$\["']""",html_text)
word_list[:10]
['', '', '', 'Indexing', 'and', 'selecting', 'data', '—', 'pandas', '1']
# 读取停用词表,从网上复制的,位于当前目录下
with open("./datas/stop_words/stop_words.txt") as fin:stop_words=set(fin.read().split("\n"))
list(stop_words)[:10]
['','itself','showed','throughout','pointed','n','against','name','none','ran']
# 数据清洗
word_list_clean = []
for word in word_list:word = str(word).lower().strip()# 过滤掉空词、数字、单个字符的词、停用词if not word or word.isnumeric() or len(word)<=1 or word in stop_words:continueword_list_clean.append(word)
word_list_clean[:20]
['indexing','selecting','data','pandas','documentation','mathjax','hub','config','tex2jax','inlinemath','\\\\','\\\\',']]','processescapes','true','ignoreclass','document','processclass','math','output_area']
5. 分词结果构造成一个DataFrame
df_words = pd.DataFrame({"word": word_list_clean
})
df_words.head()
word | |
---|---|
0 | indexing |
1 | selecting |
2 | data |
3 | pandas |
4 | documentation |
df_words.shape
(4915, 1)
# 统计词频
df_words = (df_words.groupby("word")["word"].agg(count="size").reset_index().sort_values(by="count", ascending=False)
)
df_words.head(10)
word | count | |
---|---|---|
620 | df | 161 |
659 | dtype | 87 |
1274 | true | 86 |
593 | dataframe | 80 |
1038 | pd | 75 |
917 | loc | 72 |
970 | nan | 72 |
721 | false | 58 |
914 | list | 58 |
835 | indexing | 53 |
6. 和单词词典实现merge
df_merge = pd.merge(left = df_dict,right = df_words,left_on = "word",right_on = "word"
)
df_merge.sample(10)
word | translation | count | |
---|---|---|---|
658 | team | n. 队, 组\nvt. 把马(牛)套在同一辆车上, 把...编成一组\nvi. 驾驶卡车, 协作 | 3 |
523 | providing | conj. 以...为条件, 假如 | 1 |
394 | lines | n. 台词 | 1 |
118 | columns | 塔器 | 49 |
136 | conforms | v. 遵守( conform的第三人称单数 ); 顺应; 相一致; 相符合 | 1 |
529 | python | n. 大蟒, 巨蟒\n[计] Python 程序设计语言;人生苦短,我用 Python | 26 |
185 | determine | v. 决定, 决心 | 1 |
285 | forward | a. 向前的, 早的, 迅速的, 在前的, 进步的\nvt. 促进...的生长, 转寄, 运... | 1 |
49 | arguments | n. 参数 | 3 |
564 | reported | a. 报告的;据报道的 | 1 |
df_merge.shape
(718, 3)
7. 存入Excel
df_merge.to_excel("./38. batch_chinese_english.xlsx", index=False)
后续升级:
- 可以提供txt/excel/word/pdf的批量输入,生成单词本;
- 可以做成网页、微信小程序的形式,在线访问和使用
- 用户可以标记或上传“已经认识的词语”,每次过滤掉
38. Python批量翻译英语单词相关推荐
- Python批量翻译英语单词(三十七)
用途: 对批量的英语文本,生成英语-汉语翻译的单词本,提供Excel下载 本代码实现: 提供一个英文文章URL,自动下载网页: 实现网页中所有英语单词的翻译: 下载翻译结果的Excel 涉及技术: p ...
- python 文本翻译 项目_如何用python批量翻译文本?
首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...
- python批量翻译excel表格中的英文
python批量翻译excel表格中的英文 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但 ...
- python需要的英语单词怎么写_如何删除Python中的非英语单词?
我正在用Python做一个情感分析项目(使用自然语言处理).我已经从twitter收集了数据,并将其保存为CSV文件.该文件包含tweets,其中大部分是关于加密货币的.我清理了数据,但在使用分类算法 ...
- Python 批量翻译图片 附详细代码
环境:Python3.7 目录 概念解释 有道智云 API 调用接口的代码 实现批量处理 概念解释 图片翻译:基于文字识别与文本翻译技术,结合组段和渲染技术,满足用户翻译图片文字的需求,提升输入效率. ...
- 如何批量翻译英语文章
如何翻译英语文章?内容翻译处理的不仅仅是英语文章的翻译,也有德文翻译.日文翻译.泰文翻译.多语言之间的相互翻译能让我们覆盖更多的受众.除了网站建设,在日常生活工作中,通过内容翻译处理工具我们也可以对本 ...
- 用python制作一个英语单词听写器
由于最近忙于备考六级,所以对于单词这块一直在记,但是市面上存在着许许多多英语单词听写的软件,比如某词斩等,然后遍突发奇想,为什么自己不能用python自己写一个简单的英语单词听写器呢? 说干就 ...
- python英语词汇读音_40行Python代码区分英语单词和汉语拼音
前天在一个群里有人问:利用一些英语语料,如何训练一个模型来识别出测试语句中的汉语拼音.我的第一反应想到了语言模型中的拼写纠错模型,但是纠错模型应该更复杂一些,需要实现的功能也多,比如英语单词拼错之后, ...
- 批量翻译英语关键词到其它小语种
方法一,使用Selenium模拟Google翻译自动翻译关键词 1.使用selenium模拟打开Google翻译 from selenium import webdriver import timed ...
- python必背英语单词的手机软件_有哪些适合背英语单词的手机app?
咳咳咳 作为一名数学老师,背英语比我让我写一百道题都痛苦,哭唧唧QAQ --有什么用呢,还不是要背,还不是要考研(因为真的怕被淘汰啊啊啊啊) 下面来说说一下我的背英语单词的艰难路程,刚开始我用的是百词 ...
最新文章
- VS.NET中的生成解决方案和重新生成解决方案有什么区别?
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之31---LBS基于BREW的位置服务...
- 九度 1531:货币面值(01背包)
- 搭建 LEGO EV3 的 PyCharm Python 开发环境
- Sublime Text3中文环境设置
- 案例三:执行 JavaScript 语句
- Anaconda多环境多版本python配置笔记
- Windows下Jenkins的详细安装及使用
- HDTV(1920x1080)码率和视频质量关系的研究 1 (前期准备)
- 基于跨模态预测的多模态情感分类
- 27. PHP 文件创建/写入
- 修改linux的文件权限命令 chmod
- python seaborn 散点图矩阵_初学pandas与seaborn(六)制作散点图矩阵,用python
- 升级在谷歌电子市场上传的应用
- 学术会议论文查重吗_会议论文集算不算期刊
- 通过IMSI判断运营商的方法
- 用python爬取考研词汇及其近反义词与例句
- TOM邮箱收件人、抄送人、密送人、群发单显有什么区别
- CANVAS LMS开源系统
- NotePad++针对一批数据批量添加双引号和逗号以及去除空格的处理技巧