中文詞頻統計與詞云生成

本次作業來源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822

中文詞頻統計

1. 下載一長篇中文小說。

  下載長篇小說《西游記》

  本次作業小說保存在txt文檔:xyj.txt

2. 從文件讀取待分析文本。

xyj = open(r'F:/xyj.txt','r',encoding='utf-8').read()
wordsls = jieba.lcut(xyj)

3. 安裝并使用jieba進行中文分詞。

pip install jieba

import jieba

jieba.lcut(text)

?

4. 更新詞庫,加入所分析對象的專業詞匯。

jieba.add_word('天罡北斗陣')? #逐個添加

jieba.load_userdict(word_dict)? #詞庫文本文件

jieba.add_word('美猴王')
 

參考詞庫下載地址:https://pinyin.sogou.com/dict/

轉換代碼:scel_to_text

# -*- coding: utf-8 -*-
import struct
import os# 拼音表偏移,
startPy = 0x1540;# 漢語詞組表偏移
startChinese = 0x2628;# 全局拼音表
GPy_Table = {}# 解析結果
# 元組(詞頻,拼音,中文詞組)的列表# 原始字節碼轉為字符串
def byte2str(data):pos = 0str = ''while pos < len(data):c = chr(struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0])if c != chr(0):str += cpos += 2return str# 獲取拼音表
def getPyTable(data):data = data[4:]pos = 0while pos < len(data):index = struct.unpack('H', bytes([data[pos],data[pos + 1]]))[0]pos += 2lenPy = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]pos += 2py = byte2str(data[pos:pos + lenPy])GPy_Table[index] = pypos += lenPy# 獲取一個詞組的拼音
def getWordPy(data):pos = 0ret = ''while pos < len(data):index = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]ret += GPy_Table[index]pos += 2return ret# 讀取中文表
def getChinese(data):GTable = []pos = 0while pos < len(data):# 同音詞數量same = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表長度pos += 2py_table_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表pos += 2py = getWordPy(data[pos: pos + py_table_len])# 中文詞組pos += py_table_lenfor i in range(same):# 中文詞組長度c_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 中文詞組pos += 2word = byte2str(data[pos: pos + c_len])# 擴展數據長度pos += c_lenext_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 詞頻pos += 2count = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 保存
            GTable.append((count, py, word))# 到下個詞的偏移位置pos += ext_lenreturn GTabledef scel2txt(file_name):print('-' * 60)with open(file_name, 'rb') as f:data = f.read()print("詞庫名:", byte2str(data[0x130:0x338])) # .encode('GB18030')print("詞庫類型:", byte2str(data[0x338:0x540]))print("描述信息:", byte2str(data[0x540:0xd40]))print("詞庫示例:", byte2str(data[0xd40:startPy]))getPyTable(data[startPy:startChinese])getChinese(data[startChinese:])return getChinese(data[startChinese:])if __name__ == '__main__':# scel所在文件夾路徑in_path = r"F:\text"   #修改為你的詞庫文件存放文件夾# 輸出詞典所在文件夾路徑out_path = r"F:\text"  # 轉換之后文件存放文件夾fin = [fname for fname in os.listdir(in_path) if fname[-5:] == ".scel"]for f in fin:try:for word in scel2txt(os.path.join(in_path, f)):file_path=(os.path.join(out_path, str(f).split('.')[0] + '.txt'))# 保存結果with open(file_path,'a+',encoding='utf-8')as file:file.write(word[2] + '\n')os.remove(os.path.join(in_path, f))except Exception as e:print(e)pass

?

5. 生成詞頻統計

wcdict = {}
for word in tokens:if len(word)==1:continueelse:wcdict[word] = wcdict.get(word,0)+1

6. 排序

 
wcls = list(wcdict.items())
wcls.sort(key=lambda x:x[1],reverse=True)
for i in range(20):print(wcls[i])

?

7. 排除語法型詞匯,代詞、冠詞、連詞等停用詞。

stops

tt = open(r'F:/stops_chinese.txt','r',encoding='utf-8').read()
stops = tt.split()

? ? ? ·排除

wordsls = jieba.lcut(xyj)
tokens = [token for token in wordsls if token not in stops]

8. 輸出詞頻最大TOP20,把結果存放到文件里

import jieba
xyj = open(r'F:/xyj.txt','r',encoding='utf-8').read()
tt = open(r'F:/stops_chinese.txt','r',encoding='utf-8').read()
stops = tt.split() 
#jieba.load_userdict(r'F:\text/xyj.txt')

