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")
df_dict.shape
df_dict.sample(10).head()

# 把word、translation之外的列扔掉
df_dict = df_dict[["word", "translation"]]
df_dict.head()

2. 下载网页,得到网页内容

import requests
# Pandas官方文档中的一个URL
url = "https://pandas.pydata.org/docs/user_guide/indexing.html"
html_cont = requests.get(url).text
html_cont[:100]

3. 提取HTML的正文内容
即:去除HTML标签,获取正文

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_cont)
html_text = soup.get_text()
html_text[:500]

4. 英文分词和数据清洗

# 分词
import re
word_list = re.split("""[ ,.\(\)/\n|\-:=\$\["']""",html_text)
word_list[:10]

# 读取停用词表,从网上复制的,位于当前目录下
with open("./datas/stop_words/stop_words.txt") as fin:
    stop_words=set(fin.read().split("\n"))
list(stop_words)[:10]

# 数据清洗
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:
        continue
    word_list_clean.append(word)
word_list_clean[:20]

5. 分词结果构造成一个DataFrame

df_words = pd.DataFrame({
    "word": word_list_clean
})
df_words.head()

# 统计词频
df_words = (
    df_words
    .groupby("word")["word"]
    .agg(count="size")
    .reset_index()
    .sort_values(by="count", ascending=False)
)
df_words.head(10)

6. 和单词词典实现merge

df_merge = pd.merge(
    left = df_dict,
    right = df_words,
    left_on = "word",
    right_on = "word"
)

7. 存入Excel

df_merge.to_excel("./38. batch_chinese_english.xlsx", index=False)

后续升级:

  • 可以提供txt/excel/word/pdf的批量输入,生成单词本;
  • 可以做成网页、微信小程序的形式,在线访问和使用
  • 用户可以标记或上传“已经认识的词语”,每次过滤掉
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值