结巴(jieba)是国人开发的一款插件,可以对中文进行分词,根据分词粒度的粗细,可以获取一些意想不到的信息
开源地址:http://www.oschina.net/p/jieba/
下面实例分析,从歌词文本获取歌手的高频词汇,侧面了解歌手表达的主题
#coding=utf-8 import os from collections import Counter import jieba #同一首歌中出现多次的词,只能算作一次 all_words = [] #用词列表 L = os.listdir(r‘C:\Users\HP\Desktop\lyrics‘) print L #[‘\xb3\xc9\xb6\xbc.txt‘, ‘\xb9\xc4\xc2\xa5.txt‘....] for filename in os.listdir(r‘C:\Users\HP\Desktop\lyrics‘): filename1 = filename.decode(‘gbk‘) print filename1 with open(‘C:/Users/HP/Desktop/lyrics/‘ + filename1) as f: lyrics = f.read() data = jieba.cut(lyrics) print type(data) all_words.extend(set(data)) #set(data)去除重复的词,得到这首歌的用词列表 count = Counter(all_words) #统计出现次数,以字典的键值对形式存储,元素作为key,其计数作为value。 result = sorted(count.items(), key=lambda x: x[1], reverse=True) #key=lambda x: x[1]在此表示用次数作为关键字 for word in result: print word[0], word[1]
输出:
源码分析:
1.os.listdir(r‘C:\Users\HP\Desktop\lyrics‘):获取指定目录下的文件名称
注:必须保证运行时在当前目录,即C:\Users\HP\Desktop\lyrics
2.open(‘C:/Users/HP/Desktop/lyrics/‘ + filename1):filename1需是能看懂的字符,不能是unicode或者其他非人类的字符
3.sorted(listname,key=lambda x: x[1]):key表示用列表元素的某个属性和函数进行作为关键字
4.‘C:/Users/HP/Desktop/lyrics/‘和‘C:\Users\HP\Desktop\lyrics‘区别
时间: 2024-10-28 01:09:33