Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【python】英语单词文本处理

【python】英语单词文本处理

作者头像
Qomolangma
发布于 2024-07-30 04:27:24
发布于 2024-07-30 04:27:24
18500
代码可运行
举报
文章被收录于专栏:深度学习深度学习
运行总次数:0
代码可运行

前言

  缘起自懒得考小孩儿单词,最终效果如图:

  本文记录了英语单词文本处理过程,生成“试卷”

PS:单词docx文件来源于百度文库高校版(单词txt文本附文末)

一、环境

实验所需的库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import numpy as np
from PIL import Image, ImageDraw, ImageFont

终端指令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda create -n DL python==3.11
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda activate DL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda install numpy pillow

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install numpy pillow

二、实现过程

  大过年的,暂不对代码进行详细介绍,其进化过程如下:

Version 1 起源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re


with open('./word.txt', 'r', encoding='utf-8') as file:
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                continue
            if '[' not in line:  # 如果行中没有 [
                print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            print("单词:", word)
            print("音标:", pronunciation)
            print("中文:", meaning)

Version 2 list

  存储为列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re


words, pronunciations, meanings, modules = [], [], [], []
with open('./word.txt', 'r', encoding='utf-8') as file:
    current_module = ""
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                current_module = line.strip()
                # print(current_module)
                continue
            if '[' not in line:  # 如果行中没有 [
                # print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            # print("单词:", word)
            # print("音标:", pronunciation)
            # print("中文:", meaning)
            words.append(word)
            pronunciations.append(pronunciation)
            meanings.append(meaning)
            modules.append(current_module)

for i in range(len(words)):
    print(modules[i], words[i], pronunciations[i], meanings[i])

Version 3 array

  存储为array数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import numpy as np

words, pronunciations, meanings = np.array([]), np.array([]), np.array([])

with open('./word.txt', 'r', encoding='utf-8') as file:
    current_module = ""
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                current_module = line.strip()
                print(current_module)
                continue
            if '[' not in line:  # 如果行中没有 [
                print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            words = np.append(words, word)
            pronunciations = np.append(pronunciations, pronunciation)
            meanings = np.append(meanings, meaning)

for i in range(len(words)):
    print("单词:", words[i])
    print("音标:", pronunciations[i])
    print("中文:", meanings[i])

Version 4 结构化数组

  进化为结构化数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import numpy as np

# 定义结构化数组的数据类型
dt = np.dtype([('word', 'U50'), ('pronunciation', 'U50'), ('meaning', 'U50')])

# 创建空的结构化数组
data = np.array([], dtype=dt)

with open('./word.txt', 'r', encoding='utf-8') as file:
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                continue
            if '[' not in line:  # 如果行中没有 [
                # print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            new_data = np.array([(word, pronunciation, meaning)], dtype=dt)  # 创建包含当前单词数据的结构化数组
            data = np.append(data, new_data)  # 将当前单词数据添加到总的结构化数组中

for i in data:
    print(i)

Version 5 区分单元且打乱顺序

  区分单元且打乱顺序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import numpy as np

# 定义结构化数组的数据类型
dt = np.dtype([('module', 'U50'), ('word', 'U50'), ('pronunciation', 'U50'), ('meaning', 'U50')])

# 创建空的结构化数组
data = np.array([], dtype=dt)

with open('./word.txt', 'r', encoding='utf-8') as file:
    current_module = ""
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                current_module = line.strip()
                # print(current_module)
                continue
            if '[' not in line:  # 如果行中没有 [
                # print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            new_data = np.array([(current_module, word, pronunciation, meaning)], dtype=dt)  # 创建包含当前单词数据的结构化数组
            data = np.append(data, new_data)  # 将当前单词数据添加到总的结构化数组中


np.random.shuffle(data)
# 打印打乱顺序后的数组
print(data[0]['word'])
print(len(data))
for d in data:
    print(d)
for d in data:
    if d['module'] == 'Module 1':
        print(d)

Version 6 可视化

  可视化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import numpy as np
from PIL import Image, ImageDraw, ImageFont

# 定义结构化数组的数据类型
dt = np.dtype([('module', 'U50'), ('word', 'U50'), ('pronunciation', 'U50'), ('meaning', 'U50')])

# 创建空的结构化数组
data = np.array([], dtype=dt)

with open('./word.txt', 'r', encoding='utf-8') as file:
    current_module = ""
    for line in file:
        if re.match(r'^[A-Za-z*]', line):  # 使用正则表达式匹配以英文字母开头的行
            if 'Module' in line:
                current_module = line.strip()
                print(current_module)
                continue
            if '[' not in line:  # 如果行中没有 [
                print("无法解析的行:", line)  # 直接输出行的内容
                continue
            word, pro_chinese = line.strip().split('[')
            pronunciation, meaning = pro_chinese.strip().split(']')
            pronunciation = '[' + pronunciation + ']'  # 将括号加回去
            meaning = meaning.rstrip()  # 去掉末尾的换行符
            new_data = np.array([(current_module, word, pronunciation, meaning)], dtype=dt)  # 创建包含当前单词数据的结构化数组
            data = np.append(data, new_data)  # 将当前单词数据添加到总的结构化数组中

# 打印数组
print(data[0]['word'])
print(len(data))
for d in data:
    if d['module'] == 'Module 1':
        print(d)


np.random.shuffle(data)
# 打印打乱顺序后的数组
print(data)
# dt = np.dtype([('module', 'U50'), ('word', 'U50'), ('pronunciation', 'U50'), ('meaning', 'U50')])

problem_image = Image.new('RGB', (800, 1200), color='white')
draw = ImageDraw.Draw(problem_image)
# font = ImageFont.truetype("arial.ttf", 25)
c_font = ImageFont.truetype("STKAITI.TTF", 25)  # 华文楷体
e_font = ImageFont.truetype("times.ttf", 25)    # times new Roman

text_y = 100
draw.text((300, 20), 'English Problems', fill='blue', font=e_font)
for i in range(20):
    draw.text((50, text_y), str(i+1)+' '+data[i]['word'], fill='black', font=e_font)
    draw.text((350, text_y), str(i + 21) + ' ' + data[i+20]['meaning'], fill='black', font=c_font)
    text_y += 50

problem_image.save('en_problems_3.png')

# Generate a combined image of the answers
answer_image = Image.new('RGB', (800, 1200), color='white')
draw = ImageDraw.Draw(answer_image)


text_y = 100
draw.text((300, 20), 'English Problems', fill='blue', font=e_font)
for i in range(20):
    draw.text((50, text_y), str(i+1)+' '+data[i]['meaning'], fill='black', font=c_font)
    draw.text((450, text_y), str(i + 21) + ' ' + data[i+20]['word'], fill='black', font=e_font)
    text_y += 50

answer_image.save('en_answers_3.png')

问题:左侧前20英译汉,右侧汉译英:

答案:

三、txt文件

外研社小学英语五年级下册(三年级起点)单词表(带音标):

