Python批量翻译英语单词

用途:
对批量的英语文本,生成英语-汉语翻译的单词本,提供Excel下载

本代码实现:

  1. 提供一个英文文章URL,自动下载网页;
  2. 实现网页中所有英语单词的翻译;
  3. 下载翻译结果的Excel

涉及技术:

  1. pandas的读取csv、多数据merge、输出Excel
  2. requests库下载HTML网页
  3. BeautifulSoup解析HTML网页
  4. Python正则表达式实现英文分词

1. 读取英语-汉语翻译词典文件

词典文件来自:https://github.com/skywind3000/ECDICT
使用步骤:

  1. 下载代码打包:https://github.com/skywind3000/ECDICT/archive/master.zip
  2. 解压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)

后续升级:

  1. 可以提供txt/excel/word/pdf的批量输入,生成单词本;
  2. 可以做成网页、微信小程序的形式,在线访问和使用
  3. 用户可以标记或上传“已经认识的词语”,每次过滤掉

38. Python批量翻译英语单词相关推荐

  1. Python批量翻译英语单词(三十七)

    用途: 对批量的英语文本,生成英语-汉语翻译的单词本,提供Excel下载 本代码实现: 提供一个英文文章URL,自动下载网页: 实现网页中所有英语单词的翻译: 下载翻译结果的Excel 涉及技术: p ...

  2. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  3. python批量翻译excel表格中的英文

    python批量翻译excel表格中的英文 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但 ...

  4. python需要的英语单词怎么写_如何删除Python中的非英语单词?

    我正在用Python做一个情感分析项目(使用自然语言处理).我已经从twitter收集了数据,并将其保存为CSV文件.该文件包含tweets,其中大部分是关于加密货币的.我清理了数据,但在使用分类算法 ...

  5. Python 批量翻译图片 附详细代码

    环境:Python3.7 目录 概念解释 有道智云 API 调用接口的代码 实现批量处理 概念解释 图片翻译:基于文字识别与文本翻译技术,结合组段和渲染技术,满足用户翻译图片文字的需求,提升输入效率. ...

  6. 如何批量翻译英语文章

    如何翻译英语文章?内容翻译处理的不仅仅是英语文章的翻译,也有德文翻译.日文翻译.泰文翻译.多语言之间的相互翻译能让我们覆盖更多的受众.除了网站建设,在日常生活工作中,通过内容翻译处理工具我们也可以对本 ...

  7. 用python制作一个英语单词听写器

    ​ 由于最近忙于备考六级,所以对于单词这块一直在记,但是市面上存在着许许多多英语单词听写的软件,比如某词斩等,然后遍突发奇想,为什么自己不能用python自己写一个简单的英语单词听写器呢? ​ 说干就 ...

  8. python英语词汇读音_40行Python代码区分英语单词和汉语拼音

    前天在一个群里有人问:利用一些英语语料,如何训练一个模型来识别出测试语句中的汉语拼音.我的第一反应想到了语言模型中的拼写纠错模型,但是纠错模型应该更复杂一些,需要实现的功能也多,比如英语单词拼错之后, ...

  9. 批量翻译英语关键词到其它小语种

    方法一,使用Selenium模拟Google翻译自动翻译关键词 1.使用selenium模拟打开Google翻译 from selenium import webdriver import timed ...

  10. python必背英语单词的手机软件_有哪些适合背英语单词的手机app?

    咳咳咳 作为一名数学老师,背英语比我让我写一百道题都痛苦,哭唧唧QAQ --有什么用呢,还不是要背,还不是要考研(因为真的怕被淘汰啊啊啊啊) 下面来说说一下我的背英语单词的艰难路程,刚开始我用的是百词 ...

最新文章

  1. VS.NET中的生成解决方案和重新生成解决方案有什么区别?
  2. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之31---LBS基于BREW的位置服务...
  3. 九度 1531:货币面值(01背包)
  4. 搭建 LEGO EV3 的 PyCharm Python 开发环境
  5. Sublime Text3中文环境设置
  6. 案例三:执行 JavaScript 语句
  7. Anaconda多环境多版本python配置笔记
  8. Windows下Jenkins的详细安装及使用
  9. HDTV(1920x1080)码率和视频质量关系的研究 1 (前期准备)
  10. 基于跨模态预测的多模态情感分类
  11. 27. PHP 文件创建/写入
  12. 修改linux的文件权限命令 chmod
  13. python seaborn 散点图矩阵_初学pandas与seaborn(六)制作散点图矩阵,用python
  14. 升级在谷歌电子市场上传的应用
  15. 学术会议论文查重吗_会议论文集算不算期刊
  16. 通过IMSI判断运营商的方法
  17. 用python爬取考研词汇及其近反义词与例句
  18. TOM邮箱收件人、抄送人、密送人、群发单显有什么区别
  19. CANVAS LMS开源系统
  20. NotePad++针对一批数据批量添加双引号和逗号以及去除空格的处理技巧

热门文章

  1. EMC理论基础知识——电磁屏蔽
  2. EMC RS485接口EMC电路设计方案
  3. Chrome浏览器的翻译插件开发
  4. 倒立摆的实现 1.前期准备
  5. WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
  6. Linux简介,虚拟机,远程操作工具安装及基本使用
  7. JMH在性能测试中的使用
  8. iPhone XS Max A2101(D3XP X1048 MLB P1 D33P) 820-01225 苹果手机点位图
  9. 使用FileZilla删除乱码名称文件
  10. WinForm中 SplitContainer的使用