1. 程式人生 > >利用python實現簡單詞頻統計、構建詞雲

利用python實現簡單詞頻統計、構建詞雲

1、利用jieba分詞,排除停用詞stopword之後,對文章中的詞進行詞頻統計,並用matplotlib進行直方圖展示

# coding: utf-8
import codecs
import matplotlib.pyplot as plt
import jieba
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定預設字型
mpl.rcParams['axes.unicode_minus
'] = False # 解決儲存影象是負號'-'顯示為方塊的問題 plt.rcParams['font.sans-serif'] = ['SimHei'] stopword=[u'',u',',u'',u'(',u')',u'"',u':',u';',u'',u',',u'',u'',u'',u'',u'',u'',u'',u''] word = [] counter = {} with codecs.open('data.txt') as fr: for line in fr: line = line.strip() #print type(line)
if len(line) == 0: continue line = jieba.cut(line, cut_all = False) for w in line:#.decode('utf-8'): if ( w in stopword) or len(w)==1: continue if not w in word : word.append(w) if not w in counter: counter[w]
= 0 else: counter[w] += 1 counter_list = sorted(counter.items(), key=lambda x: x[1], reverse=True) print(counter_list[:50]) #for i,j in counter_list[:50]:print i label = list(map(lambda x: x[0], counter_list[:10])) value = list(map(lambda y: y[1], counter_list[:10])) plt.bar(range(len(value)), value, tick_label=label) plt.show()

注意:matplotlib展示中文需要進行相應設定

2、利用jieba分詞,利用collections統計詞頻,利用wordcloud生成詞雲,並定義了 詞頻背景,最後通過matplotlib展示,同樣需要設定字型

# coding: utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# 匯入擴充套件庫
import re # 正則表示式庫
import collections # 詞頻統計庫
import numpy as np # numpy資料處理庫
import jieba # 結巴分詞
import wordcloud # 詞雲展示庫
from PIL import Image # 影象處理庫
import matplotlib.pyplot as plt # 影象展示庫

# 讀取檔案
fn = open('data.txt') # 開啟檔案
string_data = fn.read() # 讀出整個檔案
fn.close() # 關閉檔案

# 文字預處理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') # 定義正則表示式匹配模式
string_data = re.sub(pattern, '', string_data) # 將符合模式的字元去除

# 文字分詞
seg_list_exact = jieba.cut(string_data, cut_all = False) # 精確模式分詞
object_list = []
remove_words = [u'', u'', u'', u'',u'', u'',u'自己',u'', u'隨著', u'對於', u'',u'',u'',u'',u'',u' ',u'',u'',u'',u'',
                u'通常',u'如果',u'我們',u'需要'] # 自定義去除詞庫

for word in seg_list_exact: # 迴圈讀出每個分詞
    if word not in remove_words: # 如果不在去除詞庫中
        object_list.append(word) # 分詞追加到列表

# 詞頻統計
word_counts = collections.Counter(object_list) # 對分詞做詞頻統計
word_counts_top10 = word_counts.most_common(10) # 獲取前10最高頻的詞
print (word_counts_top10) # 輸出檢查

# 詞頻展示
img = Image.open('2018.png') #開啟圖片
img_array = np.array(img) #將圖片裝換為陣列
#mask = np.array(Image.open('wordcloud.jpg')) # 定義詞頻背景
wc = wordcloud.WordCloud(
    font_path='C:/Windows/Fonts/simhei.ttf', # 設定字型格式
    #font_path='/usr/share/fonts/truetype/arphic/ukai.ttc', #  設定字型格式
    background_color='white',
    mask=img_array,
    width=1000,
    height=800,
    # max_words=200, # 最多顯示詞數
    # max_font_size=100 # 字型最大值
)

wc.generate_from_frequencies(word_counts) # 從字典生成詞雲
image_colors = wordcloud.ImageColorGenerator(img_array) # 從背景圖建立顏色方案
wc.recolor(color_func=image_colors) # 將詞雲顏色設定為背景圖方案
plt.imshow(wc) # 顯示詞雲
plt.axis('off') # 關閉座標軸
plt.show() # 顯示影象

相關推薦

利用python實現簡單詞頻統計構建

1、利用jieba分詞,排除停用詞stopword之後,對文章中的詞進行詞頻統計,並用matplotlib進行直方圖展示 # coding: utf-8 import codecs import matplotlib.pyplot as plt import jieba # import sys #

利用python實現簡單的socket服務端和客戶端

服務端: #!/usr/bin/python3 #python version 3.7 import socket so = socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.IPPROTO_TCP) address = ("127

利用python實現簡單的http和https伺服器

http伺服器程式碼: #!/usr/bin/python3 #python version 3.7 import sys from http import server from http.server import SimpleHTTPRequestHandler if sys.ar

機器學習學習筆記之一——用python實現簡單一元函式二元函式的梯度下降

  今天開始正正經經,好好的寫機器學習的筆記。   再一次從頭翻過來學機器學習,在有一些python和大學數學的基礎下,首先要搞的果然還是梯度下降,本篇記錄的是用jupyter完成的一次作業:python實現一維陣列和二維陣列的梯度下降,目的只在於熟悉梯度下降。 第一部分

利用Python實現簡單的相似圖片搜尋

 【搞了好幾天,終於把程式復原除錯通過,特此在這裡把技術文件貼出來,尤其是環境配置的說明,供大家分享。】   寫作本文的目是發現建立網站的時候,很多使用者用相同的頭像,這導致識別度降低,為了防止使用者上傳相同的圖片作為自己的頭像以及上傳不當的影象檔案,作者研究了這個

Python實現一個詞頻統計(+圖)

dcloud top 復制 width ros tor 數據 microsoft lis 第一步:首先需要安裝工具python 第二步:在電腦cmd後臺下載安裝如下工具: (有一些是安裝好python電腦自帶有哦) 有一些會出現一種情況就是安裝不了詞雲展

Python實現生成一個單詞的圓形

效果 實現 開啟IDLE,新建檔案singleWord.py import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud text = "Love" x, y = np.o

Python基礎程式設計:利用列表實現簡單的先進後出先進先出

i = []#定義空白列表 def push(a):#定義增加函式 i.append(a) def view():#定義列印函式 print(i) while True: print('請輸入你的操作:') print('push:u')#增加元素 print

php如何利用python實現對pdf文件的操作(讀寫合並分割)

PHP實現pdf文件截取 PHP調用python腳本 php如何利用python實現對pdf文件的操作 需求:在PHP裏實現了把8.pdf的前4頁pdf文件截取出來生成新的pdf文件。 詳細步驟如下: 1. 安裝python第三方庫PyPDF2 前提:python必須是3.x版本以上,必要時需要升級p

利用 libevent 實現簡單 http client GETPOST

/* Base on code from: http://archives.seul.org/libevent/users/Sep-2010/msg00050.html */ #include "MITLogModule.h" #include <errno.h

利用Python實現ARCGIS中柵格計算器的簡單功能

1.加法操作 import arcpy from arcpy import env env.workspace = "E:\\work\\cppservice\\RasterCalc" #工作空

Python實現簡單的三次登錄

退出 初始 class for highlight 執行 count isa bre Python實現簡單的三次登錄 方法一: count = 1 # 定義初始值為1 while count <= 3:

python實現簡單圖片爬蟲並保存

.com 貪婪模式 web頁面 logs urn 並不是 python 保存 light 先po代碼 #coding=utf-8 import urllib.request #3之前的版本直接用urllib即可,下同 #該模塊提供了web頁面讀取數據的接口,使得我們可以

python實現簡單的循環購物車小功能

iphone6s opp lose pre 選擇 小功能 alt else ret python實現簡單的循環購物車小功能 # -*- coding: utf-8 -*- __author__ = ‘hujianli‘ shopping = [ ("iphon

Python 實現簡單圖片驗證碼登錄

需要 spa tps dem 圖片背景 round alt word exc 朋友說公司要在測試環境做接口測試,登錄時需要傳入正確的圖片的驗證碼,本著懶省事的原則,推薦他把測試環境的圖片驗證碼寫死,我們公司也是這麽做的^_^。勸說無果/(ㄒoㄒ)/~~,只能通過 OCR 技

python爬蟲——京東評論jieba分wordcloud統計

nbsp cnblogs code utf-8 col type callback 結果 處理 接上一章,抓取京東評論區內容。 url=‘https://club.jd.com/comment/productPageComments.action?callback=fetc

python實現簡單爬蟲功能

我們 目錄 size .com all 本地文件 使用 url alt  在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。   我們最常規的做法就是通過鼠標右鍵,選擇另存為。但有些圖片鼠標右

使用python實現簡單的畫多邊形。

oop 簡單的 python bob int range turtle 半徑 tle import turtleimport timeimport mathdef polygon(bob,n,r): jiaoDu = 360/n juLi=2*r*math.si

利用Python實現歸並排序

但是 list port ret detail conf 需要 思路 http 利用python進行歸並排序,摘抄自http://blog.csdn.net/minxihou/article/details/51821052 “代碼真的不是一氣呵成的,而且也不是想當然寫出來

python實現簡單knn算法

for clas select class fault ets lambda 進行 ear 原理:計算當前點(無label,一般為測試集)和其他每個點(有label,一般為訓練集)的距離並升序排序,選取k個最小距離的點,根據這k個點對應的類別進行投票,票數最多的類別的即為該