200个句子搞定3500个高考词汇,究竟有多少词?

起因

发现杨哥单词总是背单词表,容易忘,期末考试过后在网上发现了200句记3500个词汇的小册子,一看句子还不错,在很多相似的词编写在一个句子里,对照着看,如respectable,respectful,respect,以及effect,affect, make efforts,诸如此类。突然间很好奇,这些个句子真的是3500个词吗?于是想着分析一下。

分析方法

写程序显然不是我的选择。第一想法是用命令进行分析。

取出来所有英文

这个很简单,网上有处理好的。实际上网上处理好的下载时要钱,我是自己把200个中文剪切掉放到文后的。

对每行进行第1次预处理

通过.号,将索引1、2、3和文末的小.都去掉。
awk -F “.” '{print $2}‘
这一句能成立主要是句子中间没有小.

将所有行合并成一行

使用paste命令格式化打印,-d指定分隔符,-s表示合并成一行:
paste -d" " -s - < test.txt

替换掉文中的逗号

英语里最多的就是逗号,用sed替换成空格。
sed ‘s/,/ /g’ t2.txt >t3.txt
现在得到一个基本上全是空格的长字符串。可以进行单词输出了。

分出每个单词并逐行输出

cat cc1.txt |awk -F " " ‘{for(i=1;i<NF;i++) print $i}’
但是,输出的结果与自己想要的有些差异。有些单词没有分开,居然是连在一起的。实在无法理解。用vi进去也看不出来。用gedit,notepad,notepad++都看不出来异常。
在这里插入图片描述

问题排查

python查一行

改用python,将字符串复制到python中,仍看不出什么,但一split(),立即就发现了异常,原来还夹杂着其它字符。百度了一下,是网页中的空格。
在这里插入图片描述

python读全部文本

使用2行命令,f=open(“v4.txt”,“r”);
s=f.readlines()
这个是在交互环境下执行的,不算编程。然后简单起见,把S的所有内容复制到一个文本中。
在这里插入图片描述

替换掉异常文本

开始用sed替换,正常文本还好说,碰到反斜杠总是不容易得到正确结果,后来干脆换成gedit替换,哪个快用哪个。

结果

得到正常的文本串后,使用以下命令
==cat cc1.txt |awk -F " " ‘{for(i=1;i<NF;i++) print $i}’ ==
算了一下,全部字符为5966个。
使用sort排序,再用uniq计算以后,得到个2328单词。但是看开头,有些是文中的数字、时间,A,a算了2个,country,countries,countrys都在。就算2300单词吧。
在这里插入图片描述在这里插入图片描述

最终大致单词数2300

在这里插入图片描述

词组未计算在内

*实际上,这200个句子还有大量的词组,未统计进来,如第一句的bear in mind,with the help of, be ignorant of,按1个句子平均3个词组计算,也才600个词组,总计2900个词,离3500还是有距离。

不过不纠结,这200个句子仍然是好句子,值得反复诵读。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页