wordsls = jieba.lcut(xyj)
tokens = [token for token in wordsls if token not in stops]
print(len(wordsls),len(tokens))
wcdict = {}
for word in tokens:if len(word)==1:continueelse:wcdict[word] = wcdict.get(word,0)+1
wcls = list(wcdict.items())
wcls.sort(key=lambda x:x[1],reverse=True)
for i in range(20):print(wcls[i])

9. 生成詞云。

(1)詞云安裝

顯示詞云:

cut_text = " ".join(tokens)
from wordcloud import WordCloud
ciyun = WordCloud().generate(cut_text)
import matplotlib.pyplot as plt
plt.imshow(ciyun)
plt.axis("off")
plt.show()

保存詞云圖片

ciyun.to_file(r'F:\xyj.jpg')

?

改變詞云長度和寬度,背景顏色

ciyun = WordCloud(background_color = '#00ff00',width=400,height=300,margin = 1).generate(cut_text)
import matplotlib.pyplot as plt
plt.imshow(ciyun)
plt.axis("off")
plt.show()

改變詞云形狀

from scipy.misc import imread
im = imread(r'F:/1.jpg')
ciyun1 = WordCloud(background_color = '#0000FF',mask = im,margin = 2).generate(cut_text)
import matplotlib.pyplot as plt
plt.imshow(ciyun1)
plt.axis("off")
plt.show()

?

?

?

轉載于:https://www.cnblogs.com/ShaoJingWen/p/10578733.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249376.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java SWT Browser實現瀏覽器功能并運行JavaScript代碼

