首页 > 代码库 > 数据分析:从歌词了解歌手

数据分析:从歌词了解歌手

结巴(jieba)是国人开发的一款插件,可以对中文进行分词,根据分词粒度的粗细,可以获取一些意想不到的信息

开源地址:http://www.oschina.net/p/jieba/

下面实例分析,从歌词文本获取歌手的高频词汇,侧面了解歌手表达的主题

#coding=utf-8
import os
from collections import Counter
import jieba

#同一首歌中出现多次的词,只能算作一次
all_words = []    #用词列表
L = os.listdir(rC:\Users\HP\Desktop\lyrics)
print L   #[‘\xb3\xc9\xb6\xbc.txt‘, ‘\xb9\xc4\xc2\xa5.txt‘....]
for filename in os.listdir(rC:\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‘区别

 

数据分析:从歌词了解歌手