python 英语阅读标注

由于英语课的的每周1000词阅读任务硬性要求标记100个生词并进行尾注,每周都要手动查询并抄写一个个生词的意思,费时费力,索性写个脚本简化一下流程,把更多时间用在阅读本身上。不过由于python-docx功能有限以及个人词库系统尚未建立起来,就实现的比较简单了。

目前实现功能:需要在docx文档中手动标记生词(下划线 and 加粗)(一方面是标记生词,一方面也使其在openxml结构上在段落内部独立开来)脚本通过python-docx库遍历获取带标记的词,标注序号并在文档尾部添加翻译

吐槽:python-docx的文档操作一言难尽,这库是好久没人维护更新了吗,只有顺序添加内容,几乎没有插入和移动操作,最精细的操作只达到段落插入,有insert_paragraph_before却没有insert_run_before。。。最后只能使用add_text插入内容,但这样就不能对单独插入的内容设置格式了。有机会还是要了解下win32com操作docx的方式

核心实现如下(省略翻译api以及filename传参)

有关python-docx与有道智云api的内容下次再放好了

import docx
doc_file=docx.Document(file)
i=1
for para in doc_file.paragraphs:
    for run in para.runs:
        if run.bold==True and run.underline==True:
                trans=translate(run.text.strip())
                doc_file.add_paragraph(text='(%s)%s'%(i,trans))
                new_t=run.add_text('(%s)'%i)
                i+=1
doc_file.save('out.docx')

(future) 英语文本生词标注系统:

  1. 前置:个人词库系统or使用现成词频库替代
  2. 前置:单词查询系统(本地词典or网络api接口)
  3. 流程:对输入文本(字幕、文章)进行分词
  4. 流程:对单词进行词形还原(Lemmatize) 参考
  5. 流程:遍历比对词库找出生词并调用单词查询系统后生成标记后文本
  6. 流程:将查询的生词加入

链接:知乎话题    corrsin编程教室:字幕处理

发表评论

电子邮件地址不会被公开。 必填项已用*标注