鲍勃迪伦是美国的一位伟大的诗人,一个伟大的曲作者,他颇具创造力的作品为美国文化甚 至整个世界的文化做出很多贡献。本文用 NLTK 提取鲍勃迪伦的歌词中的名词,将他的歌词 进行分词统计存储在一个哈希表中,并用 matplotlib 将出现词频率高的歌词进行可视化。
// An highlighted block
import nltk
import os
import matplotlib.pyplot as plt path = "/Users/python/Desktop/BTH004 算法分析/中方/code/pycode/bobdylan/txt" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
nouns = [] for file in files: #遍历文件夹 position = path+'/'+ file#print (position) with open(position, "r",encoding='utf-8') as f: #打开文件 lines = f.read() sentences = nltk.sent_tokenize(lines) #print("1") for sentence in sentences: #print("1") for word,pos in nltk.pos_tag(nltk.word_tokenize(str(sentence))):if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS'): #print(word)nouns.append(word)#print(nouns)
#统计词频
result = {}
nounsdict = {}
for key in nouns: if key in nounsdict: nounsdict[key] = nounsdict[key]+1 else:nounsdict[key] = 1 #print(type(dict))
del nounsdict['*']
del nounsdict['“']
del nounsdict['>']
del nounsdict['”']
del nounsdict['–']
del nounsdict['<']
nounsdict= sorted(nounsdict.items(), key=lambda asd:asd[1], reverse = True)
nounsdict = nounsdict[0:20] print(nounsdict)
keys = []
y = [] for i in range(len(nounsdict)): keys.append(nounsdict[i][0]) y.append(nounsdict[i][1])
x=range(len(keys)) plt.figure()
plt.bar(keys ,y)
icks(x,keys,rotation=45)
plt.xlabel("words")
plt.ylabel("frequency")
plt.title("the word’s frequency statistic of Bob Dylan song") plt.show()
在第一次的实验代码中,将得到结果按照词频排序,得到以下结果。此时我们发现,得到的 结果有很多冠词、介词等,我们需要对数据进行清洗。
于是我们重新编写代码,引入 python 的 nltk 自然语言处理包,将歌词中的名词提取出来。 进行词频统计,并存入哈希表。用 matplotlib 包将其可视化,我们得到了下面的结果。
鲍勃迪伦的音乐是他真诚表达人生观和态度的工具,他的歌词中大面积地出现爱,世界、心、 时间等词汇,歌颂着爱、孤独与自由。他的愤怒温柔而有力,他的歌词美好又平静。诺贝尔文学奖用行动证明,最震撼人心极具文学表现力和时代影响力的歌词一样是最伟大的诗歌、 最伟大的文学作品。
在实验的过程中,碰到了一些问题,比如:
关于 python 读文件的操作
解决方案: 使用了 python 下的 os 库
得到的数据多是助动词、介词、冠词,相对参考价值较小
解决方案: 对数据进行提取,改变分词策略,只提取歌词中的名词。
无法使用 nltk 下的 download()函数
解决方案: 可以存在一些代理服务器的问题,手动下载文件并放置在相对路径下,问题解决。
实验心得:
本次实验用了很多 python 的内置库,让我对于 python 的使用更加熟悉了。另外,不同的 库有着不同的功能,觉得很有意思。
哈希表可以提供快速的插入和查找操作,不论哈希表中有多少数据,都具有接近常量的操作 时间级,不仅速度快,而且实现也非常容易。
【娱乐向】如何统计 David Bowie 的歌词词频
.
使用 python 从 NLTK 中提取名词短语 .html.
bob_dylan_lyrics 鲍勃迪伦歌词集 .
本文发布于:2024-02-04 11:47:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170706461455279.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |