整理经济学人词频表(词频分割过程)

从奶爸那里得经济学人的到6个词频统计txt文件,因为要导入单词软件,所以用python整理了一下。

三个高频词的txt,简单的做了去重合并之后。处理低频词,粗略一看,发现由于词频过低,单词表排列像是字典一样,经常是同样字母开头的词连续十来个。

于是想把相同词频的打乱一下顺序,这里记录一下打乱过程。

一开始的想法是:既然是按照a-z排列的,从199词频降到20词频。应该是180组a-z的单词。所以如果后一个单词比前一个单词首字母的ascii值小,说明到下一词频了。按照这个原理写成下面代码试一下:

temp_arr,num = [],0
for i in range(len(words)):
    temp_arr.append(words[i])
    if i==len(words)-1 or ord(words[i][0])>ord(words[i+1][0]): 
        num+=1
        print(num,len(temp_arr))
        temp_arr=[]
1844 34
1845 12
1846 15
1847 1
1848 14
[Finished in 0.8s]

得到1800多组是什么鬼啊?打印一下最后几组看看:

……'unlit', 'uptown', 'unobtainable', 'walkover']
1847 1
['virago']
1848 14
['utilitarianism', 'voguish'……

看来词频表并不绝对按照a-z的顺序,偶有前后位置移动。改成ord(words[i][0])>ord(words[i+1][0])+10:忽略10个以内的字母表错位,再试试:

277 4
278 194
279 215
280 2
281 3
282 217
283 221
284 221
285 2
286 220
287 4
288 250
289 258
290 276
[Finished in 0.5s]

还有一些两三个单词一组,再打印出来看看

270 3
['abattoir', 'agora', 'yorktown']
271 217
272 221
273 221
274 2
['addax', 'wunderkind']
275 220
276 4
['additionally', 'academe', 'accoutrements', 'yolk']
277 250
278 258
279 276
[Finished in 0.6s]

哦,原来是字母表边界问题。如果忽略边界问题,我们统计能得到多少组?

174 217
175 221
176 221
177 220
178 250
179 258
180 276
[Finished in 0.6s]

Perfect! 就是180。说明思路还是对的。剩下的就是边界问题处理一下就行了,继续往下写。

temp_arr,all_arr = [],[]
for i in range(len(words)):
    temp_arr.append(words[i])
    if i==len(words)-1 or ord(words[i][0])>ord(words[i+1][0])+10:
        if len(temp_arr)>5:
            all_arr.append(temp_arr)
            temp_arr=[]
        else:
            # 处理边界问题,单词重新分配到前面和后面一组里。
            arr = []
            for w in temp_arr:
                if ord(w[0])>ord('m'):
                    all_arr[-1].append(w)
                else:
                    arr.append(w)
            temp_arr = arr
# 输出结果
total,words = 0,[]
for arr in all_arr:
    total+=len(arr)
    random.shuffle(arr) # 乱序处理
    words+=arr
print(total)
print(len(words))
11890
11890
[Finished in 0.7s]

重整词频表完毕。

附上整理好的词频表(200+的高频表只做了去重处理,200-低频词按词频乱序处理 ),需要的可以下载。
链接: https://pan.baidu.com/s/1GQwE9_OG_mQ-E7Z1_Y1W_w 密码: fp7x

猜你喜欢

转载自blog.csdn.net/watfe/article/details/65635166