字典实例:统计词频
来源:互联网 发布:ubuntu删除文件夹加 编辑:程序博客网 时间:2024/05/20 09:45
import turtle##全局变量###词频排列显示个数count = 10#单词频率数组-作为y轴数据data = []#单词数组-作为x轴数据words = []#y轴显示放大倍数-可以根据词频数量进行调节yScale = 6#x轴显示放大倍数-可以根据count数量进行调节xScale = 30################# Turtle Start #################### #从点(x1,y1)到(x2,y2)绘制线段def drawLine(t, x1, y1, x2, y2): t.penup() t.goto (x1, y1) t.pendown() t.goto (x2, y2)# 在坐标(x,y)处写文字def drawText(t, x, y, text): t.penup() t.goto (x, y) t.pendown() t.write(text)def drawGraph(t): #绘制x/y轴线 drawLine (t, 0, 0, 360, 0) drawLine (t, 0, 300, 0, 0) #x轴: 坐标及描述 for x in range(count): x=x+1 #向右移一位,为了不画在原点上 drawText(t, x*xScale-4, -20, (words[x-1])) drawText(t, x*xScale-4, data[x-1]*yScale+10, data[x-1]) drawBar(t)#绘制一个柱体def drawRectangle(t, x, y): x = x*xScale y = y*yScale#放大倍数显示 drawLine(t, x-5, 0, x-5, y) drawLine(t, x-5, y, x+5, y) drawLine(t, x+5, y, x+5, 0) drawLine(t, x+5, 0, x-5, 0)#绘制多个柱体def drawBar(t): for i in range(count): drawRectangle(t, i+1, data[i]) ################# Turtle End #####################对文本的每一行计算词频的函数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: if ch in "~@#$%^&*()_-+=<>?/,.:;{}[]|\'""": line = line.replace(ch, " ") return linedef main(): #用户输入一个文件名 filename = input("enter a filename:").strip() infile = open(filename, "r") #建立用于计算词频的空字典 wordCounts = {} for line in infile: processLine(line.lower(), wordCounts) #从字典中获取数据对 pairs = list(wordCounts.items()) #列表中的数据对交换位置,数据对排序 items = [[x,y]for (y,x)in pairs] items.sort() #输出count个数词频结果 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() #根据词频结果绘制柱状图 turtle.title('词频结果柱状图') turtle.setup(900, 750, 0, 0) t = turtle.Turtle() t.hideturtle() t.width(3) drawGraph(t)#调用main()函数main()
列表中数据对交换位置:
示例如下:
>>>passwd={"China":"BigCountry","Korean":"SmallCountry","France":"MediumCountry"}>>> pairs=list(passwd.items())>>>items = [[x,y] for (y,x) in pairs]>>>print(items)
运行结果:
[['BigCountry', 'China'], ['SmallCountry', 'Korean'], ['MediumCountry', 'France']]
阅读全文
0 0
- 字典实例:统计词频
- 词频统计:字典树+dfs
- Trie树词频统计实例
- 【Python基础】1.2.1 字典统计词频
- IKanalyzer分词实例并统计词频
- mapreduce编程实例(1)-统计词频
- mapreduce编程实例(1)-统计词频
- 中文分词与词频统计实例
- 【java】统计文本文件中词频,以字典序排序
- 字典树应用——词频统计 (C++实现)
- Python字典使用--词频统计的GUI实现
- Python起步之字典案例(词频统计)
- 词频统计
- 词频统计
- 词频统计
- 词频统计
- 词频统计
- 词频统计
- SSL P2575 给出字符串
- java基础第八天 多态
- Console线配置交换机
- 【专题】LCA(最近公共祖先)
- 静态路由配置
- 字典实例:统计词频
- SSL P2576 平台
- 【NOIP2008PJ】立体图
- android的三种动画详解
- 多线程。
- PhotoShop CS5 /ps5 激活码(全部验证有效)+破解验证方式
- 音响设备开关顺序
- 数据回显(13)
- 使用Jekyll + GitHub Pages搭建个人博客