作为我的python入门的一个小实验之一,我早在六月份的时候就进行了md笔记的编写,没有发布在博客上,这次,它将作为我在博客的第一篇。
我们知道,生活中的一些文本是嘈杂的,它可能含有很多的噪声数据,所以我们需要对其进行数据清洗处理,拿到我们想要的数据,词频统计就是其中一个获取文本价值信息的一种方式。
在学习了Python的字典和文件处理后,我们就可以对这个例子进行一个具体的实现了。
我将写入两个例子对其进行展示,因为搬运的是我初学时的笔记,所以如有错误请评论指正~
一、Hamlet词频统计https://python123.io/resources/pye/hamlet.txt
以上为hamlet英文版文本的获取路径,下载完成后保存到工程路径下。
二、数据预处理像以上提到的,我们的文本中含有标点和字符的噪声数据,所以要进行数据的清洗,将文档全部处理为只有我们需要的字母类型(为方便 *** 作,用空格替换噪声数据,将文档全部转化为小写字母)
打开文件,进行读取,清洗数据,数据归档。
定义为函数处理
def getText(): txt = open("Hmlet.txt","r").read() txt = txt.lower() for ch in '!@#$%^&*()_/*-~': txt = txt.replace(ch," ") return txt三、数值统计
因为这里我们要找出出现次数最多的词组,所以要进行存储比较它们的出现次数,这里显然是一种映射的关系,所以我们采取字典的方式对数据进行存储。
具体使用到字典的get函数实现
hamlet = getText() words = hamlet.split() counts = {} for word in words: counts[word] = counts.get(word,0) + 1四、转换处理
到这一步,我们就将所有在文档中出现的词组和其对应个数存入字典counts中了,因为字典是无序的,所以我们采取对其进行转化列表,利用列表的有序性进行排序。
sort函数中,reverse默认为False(从小到大),这里我们将值设为True(从大到小)排序。这样就会生成一个我们需要的序列了。
items = list(counts.items()) items.sort(key= lambda x:x[1],reverse=True) for i in range(10): word, count = items[i] print("{0:<10}{1:>5}".format(word,count))输出结果:
以上为hamlet英文文档词频统计的实现。
欢迎大家留言讨论~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)