自写一个简单的中文分词脚本
-
前言
Python中有很多功能强大的模块,在一次实验中发现利用Python自带的collections模块即可完成对中文文本的分词,并且对词频进行统计。 -
collections模块简介
collections是Python内建的一个集合模块,提供了许多有用的集合类。
collection中的类
counter: 计数器,用于统计元素的数量。
orderDict:有序字典。
defaultdict:值带有默认类型的字典。
namedtuple:可命名元组,通过名字来访问元组元素。
deque :双向队列,队列头尾都可以放,也都可以取(与单向队列对比,单向队列只能一头放,另一头取)。 -
说明
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符
f = open(’/Users/michael/test.txt’, ‘r’)
-
代码简介
from collections import Counter word_lst = [] word_dict = {} #手动添加中文标点符号 exclude_str = ",。!?、()【】<>《》=:+-*—“”…" with open("C:\\Users\\10501\\Desktop\\file.txt","r") as fileIn ,open("C:\\Users\\10501\\Desktop\\file1.txt",'w') as fileOut: # 添加每一个字到列表中 for line in fileIn: for char in line: word_lst.append(char) # 用字典统计每个字出现的个数 for char in word_lst: if char not in exclude_str: if char.strip() not in word_dict: # strip去除各种空白 word_dict[char] = 1 else : word_dict[char] += 1 #使用Couner类统计字频 c = Counter(word_dict) #输出结果 print(c)
-
运行结果展示
可以看到,输出的内容都是以“字符{出现次数}”的键值对组成的,并且没有出现任何的标点符号,说明代码编写没有问题。
- 小结
如果不考虑运行时长与效率的话,上述的简单小程序足已完成对中文文本的分词与词频统计,但是如果对时长有更高的要求的话,可以将中文标点符