码迷,mamicode.com
首页 > 其他好文 > 详细

词频统计

时间:2015-12-06 22:38:22      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

 

  1. import turtle
  2.  
  3. ##全局变量##
  4. #词频排列显示个数
  5. count 10
  6. #单词频率数组-作为y轴数据
  7. data []
  8. #单词数组-作为x轴数据
  9. words []
  10. #y轴显示放大倍数-可以根据词频数量进行调节
  11. yScale 6
  12. #x轴显示放大倍数-可以根据count数量进行调节
  13. xScale 30
  14.  
  15. ################# Turtle Start  ####################  
  16. #从点(x1,y1)到(x2,y2)绘制线段
  17. def drawLine(t, x1, y1, x2, y2):
  18.     t.penup()
  19.     t.goto (x1, y1)
  20.     t.pendown()
  21.     t.goto (x2, y2)
  22.  
  23. # 在坐标(x,y)处写文字
  24. def drawText(t, x, y, text):
  25.     t.penup()
  26.     t.goto (x, y)
  27.     t.pendown()
  28.     t.write(text)
  29.  
  30. def drawGraph(t):
  31.     #绘制x/y轴线
  32.     drawLine (t, 003600)
  33.     drawLine (t, 030000)
  34.  
  35.     #x轴: 坐标及描述
  36.     for in range(count):
  37.         x=x+#向右移一位,为了不画在原点上
  38.         drawText(t, x*xScale-4-20, (words[x-1]))
  39.         drawText(t, x*xScale-4, data[x-1]*yScale+10, data[x-1])
  40.     drawBar(t)
  41.  
  42. #绘制一个柱体
  43. def drawRectangle(t, x, y):
  44.     x*xScale
  45.     y*yScale#放大倍数显示
  46.     drawLine(t, x-50, x-5, y)
  47.     drawLine(t, x-5, y, x+5, y)
  48.     drawLine(t, x+5, y, x+50)
  49.     drawLine(t, x+50, x-50)
  50.      
  51. #绘制多个柱体
  52. def drawBar(t):
  53.     for in range(count):
  54.         drawRectangle(t, i+1, data[i])    
  55. ################# Turtle End  ####################
  56.  
  57.          
  58. #对文本的每一行计算词频的函数
  59. def processLine(line, wordCounts):
  60.     #用空格替换标点符号
  61.     line replacePunctuations(line)
  62.     #从每一行获取每个词
  63.     words line.split() 
  64.     for word in words:
  65.         if word in wordCounts:
  66.             wordCounts[word] +1
  67.         else:
  68.             wordCounts[word] 1
  69.  
  70. #空格替换标点的函数
  71. def replacePunctuations(line):
  72.     for ch in line:
  73.         if ch in "~@#$%^&*()_-+=<>?/,.:;{}[]|\‘""":
  74.             line line.replace(ch, " ")
  75.     return line
  76.  
  77. def main():
  78.     #用户输入一个文件名
  79.     filename input("enter a filename:").strip()
  80.     infile open(filename, "r")
  81.      
  82.     #建立用于计算词频的空字典
  83.     wordCounts {}
  84.     for line in infile:
  85.         processLine(line.lower(), wordCounts)
  86.          
  87.     #从字典中获取数据对
  88.     pairs list(wordCounts.items())
  89.  
  90.     #列表中的数据对交换位置,数据对排序
  91.     items [[x,y]for (y,x)in pairs] 
  92.     items.sort() 
  93.  
  94.     #输出count个数词频结果
  95.     for in range(len(items)-1len(items)-count-1-1):
  96.         print(items[i][1]+"\t"+str(items[i][0]))
  97.         data.append(items[i][0])
  98.         words.append(items[i][1])
  99.          
  100.     infile.close()
  101.      
  102.     #根据词频结果绘制柱状图
  103.     turtle.title(‘词频结果柱状图‘)
  104.     turtle.setup(90075000)
  105.     turtle.Turtle()
  106.     t.hideturtle()
  107.     t.width(3)
  108.     drawGraph(t)
  109.          
  110. #调用main()函数
  111. if __name__ =‘__main__‘:
  112.     main()

 

词频统计

标签:

原文地址:http://www.cnblogs.com/sbbg/p/5024466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!