熱線電話:13121318867

登錄
首頁精彩閱讀R語言中文分詞包jiebaR
R語言中文分詞包jiebaR
2017-04-06
收藏

R語言中文分詞包jiebaR

分析,了解國家大事;也可以對微博信息進行分析,通過社交輿情看看大家的關注點。通過文本挖掘找到文章中的隱藏信息,對文章的結構進行分析,判斷是不是同一個作者寫文章;同時可以對郵件分析,結合bayes算法判斷哪些是垃圾郵件,哪些是有用的郵件。

本文挖掘的第一步,就是要進行分詞,分詞將直接影響文本挖掘的效果。R語言在分詞方面有很好的支持,接下來就給大家介紹一個不錯的R語言中文分詞包“結巴分詞”(jiebaR)。
目錄
jiebaR包介紹
5分鐘上手
分詞引擎
配置詞典
停止詞過濾
關鍵詞提取
1. jiebaR包介紹
結巴分詞(jiebaR),是一款高效的R語言中文分詞包,底層使用的是C++,通過Rcpp進行調用很高效。結巴分詞基于MIT協議,就是免費和開源的,感謝國人作者的給力支持,讓R的可以方便的處理中文文本。
官方Github的地址:https://github.com/qinwf/jiebaR
本文所使用的系統環境
Win10 64bit
R: 3.2.3 x86_64-w64-mingw32/x64 b4bit
jiebaR包是在CRAN發布的標準庫,安裝起來非常簡單,2條命令就可以了。
~ R
> install.packages("jiebaR")
> library("jiebaR")
如果想要安裝開發版本,可以使用devtools來進行安裝,devtools的介紹請參考文章:在巨人的肩膀前行 催化R包開發(http://blog.fens.me/r-package-faster/)

> library(devtools)
> install_github("qinwf/jiebaRD")
> install_github("qinwf/jiebaR")
> library("jiebaR")
開發版本安裝,官方建議使用Linux系統 gcc >= 4.6 編譯,Windows需要安裝 Rtools。

2. 5分鐘上手
5分鐘上手,直接看第一個例子吧,對一段文字進行分詞。
> wk = worker()
> wk["我是《R的極客理想》圖書作者"]
[1] "我是" "R"    "的"   "極客" "理想" "圖書" "作者"

> wk["我是R語言的深度用戶"]
[1] "我"   "是"   "R"    "語言" "的"   "深度" "用戶"
很簡單地,2行代碼,就完成了中文分詞。
jiebaR提供了3種分詞語句的寫法,例子上面的用[]符號的語法,還可以使用<=符合語法,或者使用segment()函數。雖然形式不同,但是分詞效果是一樣的。 使用<=符號的語法,如下
> wk<='另一種符合的語法'
[1] "另"   "一種" "符合" "的"   "語法"
使用segment()函數的語法,如下

> segment( "segment()函數語句的寫法" , wk )
[1] "segment" "函數"    "語句"    "的"      "寫法"
如果你覺得很神奇,想了解如何自定義操作符的,可以檢查項目的源代碼quick.R文件https://github.com/qinwf/jiebaR/blob/master/R/quick.R
# <= 符號定義
`<=.qseg`<-function(qseg, code){
  if(!exists("quick_worker",envir = .GlobalEnv ,inherits = F) ||
       .GlobalEnv$quick_worker$PrivateVarible$timestamp != TIMESTAMP){
    
    if(exists("qseg",envir = .GlobalEnv,inherits = FALSE ) )
      rm("qseg",envir = .GlobalEnv)
    
    modelpath  = file.path(find.package("jiebaR"),"model","model.rda")
    quickparam = readRDS(modelpath)
    
    if(quickparam$dict == "AUTO") quickparam$dict = DICTPATH
    if(quickparam$hmm == "AUTO") quickparam$hmm = HMMPATH
    if(quickparam$user == "AUTO") quickparam$user = USERPATH
    if(quickparam$stop_word == "AUTO") quickparam$stop_word = STOPPATH
    if(quickparam$idf == "AUTO") quickparam$idf = IDFPATH
    
    createquickworker(quickparam)
    setactive()
  }

  //..代碼省略
}

# [ 符號定義
`[.qseg`<- `<=.qseg`

我們也可以直接對文本文件進行分詞,在當前目錄新建一個文本文件idea.txt。
~ notepad idea.txt

R的極客理想系列文章,涵蓋了R的思想,使用,工具,創新等的一系列要點,以我個人的學習和體驗去詮釋R的強大。

R語言作為統計學一門語言,一直在小眾領域閃耀著光芒。直到大數據的爆發,R語言變成了一門炙手可熱的數據分析的利器。隨著越來越多的工程背景的人的加入,R語言的社區在迅速擴大成長?,F在已不僅僅是統計領域,教育,銀行,電商,互聯網….都在使用R語言。
當然,我們運行分詞程序,會在當前目錄生成一個新的分詞結果的文件。

> wk['./idea.txt']
[1] "./idea.segment.2016-07-20_23_25_34.txt"
打開文件idea.segment.2016-07-20_23_25_34.txt,整個本文以空格進行分詞。

~ notepad idea.segment.2016-07-20_23_25_34.txt

R 的 極客 理想 系列 文章 涵蓋 了 R 的 思想 使用 工具 創新 等 的 一系列 要點 以 我 個人 的 學習 和 體驗 去 詮釋 R 的 強大 R 語言 作為 統計學 一門 語言 一直 在 小眾 領域 閃耀著 光芒 直到 大 數據 的 爆發 R 語言 變成 了 一門 炙手可熱 的 數據分析 的 利器 隨著 越來越 多 的 工程 背景 的 人 的 加入 R 語言 的 社區 在 迅速 擴大 成長 現在 已 不僅僅 是 統計 領域 教育 銀行 電商 互聯網 都 在 使用 R 語言
是不是很簡單,5分鐘實踐就能完成分詞的任務。

3. 分詞引擎
在調用worker()函數時,我們實際是在加載jiebaR庫的分詞引擎。jiebaR庫提供了7種分詞引擎。
混合模型(MixSegment):是四個分詞引擎里面分詞效果較好的類,結它合使用最大概率法和隱式馬爾科夫模型。
最大概率法(MPSegment) :負責根據Trie樹構建有向無環圖和進行動態規劃算法,是分詞算法的核心。
隱式馬爾科夫模型(HMMSegment):是根據基于人民日報等語料庫構建的HMM模型來進行分詞,主要算法思路是根據(B,E,M,S)四個狀態來代表每個字的隱藏狀態。 HMM模型由dict/hmm_model.utf8提供。分詞算法即viterbi算法。
索引模型(QuerySegment):先使用混合模型進行切詞,再對于切出來的較長的詞,枚舉句子中所有可能成詞的情況,找出詞庫里存在。
標記模型(tag)
Simhash模型(simhash)
關鍵詞模型(keywods)
如果你不太關心引擎的事,那么直接用官方推薦的混合模型(默認選擇)就行了。查看worker()函數的定義。

worker(type = "mix", dict = DICTPATH, hmm = HMMPATH, user = USERPATH,
  idf = IDFPATH, stop_word = STOPPATH, write = T, qmax = 20, topn = 5,
  encoding = "UTF-8", detect = T, symbol = F, lines = 1e+05,
  output = NULL, bylines = F, user_weight = "max")
參數列表:
type, 引擎類型
dict, 系統詞典
hmm, HMM模型路徑
user, 用戶詞典
idf, IDF詞典
stop_word, 關鍵詞用停止詞庫
write, 是否將文件分詞結果寫入文件,默認FALSE
qmax, 最大成詞的字符數,默認20個字符
topn, 關鍵詞數,默認5個
encoding, 輸入文件的編碼,默認UTF-8
detect, 是否編碼檢查,默認TRUE
symbol, 是否保留符號,默認FALSE
lines, 每次讀取文件的最大行數,用于控制讀取文件的長度。大文件則會分次讀取。
output, 輸出路徑
bylines, 按行輸出
user_weight, 用戶權重
我們在調用worker()時,就加載了分詞引擎,可以打印出來,查看分詞的引擎的配置。
> wk = worker()
> wk
Worker Type:  Jieba Segment

Default Method  :  mix     # 混合模型
Detect Encoding :  TRUE    # 檢查編碼
Default Encoding:  UTF-8   # UTF-8
Keep Symbols    :  FALSE   # 不保留符號
Output Path     :          # 輸出文件目錄
Write File      :  TRUE    # 寫文件
By Lines        :  FALSE   # 不行輸出
Max Word Length :  20      # 最大單單詞長度
Max Read Lines  :  1e+05   # 最大讀入文件行數

Fixed Model Components:  

$dict                      # 系統詞典
[1] "D:/tool/R-3.2.3/library/jiebaRD/dict/jieba.dict.utf8"

$user                      # 用戶詞典
[1] "D:/tool/R-3.2.3/library/jiebaRD/dict/user.dict.utf8"

$hmm                       # 隱式馬爾科夫模型模型
[1] "D:/tool/R-3.2.3/library/jiebaRD/dict/hmm_model.utf8"

$stop_word                 # 停止詞,無
NULL

$user_weight               # 用戶詞典權重
[1] "max"

$timestamp                 # 時間戳
[1] 1469027302

$default $detect $encoding $symbol $output $write $lines $bylines can be reset.
如果我們想改變分詞引擎的配置項,可以在調用worker()創建分詞引擎時,也可以通過wk$XX來進行設置。如果想了解wk是什么類型的對象,我們通過pryr包的otype的函數來檢查wk對象的類型。關于pryr包的詳細使用,請參考文章撬動R內核的高級工具包pryr:http://blog.fens.me/r-pryr/

# 加載 pryr包
> library(pryr)
> otype(wk)  # 面向對象的類型檢查
[1] "S3"

> class(wk)  # 查看class是屬性
[1] "jiebar"  "segment" "jieba"
4. 配置詞典
對于分詞的結果好壞的關鍵因素是詞典,jiebaR默認有配置標準的詞典。對于我們的使用來說,不同行業或不同的文字類型,最好用專門的分詞詞典。在jiebaR中通過show_dictpath()函數可以查看默認的標準詞典,可以通過上一小節介紹的配置項,來指定我們自己的詞典。日常對話的常用詞典,比如搜狗輸入法的詞庫。

# 查看默認的詞庫位置
> show_dictpath()
[1] "D:/tool/R-3.2.3/library/jiebaRD/dict"

# 查看目錄
> dir(show_dictpath())
[1] "D:/tool/R-3.2.3/library/jiebaRD/dict"
 [1] "backup.rda"      "hmm_model.utf8"  "hmm_model.zip"  
 [4] "idf.utf8"        "idf.zip"         "jieba.dict.utf8"
 [7] "jieba.dict.zip"  "model.rda"       "README.md"      
[10] "stop_words.utf8" "user.dict.utf8"
看到詞典目錄中,包括了多個文件。
jieba.dict.utf8, 系統詞典文件,最大概率法,utf8編碼的
hmm_model.utf8, 系統詞典文件,隱式馬爾科夫模型,utf8編碼的
user.dict.utf8, 用戶詞典文件,utf8編碼的
stop_words.utf8,停止詞文件,utf8編碼的
idf.utf8,IDF語料庫,utf8編碼的
jieba.dict.zip,jieba.dict.utf8的壓縮包
hmm_model.zip,hmm_model.utf8的壓縮包
idf.zip,idf.utf8的壓縮包
backup.rda,無注釋
model.rda,無注釋
README.md,說明文件
打開系統詞典文件jieba.dict.utf8,并打印前50行。

> scan(file="D:/tool/R-3.2.3/library/jiebaRD/dict/jieba.dict.utf8",
+           what=character(),nlines=50,sep='\n',
+           encoding='utf-8',fileEncoding='utf-8')
Read 50 items
 [1] "1號店 3 n"  "1號店 3 n"  "4S店 3 n"   "4s店 3 n"  
 [5] "AA制 3 n"   "AB型 3 n"   "AT&T 3 nz"  "A型 3 n"   
 [9] "A座 3 n"    "A股 3 n"    "A輪 3 n"    "A輪 3 n"   
[13] "BB機 3 n"   "BB機 3 n"   "BP機 3 n"   "BP機 3 n"  
[17] "B型 3 n"    "B座 3 n"    "B股 3 n"    "B超 3 n"   
[21] "B輪 3 n"    "B輪 3 n"    "C# 3 nz"    "C++ 3 nz"  
[25] "CALL機 3 n" "CALL機 3 n" "CD機 3 n"   "CD機 3 n"  
[29] "CD盒 3 n"   "C座 3 n"    "C盤 3 n"    "C盤 3 n"   
[33] "C語言 3 n"  "C語言 3 n"  "D座 3 n"    "D版 3 n"   
[37] "D盤 3 n"    "D盤 3 n"    "E化 3 n"    "E座 3 n"   
[41] "E盤 3 n"    "E盤 3 n"    "E通 3 n"    "F座 3 n"   
[45] "F盤 3 n"    "F盤 3 n"    "G盤 3 n"    "G盤 3 n"   
[49] "H盤 3 n"    "H盤 3 n"
我們發現系統詞典每一行都有三列,并以空格分割,第一列為詞項,第二列為詞頻,第三列為詞性標記。
打開用戶詞典文件user.dict.utf8,并打印前50行。

> scan(file="D:/tool/R-3.2.3/library/jiebaRD/dict/user.dict.utf8",
+      what=character(),nlines=50,sep='\n',
+      encoding='utf-8',fileEncoding='utf-8')
Read 5 items
[1] "云計算"   "韓玉鑒賞" "藍翔 nz"  "CEO"      "江大橋"  
用戶詞典第一行有二列,,第一列為詞項,第二列為詞性標記,沒有詞頻的列。用戶詞典默認詞頻為系統詞庫中的最大詞頻。
jiebaR包關于詞典詞性標記,采用ictclas的標記方法。ICTCLAS 漢語詞性標注集。

代碼名稱幫助記憶的詮釋
Ag形語素形容詞性語素。形容詞代碼為a,語素代碼g前面置以A。
a形容詞取英語形容詞adjective的第1個字母。
ad副形詞直接作狀語的形容詞。形容詞代碼a和副詞代碼d并在一起。
an名形詞具有名詞功能的形容詞。形容詞代碼a和名詞代碼n并在一起。
b區別詞取漢字"別"的聲母。
c連詞取英語連詞conjunction的第1個字母。
Dg副語素副詞性語素。副詞代碼為d,語素代碼g前面置以D。
d副詞取adverb的第2個字母,因其第1個字母已用于形容詞。
e嘆詞取英語嘆詞exclamation的第1個字母。
f方位詞取漢字"方"的聲母。
g語素絕大多數語素都能作為合成詞的"詞根",取漢字"根"的聲母。
h前接成分取英語head的第1個字母。
i成語取英語成語idiom的第1個字母。
j簡稱略語取漢字"簡"的聲母。
k后接成分
l習用語習用語尚未成為成語,有點"臨時性",取"臨"的聲母。
m數詞取英語numeral的第3個字母,n,u已有他用。
Ng名語素名詞性語素。名詞代碼為n,語素代碼g前面置以N。
n名詞取英語名詞noun的第1個字母。
nr人名名詞代碼n和"人(ren)"的聲母并在一起。
ns地名名詞代碼n和處所詞代碼s并在一起。
nt機構團體"團"的聲母為t,名詞代碼n和t并在一起。
nz其他專名"專"的聲母的第1個字母為z,名詞代碼n和z并在一起。
o擬聲詞取英語擬聲詞onomatopoeia的第1個字母。
p介詞取英語介詞prepositional的第1個字母。
q量詞取英語quantity的第1個字母。
r代詞取英語代詞pronoun的第2個字母,因p已用于介詞。
s處所詞取英語space的第1個字母。
Tg時語素時間詞性語素。時間詞代碼為t,在語素的代碼g前面置以T。
t時間詞取英語time的第1個字母。
u助詞取英語助詞auxiliary 的第2個字母,因a已用于形容詞。
Vg動語素動詞性語素。動詞代碼為v。在語素的代碼g前面置以V。
v動詞取英語動詞verb的第一個字母。
vd副動詞直接作狀語的動詞。動詞和副詞的代碼并在一起。
vn名動詞指具有名詞功能的動詞。動詞和名詞的代碼并在一起。
w標點符號
x非語素字非語素字只是一個符號,字母x通常用于代表未知數、符號。
y語氣詞取漢字"語"的聲母。
z狀態詞取漢字"狀"的聲母的前一個字母。
下面我們自定義一個用戶詞典,來試試效果。編寫詞典文件,user.utf8。
~ notepad user.utf8

R語言
R的極客理想
大數據
數據

使用我們的自定義的用戶詞典,對剛才的文本再進行分詞。

> wk = worker(user='user.utf8')
> wk['./idea.txt']
[1] "./idea.segment.2016-07-21_11_14_24.txt"
對比2次產生的分詞結果,idea.segment.2016-07-20_23_25_34.txt 和 idea.segment.2016-07-21_11_14_24.txt。

在實際使用中,jiebaR默認提供的用戶詞典只有5個單詞,太簡單了,肯定是不夠用的。我們可以用搜狗詞典,來豐富用戶自己的詞庫。接下來,讓我們配置搜狗詞典。你需要安裝一個搜狗輸入法,具體的安裝過程不再解釋。

我安裝的是搜狗五筆輸入法,找到搜狗的安裝目錄,并找到詞典文件。我的搜狗詞典,在下面的安裝位置。

C:\Program Files (x86)\SogouWBInput\2.1.0.1288\scd\17960.scel
把17960.scel文件復制到自己的項目目錄里,用文本編輯器打開文件,發現是二進制的。那么我需要用工具進行轉換,把二進制的詞典轉成我們可以使用的文本文件。jiebaR包的作者,同時開發了一個cidian項目,可以轉換搜狗的詞典,那么我們只需要安裝cidian包即可。

安裝cidian項目

> install.packages("devtools")
> install.packages("stringi")
> install.packages("pbapply")
> install.packages("Rcpp")
> install.packages("RcppProgress")
> library(devtools)
> install_github("qinwf/cidian")
> library(cidian)
轉換二進制詞典到文本文件。

# 轉換
> decode_scel(scel = "./17960.scel",cpp = TRUE)
output file: ./17960.scel_2016-07-21_00_22_11.dict

# 查看生成的詞典文件
> scan(file="./17960.scel_2016-07-21_00_22_11.dict",
+      what=character(),nlines=50,sep='\n',
+      encoding='utf-8',fileEncoding='utf-8')
Read 50 items
 [1] "阿壩州 n"         "阿百川 n"         "阿班 n"          
 [4] "阿賓 n"           "阿波菲斯 n"       "阿不都熱希提 n"  
 [7] "阿不都西庫爾 n"   "阿不力克木 n"     "阿爾姆格倫 n"    
[10] "阿爾沙文 n"       "阿肥星 n"         "阿菲正傳 n"      
[13] "阿密特 n"         "阿穆 n"           "阿穆隆 n"        
[16] "阿帕魯薩鎮 n"     "阿披實 n"         "阿衰 n"          
[19] "阿霞 n"           "艾奧瓦 n"         "愛不疚 n"        
[22] "愛的錯位 n"       "愛得得體 n"       "愛的火焰 n"      
[25] "愛的流刑地 n"     "愛得起 n"         "埃夫隆 n"        
[28] "愛搞網 n"         "愛國紅心 n"       "愛呼 n"          
[31] "愛就宅一起 n"     "??讼?n"       "愛沒有錯 n"      
[34] "埃蒙斯 n"         "愛奴新傳 n"       "愛起點 n"        
[37] "愛情的牙齒 n"     "愛情海濱 n"       "愛情節 n"        
[40] "愛情美的樣子 n"   "愛情無限譜 n"     "愛情占線 n"      
[43] "愛情轉移 n"       "愛情左燈右行 n"   "愛上你是一個錯 n"
[46] "矮哨兵 n"         "愛是妥協 n"       "愛似水仙 n"      
[49] "愛太痛 n"         "愛無界 n"    
接下來,直接把搜狗詞典配置到我們的分詞庫中,就可以直接使用了。把搜狗詞典文件改名,從17960.scel_2016-07-21_00_22_11.dict到user.dict.utf8,然后替換D:\tool\R-3.2.3\library\jiebaRD\dict目錄下面的user.dict.utf8。這樣默認的用戶詞典,就是搜狗詞典了。很酷吧!

5. 停止詞過濾
停止詞就是分詞過程中,我們不需要作為結果的詞,像英文的語句中有很多的a,the,or,and等,中文語言中也有很多,比如 的,地,得,我,你,他。這些詞因為使用頻率過高,會大量出現在一段文本中,對于分詞后的結果,在統計詞頻的時候會增加很多的噪音,所以我們通常都會將這些詞進行過濾。
在jiebaR中,過濾停止詞有2種方法,一種是通過配置stop_word文件,另一種是使用filter_segment()函數。
首先我們先來看,通過配置stop_word文件的方法。新建一個stop_word.txt文件。

~ notepad stop_word.txt


我是

加載分詞引擎,并配置停止詞過濾。


> wk = worker(stop_word='stop_word.txt')
> segment<-wk["我是《R的極客理想》圖書作者"]
> segment
[1] "R"    "的"   "極客" "理想" "圖書" "作者"
上面的文本,我們把"我是"通過停止詞進行了過濾。如果還想過濾“作者”一詞,可以動態的調用filter_segment()函數。

> filter<-c("作者")
> filter_segment(segment,filter)
[1] "R"    "的"   "極客" "理想" "圖書"
6. 關鍵詞提取
關鍵詞提取是文本處理非常重要的一個環節,一個經典算法是TF-IDF算法。其中,TF(Term Frequency)代表詞頻,IDF(Inverse Document Frequency)表示逆文檔頻率。如果某個詞在文章中多次出現,而且不是停止詞,那么它很可能就反應了這段文章的特性,這就是我們要找的關鍵詞。再通過IDF來算出每個詞的權重,不常見的詞出現的頻率越高,則權重越大。計算TF-IDF的公式為:
TF-IDF = TF(詞頻) * 逆文檔頻率(IDF)
對文檔中每個詞計算TF-IDF的值,把結果從大到小排序,就得到了這篇文檔的關鍵性排序列表。
jiebaR包的關鍵詞提取提取的實現,也是使用了TF-IDF的算法。在安裝目錄中的idf.utf8文件,為IDF的語料庫。查看idf.utf8內容。

> scan(file="D:/tool/R-3.2.3/library/jiebaRD/dict/idf.utf8",
+      what=character(),nlines=50,sep='\n',
+      encoding='utf-8',fileEncoding='utf-8')
Read 50 items
 [1] "勞動防護 13.900677652"      "生化學 13.900677652"       
 [3] "奧薩貝爾 13.900677652"      "考察隊員 13.900677652"     
 [5] "崗上 11.5027823792"         "倒車檔 12.2912397395"      
 [7] "編譯 9.21854642485"         "蝶泳 11.1926274509"        
 [9] "外委 11.8212361103"         "故作高深 11.9547675029"    
[11] "尉遂成 13.2075304714"       "心源性 11.1926274509"      
[13] "現役軍人 10.642581114"      "杜勃留 13.2075304714"      
[15] "包天笑 13.900677652"        "賈政陪 13.2075304714"      
[17] "托爾灣 13.900677652"        "多瓦 12.5143832909"        
[19] "多瓣 13.900677652"          "巴斯特爾 11.598092559"     
[21] "劉皇帝 12.8020653633"       "亞歷山德羅夫 13.2075304714"
[23] "社會公眾 8.90346537821"     "五百份 12.8020653633"      
[25] "兩點閾 12.5143832909"       "多瓶 13.900677652"         
[27] "冰天 12.2912397395"         "庫布齊 11.598092559"       
[29] "龍川縣 12.8020653633"       "銀燕 11.9547675029"        
[31] "歷史風貌 11.8212361103"     "信仰主義 13.2075304714"    
[33] "好色 10.0088573539"         "款款而行 12.5143832909"    
[35] "凳子 8.36728816325"         "二部 9.93038573842"        
[37] "盧巴 12.1089181827"         "五百五 13.2075304714"      
[39] "暢敘 11.598092559"          "吳柵子 13.2075304714"      
[41] "智力競賽 13.900677652"      "庫邦 13.2075304714"        
[43] "非正義 11.3357282945"       "編訂 10.2897597393"        
[45] "悲號 12.8020653633"         "陳莊搭 13.2075304714"      
[47] "二郎 9.62401153296"         "電光石火 11.8212361103"    
[49] "搶球 11.9547675029"         "南澳大利亞 10.9562386728"  
idf.utf8文件每一行有2列,第一列是詞項,第二列為權重。然后,我通過計算文檔的詞頻(TF),與語料庫的IDF值相乘,就可以得到TF-IDF值,從而提取文檔的關鍵詞。

比如,我們對下面的文本內容進行關鍵詞的提取。

> wk = worker()
> segment<-wk["R的極客理想系列文章,涵蓋了R的思想,使用,工具,創新等的一系列要點,以我個人的學習和體驗去詮釋R的強大。"]

# 計算詞頻
> freq(segment)
     char freq
1    創新    1
2      了    1
3    文章    1
4    強大    1
5       R    3
6    個人    1
7      的    5
8    詮釋    1
9      和    1
10 一系列    1
11   使用    1
12     以    1
13     等    1
14   極客    1
15   理想    1
16   思想    1
17   涵蓋    1
18   系列    1
19     去    1
20     我    1
21   工具    1
22   學習    1
23   體驗    1
24   要點    1

# 取TF-IDF的前5的關鍵詞
> keys = worker("keywords",topn=5)

# 計算關鍵詞
> vector_keywords(segment,keys)
11.7392 8.97342 8.23425  8.2137 7.43298
 "極客"  "詮釋"  "要點"  "涵蓋"  "體驗"
使用jiebaR包處理分詞確實簡單,幾行的代碼就能實現分詞的各種算法操作。有了這個工具,我們就可以文檔中,發現各種語言規則進行文本挖掘了。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