日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python词频统计代码_python统计词频

發布時間:2023/12/9 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python词频统计代码_python统计词频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、程序分析

(1)將文件讀入緩沖區(dst指文本文件存放路徑,設置成形參,也可以不設,具體到函數里設置)

def process_file(dst): # 讀文件到緩沖區try: # 打開文件

txt=open(dst,"r")

except IOErrorass:

print sreturnNonetry: # 讀文件到緩沖區

bvffer=txt.read()

except:

print"Read File Error!"

returnNone

txt.close()return bvffer

(2)設置緩沖區,將文本度數緩沖區,并對文本的特殊符號進行修改,使其更容易處理,并讀入字典。

def process_buffer(bvffer):ifbvffer:

word_freq={}

# 下面添加處理緩沖區 bvffer代碼,統計每個單詞的頻率,存放在字典word_freq

bvffer=bvffer.lower()for x in '~!@#$%^&*()_+/*-+\][':

bvffer=bvffer.replace(x, " ")

words=bvffer.strip().split()for word inwords:

word_freq[word]=word_freq.get(word,0)+1

return word_freq

(3)設置輸出函數,運用lambda函數對詞頻排序,并以“詞”——“頻”格式輸出

def output_result(word_freq):ifword_freq:

sorted_word_freq= sorted(word_freq.items(), key=lambda v: v[1], reverse=True)for item in sorted_word_freq[:10]: # 輸出 Top 10的單詞

print item

(4)封裝main函數,以便接下來的cProfile的性能評估

def main():

dst= "Gone_with_the_wind.txt"bvffer=process_file(dst)

word_freq=process_buffer(bvffer)

output_result(word_freq)if __name__ == "__main__":

import cProfile

import pstats

cProfile.run("main()", "result")

# 直接把分析結果打印到控制臺

p= pstats.Stats("result") # 創建Stats對象

p.strip_dirs().sort_stats("call").print_stats() # 按照調用的次數排序

p.strip_dirs().sort_stats("cumulative").print_stats() # 按執行時間次數排序

p.print_callers(0.5, "process_file") # 如果想知道有哪些函數調用了process_file,小數,表示前百分之幾的函數信息

p.print_callers(0.5, "process_buffer") # 如果想知道有哪些函數調用了process_buffer

p.print_callers(0.5, "output_result") # 如果想知道有哪些函數調用了output_res

二、代碼風格說明

縮進

使用4個空格進行縮進

def process_buffer(bvffer):ifbvffer:

word_freq= {}

行寬

每行代碼盡量不超過80個字符

本次編程最長一行代碼(算上下劃線和空格):78個字符

sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)

import語句

分行書寫import語句

import cProfile

import pstats

三、程序運行命令、運行結果截圖

詞頻統計結果截圖

四、性能分析結果及改進

執行次數最多:

執行時間最多:

四、性能分析結果及改進

綜合執行次數最多和時間最長,我們可以發現,字典中的get方法是所有話數里用的最多的,要想減少時間,我們可以從替換的符號入手,因為名著《飄》不是一個數學學術性的報告之類的,所以想@#¥%……&*這些之類的符號基本不可能在這本書里出現,所以在規范文本的過程中,我們可以減去對這些符號的替換修改。下面是兩次時間和調用次數的前后對比圖。

for x in '!%()_/-\][':

bvffer=bvffer.replace(x, " ")

前:

后:

由此可見快樂大約0.016秒左右。

五、可視化操作

下載gprof2dot.py將此一個PY(無需將一整個文件夾放入)放到詞頻統計的相同目錄,在graphviz官網下載zip文件,解壓,并將其bin目錄添加到系統的環境變量里。

1. 性能分析:python -m cProfile -o result -s cumulative word_freq.py Gone_with_the_wind.txt;分析結果保存到 result 文件;

2. 轉換為圖形;gprof2dot 將 result 轉換為 dot 格式;再由 graphvix 轉換為 png 圖形格式。

命令:python gprof2dot.py -f pstats result | dot -Tpng -o result.png注意:要通過cmd進去詞頻的py程序的目錄,在其中輸入代碼(必須保證已經有了result文件,不然無法找到目標文件)

最后結果分析如下:

總結

以上是生活随笔為你收集整理的python词频统计代码_python统计词频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。