R(八): R分詞統計-老九門

来源:http://www.cnblogs.com/tgzhu/archive/2016/08/18/5783646.html
-Advertisement-
Play Games

分析文本內容基本的步驟:提取文本中的詞語 -> 統計詞語頻率 -> 詞頻屬性可視化。詞頻:能反映詞語在文本中的重要性,一般越重要的詞語,在文本中出現的次數就會越多。詞雲:讓詞語的頻率屬性可視化,更加直觀清晰。文本下載地址(http://www.yuandn.com/booktxt/59797/#do ...


       分析文本內容基本的步驟:提取文本中的詞語 -> 統計詞語頻率 -> 詞頻屬性可視化。詞頻:能反映詞語在文本中的重要性,一般越重要的詞語,在文本中出現的次數就會越多。詞雲:讓詞語的頻率屬性可視化,更加直觀清晰。文本下載地址(http://www.yuandn.com/booktxt/59797/#download 效果圖是將老九門12章後面內容刪除後結果

目錄:

  • 效果示例圖
  • 分詞包介紹及安裝
  • 詞雲包介紹安裝
  • 分詞統計
  • 詞雲展現

 效果示例圖:


分詞包介紹及安裝:


  • R分詞包:Rwordseg、rJava,rJava提供java的庫,供Rwordseg調用。Rwordseg是一個R環境下的中文分詞工具,引用了Ansj包,Ansj是一個開源的java中文分詞工具,基於中科院的ictclas中文分詞演算法,採用隱馬爾科夫模型(HMM),江湖傳言,Rwordseg有三個很牛逼的地方一是分詞準確,二是分詞速度超快,三是可以導入自定義詞庫,甚至還可以導入搜狗輸入法的細胞詞庫(sqel格式)
  • Rwordseg依賴包rJava,首先你必須確認你的系統中已經有可用的Java。 linux 系統下檢查命令:java –version
  • centos下安裝命令如下,註意安裝的順序,同時 Rwordseg 並未發佈至CARN
  • 命令:     (進入R命令行)
  • R命令: install.packages("rJava")
  • R命令: install.packages("Rwordseg",repos="http://R-Forge.R-project.org")
  • Windows系統下安裝命令,在windows系統的Rstudio 環境下未線上安裝成功,從  https://r-forge.r-project.org/R/?group_id=1054 網站下載基於 windows 的安裝包 (Rwordseg_0.2-1.zip),本地安裝
  • 命令: install.packages("rJava")
  • 命令: install.packages("d:\\Rwordseg_0.2-1.zip",repos = NULL,type = "source")

詞雲包介紹安裝:


  • 詞雲本身對於分析數據用處不大,但在當前這個看臉的時代,給領導彙報工作或做報告的時候,利用詞雲的可視化效果可以產生錦上添花的效應
  • R裡面繪製詞雲的包有wordcloud,wordcloud2, 相比wordcloud,新的wordcloud2 能更有效的利用詞與詞的間隔來插入數據,可以根據圖片或者文字來繪製定製化的詞雲
  • wordcloud2是基於wordcloud2.js封裝的一個R包,使用HTML5的canvas繪製,瀏覽器的可視化具有動態和交互效果
  • wordcloud2 已發佈至CARN,安裝命令如下:
  • 命令: install.packages("wordcloud2")

分詞統計:


  • 下載 txt 文件,我是在windows Rstudio 完成分詞清洗統計的工作,將清洗後的數據保存為 .rda 文件以便後續發佈至 FastRWeb
  • 在研究過程中,發現人員未被識別,先普及一下自定義詞典知識,代碼示例及解釋如下:
    > library(rJava)
    > library(Rwordseg)
    > 
    > str <- c("齊鐵嘴趴著車窗,張大佛爺來到長沙火車站外面,二月紅看熱鬧")
    > segmentCN(str)
     [1] ""     ""     ""     ""     ""     "車窗"   "張大"   "佛爺"   "來到"   "長沙"   "火車站"
    [12] "外面"   "二月紅" "看熱鬧"
    >  
    >  #載入文件的方式增加詞典未驗證通過
    > installDict("d:\\dict.txt","mydict",dicttype = "text")
    Error in installDict("d:\\dict.txt", "mydict", dicttype = "text") : 
      Wrong path of the dic file!
    > segmentCN(str)
     [1] ""     ""     ""     ""     ""     "車窗"   "張大"   "佛爺"   "來到"   "長沙"   "火車站"
    [12] "外面"   "二月紅" "看熱鬧"
    > 
    > #顯示當前手動添加的詞庫
    > listDict()
    [1] Name Type Des  Path
    <0 行> (或0-長度的row.names)
    > 
    > #刪除自定義詞庫
    > uninstallDict(removedict='mydict') 
    > 
    > #參數isNameRecognition  可用來人的名字識別,預設為false  
    > #查看函數 getOption("isNameRecognition")   
    > segment.options(isNameRecognition = TRUE)  
    > segmentCN(str) 
     [1] "齊鐵嘴" ""     ""     "車窗"   "張大"   "佛爺"   "來到"   "長沙"   "火車站" "外面"   "二月紅"
    [12] "看熱鬧"
    > 
    > #自定義詞典,讓某片語放入記憶體  
    > insertWords(c("張大佛爺","二月紅"))   
    > segmentCN(str) 
     [1] "齊鐵嘴"   ""       ""       "車窗"     "張大佛爺" "來到"     "長沙"     "火車站"   "外面"    
    [10] "二月紅"   "看熱鬧"  
    > 
    > #刪除詞典
    > deleteWords(c("張大佛爺","二月紅"))
    View Code
  •  

  • 分詞代碼及解釋如下:
    #載入分詞工具包
    library(rJava)
    library(Rwordseg)
    
    #自定義分詞,啟用名字識別
    segment.options(isNameRecognition = TRUE)
    insertWords(c("佛爺","張啟山","二爺","二月紅","八爺","九爺"))
    
    #參數returnType表示返回的分詞格式是按空格間隔的格式
    #執行完成後,會自動在相同目錄生成一個"待分析文件名. .segment.txt"的文本文件
    text=segmentCN("d:\\9th.txt",returnType = "tm")
    
    #讀入分詞文件,它是一個長字元
    text1=readLines("d:\\9th.segment.txt",encoding = "UTF-8")
    
    #word是一個長list
    #正則表達式:\\s表示 空格,回車,換行等空白符
    #word1 向量
    word = lapply(X = text1, FUN = strsplit, "\\s")
    word1=unlist(word)
    
    #統計詞頻
    df=table(word1)
    df=sort(df,decreasing = T)
    
    #把辭彙詞頻存入數據框
    df1 = data.frame(word = names(df), freq = df)
    
    # 過濾掉1個字和詞頻小於10的記錄  
    d <- subset(df1,nchar(as.character(df1$word)) >1 & df1$freq >= 10)
    
    # 輸出結果,將結果保存為.rda文件
    save(d,file = "d:\\9th.rda")
    View Code
  •  

詞雲展現: 


  •  worldcloud2提供兩個基本的函數:wordcloud2 和 letterCloud
    1. wordcloud2 : 提供基本的詞雲功能
    2. etterCloud : 使用選定的詞繪製詞雲
  • 利用上一步清除的數據,顯示可視化圖雲,示例代碼如下, 效果與上面的示意圖對應
    #載入包和清洗後的數據
    library(wordcloud2)
    data <- load("d:\\9th.rda")
    
    #預設樣式展視數據
    wordcloud2(d,shape = "star")
    
    #個性化背景和顏色
    wordcloud2(d, color = "random-light", backgroundColor = "grey")
    
    
    #自定義字元模式
    letterCloud(d,word = "B", color = "random-light",
                backgroundColor = "black",wordSize = 0.3)
    
    #自定義圖片模式
    wordcloud2(d, figPath='d:\\ma.png') 
    View Code
  •  代碼中 d:\\ma.png 圖片樣式如下,你可選擇不同圖片繪出不同效果,下圖是隨便從網上截的,僅作演示用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡單幾步操作讓你在終端下用git實現文件的上傳。 一、克隆項目 在工作中,常見的情景都是遠程庫已經建好了,需要大家把代碼拉下來,共同協作開發。本文所有操作均在終端下進行。 //克隆一個本地庫 git clone 你的遠程倉庫地址 二、本地庫的操作 //添加修改 1、git add 修改的文件名 // ...
  • title: Android Button的基本使用 tags: Button,按鈕 Button介紹: Button(按鈕)繼承自TextView,在Android開發中,Button是常用的控制項,用起來也很簡單,你可以在界面xml描述文檔中定義,也可以在程式中創建後加入到界面中,其效果都是一樣的 ...
  • 前言:swift語法基礎篇(二)來了,想學習swift的朋友可以拿去參考哦,有興趣可以相互探討,共同學習哦. 一.可選類型(重點內容) 1.什麼是可選類型? 1.1在OC開發中,如果一個變數暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型) 1.2在swift開發中,nil也是一個特殊 ...
  • 在應用圖標右上角添加消息數提醒,可以很方便的告知用戶該應用中有無新消息需要處理。下麵用xcode 7.3.1來簡要說明一下如何用swift語言進行此功能的實現。 1、修改 AppDelegate.swift 2 修改在ViewController.swift 3 編譯運行 第一次會彈出詢問是否允許推 ...
  • Socket 是應用層與 TCP / IP 協議通信的中間軟體抽象層,它是一組介面 TCP:面向連接、傳輸可靠(保證數據正確性,保證數據順序)、用於傳輸大量數據(流模式)、速度慢,建立連接需要開銷較多(時間,系統資源)。 UDP:面向非連接、傳輸不可靠、用於傳輸少量數據(數據包模式)、速度快 常用的 ...
  • 給工程師一個標準的估算項目時間 一個曾經與我一起工作過的經驗豐富的項目經理聲稱,他拿到程式員的時間估算以後,先將它乘以π,然後轉化下一個時間數量級後,才能得到真正的值。1天轉化成3.14周。他過去因為程式員不擅長估算時間而吃盡了苦頭。我創建了一個用來翻譯程式員時間估算的表格,來儘量縮小估算錯誤。 時 ...
  • 一,效果圖。 二,工程圖。 三,代碼。 RootViewController.h RootViewController.m ...
  • 之前對HTTPS通信過程有過瞭解,HTTPS是應用HTTP協議使用SSL加密的版本,在TCP和HTTP之間增加SSL協議。通過握手階段認證雙方身份,協商對稱秘鑰對通信信息進行加密。此處只描述常用的伺服器單向驗證,大致過程簡要描述如下: 0:事先Web伺服器把自己的公鑰和Web信息提交給權威CA,CA ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...