利用jieba分词分析小说一

准备工作

  • 下载好需要分析的小说txt文件,这里我选择的是《龙族》的第一部。
  • 小说人物名字的txt文件。
  • 中文停用词txt文件。
  • 安装好jieba库。

正式开始

jieba.cut()完成分词后统计各人物的出场次数.

import jieba
import pickle
import jieba.analyse
names = {}
all_names = []
sentence = []#用来保存分词结果
text_path = '/Users/XH/Desktop/bishe/longzu.txt'
jieba.load_userdict('/Users/XH/Desktop/bishe/name.txt')
jieba.analyse.set_stop_words('/Users/XH/Desktop/bishe/stopwords.txt')

使用load_userdict()添加自定义词典,这里把人物名字加进去,再载入停用词,这样能使分词结果更加准确。

f = open(text_path,'r')
f1 = open('/Users/XH/Desktop/bishe/name.txt','r')

#读取各人物的名字
for line in f1.readlines():
    all_names.append(line.strip())
    
#进行分词
for line in f.readlines():#逐行读取文本
    seg_list = jieba.cut(line,cut_all=False)
    unique_list = []
    linenames.append([])
    for i in seg_list:
        if i not in STOPWORD:
            unique_list.append(i)
        if i in all_names:
            if names.get(i) is None:
            names[i] += 1
    sentence.append(unique_list)
    
print(names)

jieba.cut返回的是一个可迭代对象,用for循环遍历即可,经过这步操作,names[]里面就统计出了各人物出场的次数。
看看运行结果:

/Users/XH/Desktop/lianxi/venv/bin/python /Users/XH/Desktop/bishe/sada.py
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/8n/5s94235n4_jgw7tzm316c4n80000gp/T/jieba.cache
Loading model cost 0.971 seconds.
Prefix dict has been built succesfully.
{'路明非': 1787, '康斯坦丁': 7, '路鸣泽': 131, '古德里安': 225, '诺玛': 58, '楚子航': 170, '陈雯雯': 144, '诺诺': 606, '昂热': 17, '陈墨瞳': 33, '芬格尔': 328, '富山雅史': 41, '曼施坦因': 197, '恺撒': 457, '诺顿': 70, '苏茜': 15}

从这里可以很明显看出路明非是主角,出场次数远高于其他人,女一是诺诺,这与这本书的设定也相符合,说明分词结统计结果基本没问题。

然后利用jieba分词的jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())进行关键词的提取

  • sentence 为待提取的文本
  • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
  • withWeight 为是否一并返回关键词权重值,默认值为 False
  • allowPOS 仅包括指定词性的词,默认值为空,即不筛选
text = f.read()
tags = jieba.analyse.extract_tags(text, topK=20, withWeight=True)
print('关键词:')
for k, v in tags:
    print('关键词:{}   权重:{:.3f}'.format(k, v))
f.close()

运行结果:

关键词:
关键词:路明非   权重:0.272
关键词:诺诺   权重:0.088
关键词:恺撒   权重:0.062
关键词:芬格尔   权重:0.050
关键词:古德里安   权重:0.033
关键词:曼施坦因   权重:0.030
关键词:叶胜   权重:0.027
关键词:楚子航   权重:0.026
关键词:曼斯   权重:0.025
关键词:什么   权重:0.024
关键词:陈雯雯   权重:0.022
关键词:卡塞尔   权重:0.022
关键词:一个   权重:0.021
关键词:自己   权重:0.021
关键词:路鸣泽   权重:0.020
关键词:学院   权重:0.020
关键词:没有   权重:0.020
关键词:我们   权重:0.019
关键词:他们   权重:0.019
关键词:教授   权重:0.019

在这里可以看出主角路明非的权重很高。

你可能感兴趣的:(利用jieba分词分析小说一)