最近在读一本神书,牛津大学出版的《Scientific Writing and Communication》,边阅读边检查书里面说的那些英文科学论文写作中经常出现的很俗的桥段,很多余的短语有没有出现在我正在写的科学论文中。检查的过程中发现书本第一章的内容非常有指导意义,只需要逐条搜索规则中出现的短语,删除或者替换即可。这样搜索替换了一阵后,感觉比较繁琐,寻思可以将规则收集起来,放在字典里,然后使用程序来全面检查论文内容。这样也可以帮到更多科研人员。花了一个晚上,将书中第一二章关于短语的规则搜集起来,制作了一个检查器。后面的章节更关注句子,段落和文章的结构,规则不容易建立,需要自然语言处理和深度学习训练。不过万事开头难,先迈出第一步,以后有时间慢慢填坑。
更新:书本前两章涵盖了第一到第六条原则, 建议删除冗余词,替换复杂和不准确的词。这些规则的实现收集在rule1to6_words.py中。最新版额外实现了位于第三章的第十条规则。这条规则判断一个语句是否头重脚轻,主语过长。为了判断主语的长度,程序使用了自然语言处理中的语法/依存分析。
更新:最新版本中加入了语法,单词拼写检查。
更新:加入对Latex文件的预处理。跳过方程,图片和表格,仅分析摘要,正文,图表描述等文字部分。LongGang Pang / proofreadgitlab.com
第一部分:简介
使用方法:
git clone https://gitlab.com/snowhitiger/proofread.git
cd proofread
python proofread.py path/*.tex
结果示例:
在默认情况下,proofread.py 仅对规则字典中要求删除或替换的词进行检查。
如果想要开启其他功能,可以在命令行添加选项。使用如下命令查看可用的选项,
python proofread.py --help
输出结果如下usage: proofread.py [-h] [--report_long_subjects] [--report_interruptions]
[--report_noun_clusters] [--check_grammars] [--brief]
f [f ...]
Proofread scientific papers to make it brief and simple
positional arguments:
f one file or a list of files for analysis
optional arguments:
-h, --help 显示帮助信息并退出
--report_long_subjects Principle 10: 避免过长主语,默认未开启
--report_interruptions Principle 11: 避免主语谓语距离过长,默认未开启
--report_noun_clusters Principle 18: 避免长串名词,默认未开启
--check_grammars 语法,拼写检查,默认未开启
示例,如果想对文件 example.tex 开启语法检查, 并报告过长的主语,使用
python proofread.py example.tex --report_long_subjects --check_grammars
请注意,语法检查速度比较慢,请谨慎开启。最新版本会对Latex文件自动分析,跳过方程,图,表格等与文字无关的内容。
替换字典:
这本书的本意是让我们在大脑中记住这些规则,潜移默化的改变我们的写作过程,而不是让我们写完之后修改。这里把搜集的字典文件放出来,大家可以先记在脑中,写作的过程中尽量避免。如果不想费力,或者不想按字典一条条检查自己学生写的初稿,就直接使用上面的 proofread.py 脚本来自动化搜索/建议修改过程。字典是一个 json 文件,第一个版本只有一些手动放进去的规则,
{"to_remove": ["actually",
"appear",
"absolutely",
"at all times",
"commonly",
"clearly",
"certainly",
"completely",
"much",
"usually",<