统计文章词频(python实现)

统计出文章重复词语是进行文本分析的重要一步,从词频能够概要的分析文章内容。

本文将讲述如何用python3.6版本实现英文文章词频的统计,通过本文也可以对python字典的操作有一定的认识。

实现思路:1.输入文章 

      2.建立用于词频计算的空字典  

    3.对文本的每一行计算词频 

                    4.从字典中获取数据对到列表中

    5.对列表中的数据交换位置,并排序

    6.输出结果

注意事项:1.该代码只能实现英文文章的词频统计,因为中文文章分词还与其语意有关,需要用到中文分词技术

    2.网上下来的英文文章可能有一些不是utf-8编码,并且文章中有一些字符包含一些格式符可能或导致解码错误 (UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence)

代码实现如下:

from string import punctuation

#对文本的每一行计算词频的函数
def processLine(line,wordCounts):
    #用空格替换标点符号
    line=replacePunctuations(line)
    words = line.split()
    for word in words:
        if word in wordCounts:
            wordCounts[word]+=1
        else:
            wordCounts[word]=1

def replacePunctuations(line):
    for ch in line :
        #这里直接用了string的标点符号库。将标点符号替换成空格
        if ch in punctuation:
            line=line.replace(ch," ")
        return line

def main():
    infile=open("englishi.txt",'r')
    count=10
    words=[]
    data=[]

    # 建立用于计算词频的空字典
    wordCounts={}
    for line in infile:
        processLine(line.lower(), wordCounts)#这里line.lower()的作用是将大写替换成小写,方便统计词频
    #从字典中获取数据对
    pairs = list(wordCounts.items())
    #列表中的数据对交换位置,数据对排序
    items = [[x,y]for (y,x)in pairs]
    items.sort()
    #因为sort()函数是从小到大排列,所以range是从最后一项开始取
    for i in range(len(items) - 1, len(items) - count - 1, -1):
        print(items[i][1] + "\t" + str(items[i][0]))
        data.append(items[i][0])
        words.append(items[i][1])

    infile.close()

if __name__ == '__main__':
    main()






  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值