re + collections 2006-2016考研英语(一)词频统计

老是在说什么考研高频词汇,今天就让数据自己说说哪些是高频词汇。

原始数据 http://pan.baidu.com/s/1jHUFKHK

正则表达式

匹配一个字母以上的单词,过滤掉其他信息,如汉字,标点等。

\b[a-zA-Z][a-zA-Z]+\b

读取数据

用readlines按行读取与处理,用re的finall找到所有匹配的信息,返回一个列表。用join方法以空格作为分隔符把列表的全部元素合成字符串。每行的结果汇总到字符串new_data中。

f = open("English.txt", 'r')

new_data = ''
for line in f.readlines():
    pure_line = ' '.join(re.findall(r'\b[a-zA-Z][a-zA-Z]+\b', line))  # 匹配1个字母以上的单词,列表转为字符串
    new_data = new_data + ' ' + pure_line.lower()  # 全部小写,字符串合并

f.close()

排除

创建一个脏词列表,遍历列表,用replace方法排除这些大量出现且熟悉的单词。

dirty_words = ['and', 'or', 'but', 'still', 'yet', 'so', 'since', 'then', 'now',
               'before', 'after', 'next', 'as', 'which', 'than',
               'not', 'yes', 'no',
               'an', 'the',

               'here', 'there','that', 'this',
               'we', 'us', 'our', 'you', 'your', 'he', 'his', 'she', 'her', 'they','them', 'their', 'it', 'its',

               'am', 'are', 'is', 'was', 'were', 'be', 'being', 'been', 'can',
               'do', 'does', 'did', 'have', 'has', 'had',
               'go', 'goes', 'went', 'going', 'gone',

               'in', 'on', 'with', 'by', 'for', 'at', 'about', 'under', 'of', 'into', 'to', 'from',

               'will', 'should', 'shall', 'would',
               'where', 'when', 'who', 'what', 'how'
              ]

for word in dirty_words:
    new_data = new_data.replace(' '+word+' ', ' ')  # 排除脏词

词频统计

用split方法分割得到的字符串为列表,使用collections的Counter实现词频统计。

word_counter = collections.Counter(new_data.split())

最后一共统计出了6375个单词,其中出现过一次以上的有3248个,考虑到单词的不同形式和部分错词,实际上应该只有两千多个,这些应该能算是核心高频词汇了

出现一次以上的单词汇总 https://pan.baidu.com/s/1i5DxbKh

完整代码

import re
import collections

dirty_words = ['and', 'or', 'but', 'still', 'yet', 'so', 'since', 'then', 'now',
               'before', 'after', 'next', 'as', 'which', 'than',
               'not', 'yes', 'no',
               'an', 'the',

               'here', 'there','that', 'this',
               'we', 'us', 'our', 'you', 'your', 'he', 'his', 'she', 'her', 'they','them', 'their', 'it', 'its',

               'am', 'are', 'is', 'was', 'were', 'be', 'being', 'been', 'can',
               'do', 'does', 'did', 'have', 'has', 'had',
               'go', 'goes', 'went', 'going', 'gone',

               'in', 'on', 'with', 'by', 'for', 'at', 'about', 'under', 'of', 'into', 'to', 'from',

               'will', 'should', 'shall', 'would',
               'where', 'when', 'who', 'what', 'how'
              ]

f = open("English.txt", 'r')

new_data = ''
for line in f.readlines():
    pure_line = ' '.join(re.findall(r'\b[a-zA-Z][a-zA-Z]+\b', line))  # 匹配1个字母以上的单词,列表转为字符串
    new_data = new_data + ' ' + pure_line.lower()  # 全部小写,字符串合并


f.close()

for word in dirty_words:
    new_data = new_data.replace(' '+word+' ', ' ')

word_counter = collections.Counter(new_data.split())
print(word_counter)

你可能感兴趣的:(re + collections 2006-2016考研英语(一)词频统计)