一、創建簡單的瀏覽器 import org.eclipse.swt.*; import org.eclipse.swt.browser.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*;public class Myswt3 {public static void main(String [] args) {Display display new Display();final Shell she…

[JZOJ5866]【NOIP2018模擬9.13】指引

Description Input Output Sample Input 6 3 2 0 3 1 1 3 4 2 0 4 5 5 Sample Output 2 Data Constraint Hint 貪心&#xff0c;把旅行者和出口的x坐標降序排序。 然后從前往后掃&#xff0c;如果是出口&#xff0c;就把y坐標插進set里&#xff0c;如果是旅行者&#xff0c;就查…

scrapy框架之遞歸解析和post請求

今日概要 遞歸爬取解析多頁頁面數據scrapy核心組件工作流程scrapy的post請求發送今日詳情 1.遞歸爬取解析多頁頁面數據 - 需求&#xff1a;將糗事百科所有頁碼的作者和段子內容數據進行爬取切持久化存儲 - 需求分析&#xff1a;每一個頁面對應一個url&#xff0c;則scrapy工程需…

SmartGit 過期解決方案之 非商業版本安裝使用

作為前端開發的小伙伴一定有這樣的困惑&#xff0c;自己在日常的團隊協作配合時&#xff0c;提交代碼和解決沖突是我們最頭疼的問題&#xff0c;但是又不喜歡使用Eclipse或者IDEA這種超級占內存的編輯器&#xff0c;使用Git命令又是那么捉襟見肘&#xff0c;所以有一個好用的輕…

HDU6438 Buy and Resell 解題報告(一個有趣的貪心問題的嚴格證明)

寫在前面 此題是一個很容易想到的貪心題目&#xff0c;但是正確性的證明是非常復雜的。然而&#xff0c;目前網上所有題解并未給出本題貪心算法的任何正確性證明&#xff0c;全部僅停留在描述出一個貪心算法。本著對算法與計算機科學的熱愛&#xff08;逃&#xff09;&#xff…

Webpack不生成index.html

沒有導出你的最后2個插件&#xff0c;并且沒有指定html文件名dist&#xff0c;因為HtmlWebpackPlugin應該生成相對于path&#xff0c;下面是固定配置&#xff1a; var path require(path)var webpack require(webpack)var HtmlWebpackPlugin require(html-webpack-plugin);m…

CSS3筆記之定位篇(一)relative

知識點1&#xff1a;relative和absolute relative: 相對自身&#xff0c;并會限制內部absolute元素層疊 absolute: 相對容器&#xff0c;并受到父類容器relative的影響&#xff0c;比如&#xff1a;overflow:hidden/scroll fixed: 不受relative限制&#xff0c;只受z-index的…

洛谷P3066 [USACO12DEC]逃跑的BarnRunning Away From…

題面鏈接 一句話題意&#xff1a;給出以1號點為根的一棵有根樹&#xff0c;問每個點的子樹中與它距離小于等于l的點有多少個。 我&#xff1a;似乎并不好做啊。。。看了題解后大霧。。。 sol&#xff1a;考慮樹上差分&#xff0c;對于一個點&#xff0c;在他那個位置&#xff0…

vue使用webPack打包發布后頁面顯示空白

今天筆者將打包后&#xff0c;進行訪問&#xff0c;訪問到index.html&#xff0c;但是出現的是空白頁。 打包命令&#xff1a;npm run build&#xff0c;打包后的文件如下&#xff1a; 這是因為index.html中引入的css ,js 的路徑不對:如下圖 這個是因為webpack打包的時候引入…

第一次實驗報告

c程序實驗報告 姓名&#xff1a;黃志乾 實驗地點&#xff1a;教學樓514教室 實驗時間&#xff1a;3月19日實驗項目: 1、字符與ASCII碼 2、運算符與表達式的應用 3、順序結構應用程序 4、數學函數的算法描述 5、雞兔同籠的算法描述 6、確定坐標的算法描述…

Mac下Idea安裝Git報錯Xcrun問題的解決

使用過IDEA的小伙伴都知道&#xff0c;它和我們之前用過的Eclipse一樣強大&#xff0c;或者比他更強大。當它配合的Mac使用時&#xff0c;就會變得更得心應手&#xff0c;少去很多環境配置的環節。其中最典型的就是Git 由于Mac自帶就安裝了git, 大家可以通過終端輸入命令“git…

關于Django路由層簡單筆記

Django—路由層 URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表&#xff1b;你就是以這種方式告訴Django&#xff0c;對于客戶端發來的某個URL調用哪一段邏輯代碼對應執行。 1&#xff0c;簡單的路由配置 from django.urls…

hdu 5183

hdu 5183(Hash處理區間問題) 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid5183 題意:給出一個n個元素的數組,現在要求判斷 a1-a2a3-a4...../-an 中是否存在某個某個區間使得 ai-ai1ai2...(-1)j-iaj k?? 這個題要利用Hash就可以實現幾乎在 O(n) 的時間內實現查找判斷…

vue-cli,webpack安裝

第一步應該下載node.js這是安裝vue-cli的基礎工具。官網下載快捷安全可&#xff1a;https://nodejs.org/en/ 第二步打開命令面板找到你要安裝的位置 第三步就是安裝全局vue-cli 命令操作 npm intatll -g vue-cli 安裝完畢之后 可以檢查安裝版本即 vue -V 如下圖 這還不算完&…

CSS3筆記之定位篇(二)z-index

知識點1&#xff1a;z-index基礎 z-index&#xff1a;auto; 默認值 z-index: <integer> 整數 z-index: inherit 繼承 不考慮css3 還有定位元素的z-index才有作用 知識點2&#xff1a;z-index與定位元素 無嵌套&#xff1a;后來居上&#xff0c;哪個大哪個上 //在沒有…

JSP頁面傳值出現中文亂碼的問題

在接收值的jsp頁面代碼的body里添加&#xff1a; <%request.setCharacterEncoding("utf-8"); %> //這里是設置utf-8為jsp頁面的中文編碼方式 jsp頁面之間傳值&#xff1a; 發送信息的jsp腳本&#xff1a; session.setAttribute("user",rs.getString…

【我所認知的BIOS】— uEFI AHCI Driver(8) — Pci.Read()

【我所認知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()LightSeed6/19/2014社會一直在變。不曉得是不是社會變的太苦開&#xff0c;而我沒變所以我反而顯得單純了。辦一個居住證。幾年前辦的以為最終能夠一勞永逸的&#xff0c;后來續辦的是發現確實不難了。尼瑪&#xf…

springboot項目集成vue

vue的項目目錄如下&#xff1a; vue項目打包 首先進入項目目錄&#xff1a;cd 項目名 然后執行打包命令&#xff1a;npm run build隨后我們的項目中會多出一個dist文件夾&#xff1a;如下圖 然后將dist文件夾中的所有內容放到eclipse中的src/main/resources/static文件夾里面…

Vue項目啟動webpack報錯Module build failed: Error: No PostCSS Config found in......

自己寫的公司項目&#xff0c;今天需要提交到公司版本庫&#xff0c;可是在本地啟動正常的項目&#xff0c;拷貝到git文件目錄下突然報錯Module build failed: Error: No PostCSS Config found in......&#xff0c;源文件都沒有改動過&#xff01; 然后自己各種百度&#xff…

2.1對 特征歸一化 的一些理解

特征歸一化有很多不同的叫法&#xff0c;比如&#xff1a;特征縮放&#xff0c;Feature Normalization&#xff0c;Feature Scaling 數據標準化&#xff08;歸一化&#xff09;處理是數據挖掘的一項基礎工作&#xff0c;不同評價指標往往具有不同的量綱和量綱單位&#xff0c;這…