Module 1 still[stil]还,仍然 Programme’prəugræm节目 lady['leidi]女士,夫人 life[laif]生活 different['difrənt]不同的 ago[ə’gəu]以前 Interviewer['intɚvjuɚ]采访者 enough[i’nʌf]足够的 television['teliviiʒ(ə)n]电视机 *grandchildren’græn’tʃildrən(外)孙子(女) change[tʃendʒ]改变,变化 night[nait]夜晚,夜间 work[wɜ:k]工作;劳动;干活儿 field[fi:ld]田地 fire['faiə]火,炉火 orɔ:也不,也没 radio['reidiəu]收音机 telephone['telifəun]电话 couldn`t=could not不能 write[rait]写 hope[həup]希望

Module 2 learnt[lɜ:nt](learn的过去式)学习 taughttɔ:t教,讲授 language['læŋgwidʒ]语言 wroterəut写 dancer['dɑ:nsə®] 舞蹈演员 foreign['fɔrən]外国的 studied’stʌdid学习 hard[hɑ:d]努力地

Module 3 hamburger['hæmbɜ:gə®]汉堡 English['iŋgliʃ]英国(式)的 breakfast['brekfəst]早餐,早饭 lunch[lʌntʃ]午餐,午饭 sandwich['sænwitʃ]三明治 fish and chips炸鱼加炸薯条 traditional[trə’diʃənl]传统的 dish[diʃ]食品;菜肴 very much['veri mʌtʃ]很,非常 gave[geiv](give的过去式)给 tonight[tə’nait]今夜,今晚

Module 4 library['laibrəri]图书馆 student['stju:dnt]学生 sentsent发送,寄 *CD 激光唱片,光盘 idea[ai’diə]主意,想法 put[put]放,安放 *shelf[ʃelf]架子 heavy['hevi]重的,沉的 dictionary['dikʃənri]词典;字典 card[kɑ:d]卡片 library card图书卡,借书证 ask[ɑ:sk]邀请 wrong[rɔ:ŋ]错误的 dear[diə®]哎呀 information[ˌinfə’meiʃn]信息 *e-book电子书 project['prɔdʒekt]项目 guide[gaid]介绍,指南,手册 film[film]电影 as well又,还,也 way[wei]方法,方式 on[ɔn]关于 *topic['tɔpik]话题

Module 5 light[lait]轻的 hard[hɑ:d]困难的,费力的 *broken['brəukən]坏的,破的 department store[di’pɑ:tmənt stɔ:]百货商店 pocket['pɔkit]口袋,兜 umbrella[ʌm’brelə]雨伞 sales assistant[seilz ə’sistənt]售货员,营业员 wheel[wi:l]轮子 easy['i:zi]容易的,不费力的 take[teik]选择要,选择购买 too[tu:]太,过于 try[trai]试,尝试 lovely['lʌvli]美丽的,可爱的;令人愉快的

Module 6 moon[mu:n]月亮,月球 get[ɡet]到达 west[west]西,西部,西方;向西方 parent['peərənt]母亲;父亲;家长 stay[stei]停留 July[dʒu’lai]七月 south[sauθ]南,南部,南方;向南方 remember[ri’membə®]记得 June[dʒu:n]六月 east[i:st]东,东部,东方;向东方 best[best]最好的 north[nɔ:θ]北,北部,北方;向北方 rest[rest]休息 have a rest休息一下 rode[rəud](ride的过去式)骑

Module 7 evening['i:vniŋ]傍晚,晚上 late[leit]近日暮的;近深夜的;时间不早的 worker['wɜ:kə®]工人 factory['fæktri]制造厂;工厂 early['ɜ:li]早的 taxi['tæksi]出租车,计程车 quarter['kwɔ:tə®]一刻钟 to[tu,tə](距整点)差… worry['wʌri]焦虑,担心

Module 8 paper['peipə®]纸 Chinese[ˌtʃai’ni:z]中国人的 so[səʊ]如此,这样 word[wɜ:d]词,字 drewdru:画 cutkʌt剪,切,割 piece[pi:s]张,片,块 paint[peint](用颜料)绘画,着色 putput放,安放 stick[stik]小木棍,小木条 tied[taid](tie的过去式)扎上,系上 *string[striŋ]线,绳子

Module 9 laugh[lɑ:f]笑 worewɔ:®穿 letter['letə®]信,书信 theatre['θiətə]剧院 women’wimin女性,妇女 actor['æktə®]演员 toldtəuld口述,讲(故事等) joke[dʒəuk]笑话 after['ɑ:ftə®]在……以后 showʃəu演出,表演 restaurant['restrɔnt]饭店,餐馆 readri:d读 at all[æt ɔ:l]一点都 in[in]在(将来一段时间)之后 another[ə’nʌðə®]另一个 history['histri]历史 ask[ɑ:sk]问,询问 question['kwestʃən]问题 forget[fə’get]忘,忘记 bring[briŋ]带来,拿来 soon[su:n]不久,很快

Module 10 when[wen]在什么时候 end[end]结束,终止 nervous['nɜ:vəs]紧张的,情绪不安的 all right[ɔ:l rait]没事,没问题 airport['eəpɔ:t]机场 ticket['tikit]票 passport['pɑ:spɔ:t]护照 safe[seif]安全的,平安的 pet[pet]宠物 speak[spi:k]说,讲 building['bildiŋ]建筑物 American[ə’merikən]美国的;美国人的;美国人 find out[faind aut]发现,弄清 more[mɔ:®]更多的(量),较多的(量)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
assign之python文本处理
1.python在处理文本时,在遇到列表中的两数相加时,需要先将其转化为float类型;若转换失败,多半是因为float在转换int与string或str时,字符串中不允许存在空格或者引号
py3study
2020/01/06
6500
Hadoop Streaming:用 Python 编写 Hadoop MapReduce 程序
随着数字媒体、物联网等发展的出现,每天产生的数字数据量呈指数级增长。这种情况给创建下一代工具和技术来存储和操作这些数据带来了挑战。这就是 Hadoop Streaming 的用武之地!下面给出的图表描绘了从 2013 年起全球每年产生的数据增长情况。 IDC 估计,到 2025 年,每年产生的数据量将达到 180 Zettabytes!
玖柒的小窝
2021/09/17
8500
Hadoop Streaming:用 Python 编写 Hadoop MapReduce 程序
Python 的mapreduce 单词统计
#!/usr/bin/env python import random 'abc..z' alphaStr = "".join(map(chr, range(97,123))) fp = open("word.txt", "w") maxIter = 100000 for i in range(maxIter): word = "" len =random.randint(1,5) for j in range(len): word + = alphaStr[rand
好派笔记
2021/11/03
8330
Python文本预处理:步骤、使用工具及示例
本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。
AI科技大本营
2019/05/06
1.8K0
Python文本预处理:步骤、使用工具及示例
Python实战之字符串和文本处理
「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波」
山河已无恙
2023/01/30
1.2K0
文本处理工具 - TextBlob
TextBlob是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。你可以在官方文档阅读TextBlog的所有特性。
种花家的奋斗兔
2020/11/12
3.2K0
两天研习Python基础(九) 文本处理
字符转换例子: https://stackoverflow.com/questions/555705/character-translation-using-python-like-the-tr-command
王诗翔呀
2020/07/06
1.1K0
Yolov8 源码解析(四十三)
ApacheCN_飞龙
2024/09/13
3640
深度学习实践:从零开始做电影评论文本情感分析
各方面都很好,但是总感觉哪里有点欠缺,后来想想,可能是作者做得太好了,把数据预处理都做得好好的,所以你才能“20行搞定情感分析”,这可能也是学习其他深度学习工具过程中要面临的一个问题,很多工具都提供了预处理好的数据,导致学习过程中只需要调用相关接口即可。不过在实际工作中,数据的预处理是非常重要的,从数据获取,到数据清洗,再到基本的数据处理,例如中文需要分词,英文需要Tokenize, Truecase或者Lowercase等,还有去停用词等等,在将数据“喂”给工具之前,有很多事情要做。这个部分,貌似是当前一些教程有所欠缺的地方,所以才有了这个“从零开始做”的想法和系列,准备弥补一下这个缺失,第一个例子就拿《Python深度学习》这本书第一个文本挖掘例子练手:电影评论文本分类-二分类问题,这也可以归结为一个情感分析任务。
AINLP
2019/10/10
1.6K0
深度学习实践:从零开始做电影评论文本情感分析
使用fasttext实现文本处理及文本预测
因为参加datafountain和CCF联合举办的大数据竞赛,第一次接触到文本预测。对比了一些模型,最终还是决定试一下fasttext。上手fasttext的过程可以说是很痛苦了,因为国内各大博客网站上很少有fasttext的博客。一方面是fasttext是FaceBook去年才开源的,用的人比较少,还有一方面是fasttext大部分参考资料都是英文的,我啃了好久英文文档,搭梯子去国外的论坛,最后也算是简单上手了吧。这两天差不多所有时间都花在这上面了,感触挺深。基于以上几点,我觉得还是写一篇博客吧,虽然只
机器学习AI算法工程
2018/03/15
8.8K0
使用fasttext实现文本处理及文本预测
常见python英语单词
1、print:打印/输出 2、coding:编码 3、syntax:语法 4、error:错误 5、invalid:无效 6、identifier:名称/标识符 7、character :字符
爱喝水的木子
2022/01/12
7840
tf25: 使用深度学习做阅读理解+完形填空
本文介绍了如何使用深度学习来做阅读理解+完形填空。首先介绍了TensorFlow的基本用法,然后详细讲解了如何使用TensorFlow来实现这个任务。主要包括两个部分:1. 使用深度学习来做阅读理解;2. 使用深度学习来做完形填空。最后还给出了一些实验结果和性能指标。
MachineLP
2018/01/09
2.3K0
tf25: 使用深度学习做阅读理解+完形填空
整理了25个Python文本处理案例,收藏!
Python 处理文本是一项非常常见的功能,本文整理了多种文本提取及NLP相关的案例,还是非常用心的
周萝卜
2022/02/10
2.1K0
《GPTs 实战:新春贺卡制作》
虽然已经合理的按照我的要求把文字加进去了,但是我们可以发现对于一张贺卡来说,这种图还是太过于复杂,内容过多。
晴天同学
2024/01/02
5661
Python带你看不一样的《青春有你2》小姐姐之评论内容可视化
详细介绍和用法可以去github看:https://github.com/fxsjy/jieba,这里不多做介绍,只介绍本次用到的
极简小课
2022/06/27
6260
Python带你看不一样的《青春有你2》小姐姐之评论内容可视化
识别引擎ocropy->ocropy2->OCRopus3总结
Transfer Learning for OCRopus Model Training on Early Printed Books
全栈程序员站长
2022/07/23
7800
识别引擎ocropy->ocropy2->OCRopus3总结
python .txt文件读取及数据处理总结
##1、处理包含数据的文件 最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误:
全栈程序员站长
2022/08/23
1.8K0
python .txt文件读取及数据处理总结
手把手教你用 Keras 实现 LSTM 预测英语单词发音
我近期在研究一个 NLP 项目,根据项目的要求,需要能够通过设计算法和模型处理单词的音节 (Syllables),并对那些没有在词典中出现的单词找到其在词典中对应的押韵词(注:这类单词类似一些少见的专有名词或者通过组合产生的新词,比如 Brexit,是用 Britain 和 exit 组合在一起创造出来表示英国脱欧的新词)。在这两个任务中,能够对单词的发音进行预测是非常有必要的。本文详细记录我解决该问题的过程,希望能够对初学者和具有一定经验的朋友有所帮助。本文代码实现均基于 Python 3 和 Keras 框架。现在让我们开始吧!
AI研习社
2018/08/06
1.2K0
手把手教你用 Keras 实现 LSTM 预测英语单词发音
5 | PyTorch加载真实数据:图像、表格、文本,one-hot
在实际的工作中,常见的机器学习处理的数据大概分成三种,一种是图像数据,图像数据通常是RGB三通道的彩色数据,图像上的每个像素由一个数值表示,这个其实比较容易处理;一种是文本数据,文本数据挖掘就是我们通常说的自然语言处理,文本数据首先是非结构化的,同时我们需要把文本数据表示成数值,这得花一些功夫;还有一种就是结构化的数据,结构化数据比如说一张excel数据表,每一列代表一个特征,具体到它的值可能是数值也可能是文本,可能是连续的也可能是非连续的,这种数据我们也需要进行转化,但是通常来说比自然语言好处理一点。
机器学习之禅
2022/07/11
6041
5 | PyTorch加载真实数据:图像、表格、文本,one-hot
Python使用Hadoop进行词频统计
今天,我们利用python编写一个MapReduce程序,程序的目的还是百年不变的计算单词个数,也就是WordCunt。
钱塘小甲子
2019/01/28
2.5K0
推荐阅读
相关推荐
assign之python文本处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档