• 英文文本的词频统计


    英文文本由于不涉及分词问题,词频统计相对而言简单一些。以下是一个对英文文本进行词频统计的例子。其中的关键问题有:(1)英文中同时存在大小写,会干扰词频统计的结果,所以应将所有的英文字母转化为大写或小写;(2)英文单词可能被空格、标点或其他特殊符号分隔,因此应将这些特殊符号统一替换为空格;(3)根据空格对文本进行分隔;(4)用词典统计单词的出现次数;(5)由于词典不具有排序功能,可以将词典转化列表,再对统计结果进行排序。

    import string
    
    #文本词频统计
    f=open("story.txt","r")
    txt=f.read()
    #将所有字母转化为小写,排除大小写差异对词频统计的干扰
    txt.lower()
    #为统一单词的切分方式,将各种特殊字符和标点符号都替换为空格
    for ch in string.punctuation:
        txt=txt.replace(ch," ")
    #根据空格对文本进行切分
    words=txt.split()
    #创建一个空词典,用于存放统计结果
    result={}
    for word in words:
        result[word]=result.get(word,0)+1
    #为便于排序,将词典转化为列表
    items=list(result.items())
    #根据单词的频数从高到低排序
    items.sort(key=lambda x:x[1],reverse=True)
    #输出全部
    print(items)
    #输出排序结果中位于前10位的单词
    for i in range(10):
        print(items[i])

    参考资料:嵩天.《全国计算机等级考试二级教程——Python语言程序设计》[M].北京:高等教育出版社,105-107.

  • 相关阅读:
    062 Unique Paths 不同路径
    061 Rotate List 旋转链表
    060 Permutation Sequence 排列序列
    059 Spiral Matrix II 旋转打印矩阵 II
    058 Length of Last Word 最后一个单词的长度
    057 Insert Interval 插入区间
    bzoj3527: [Zjoi2014]力
    bzoj2194: 快速傅立叶之二
    bzoj2820: YY的GCD
    bzoj2005: [Noi2010]能量采集
  • 原文地址:https://www.cnblogs.com/pybig/p/9902027.html
Copyright © 2020-2023  润新知