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)

参考

 

posted @ 2019-10-24 14:08  熊猫blue  阅读(2078)  评论(0编辑  收藏  举报