jieba库对中文文本进行切割 python
jieba是中文文本用于分词的库,有3种模式:精确模式、全模式(所有可能的分割)、搜索引擎模式(在精确模式基础上再进行分割)
具体参考PYPI
# coding=utf-8 import jieba #txt = open(u"D:\data\ebook\红楼梦.txt","r").read() #,encoding='utf-8' txt = open("D:\\data\\ebook\\1.txt","r",encoding='utf-8').read() words = jieba.lcut_for_search(txt) # 使用搜索引擎模式对文本进行分词 counts = {} # 通过键值对的形式存储词语及其出现的次数 for word in words: print(word) if len(word) == 1: # 长度为1的词语不计算在内 continue else: counts[word] = counts.get(word, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1 items = list(counts.items())#将键值对转换成列表 items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序 for i in range(5): word, count = items[i] print("{0:<5}{1:>5}".format(word, count))
注:1.txt
王西风在吃大枣,林黛玉在看书,宝玉发呆呢。。。。。 王西风吃完大枣后被宝玉叫住问:”大枣好不好吃?“,西风苦涩地说:”不好吃,涩得很,你想吃吗?“ 宝玉说,”不好吃的话我就不吃了,算了。“,接着他去黛玉那里看了看黛玉正在看的书,觉得都是写伤感的东西,很不感兴趣。
得到的分词结果,统计次数的前5个答案如下,可以看出,这个中文文本分割只是简单分割,有一定的缺点:不能根据语义进行分割,文本的意思是大枣不好吃,它分割成了好吃,林黛玉和黛玉是一个人,它分割成了两个分词。
('西风', 3),
('大枣', 3),
('宝玉', 3),
('好吃', 2),
('林黛玉', 1)