R語言jiebaR包的分詞學習

 實訓中的天然語言處理部分,首先就是要分詞了,學習一下!正則表達式

上手jiebaR

使用jiebaR的第一步固然是安裝jiabaR包並加載咯算法

安裝: install.packages("jiebaR")    加載:  library(jiebaR) app

三種分詞語句的寫法:函數

wk = worker()
#方法1
wk["我但願將來會很好"]

#方法2
wk<="我但願將來會很好" #此處用=的話可不行喲

#方法3
segment("我但願將來會很好",wk)

結果都是同樣的,以下
 [1] "我" "但願" "將來" "會" "很" "好" 學習

 

固然也可對文本文件進行分詞:當前目錄下建立文本文件like.txtui

##like.txt
新的一學年開始了,結束了大一的驕傲和浮躁以後,橋川、鍾白、任逸帆等人順利進入了大二。肖海洋也經過了大一的考試,如願以償沒有留級。大一的同學情誼依舊繼續。過了一個假期,大二伊始,舊同窗的離開和新同窗的加入,讓他們之間的關係也發生了微妙變化。顧一心隨家人去了美國上學, 畢十三把這份牽掛變成了學習上奮進的動力。轉學生許連翹新轉入電攝班並貌似帶着神祕的任務。原班主任的離開,讓本來散漫的電攝班開始團結。
人物的新舊交替,和大二課業的豐富與繁重,2015級電攝班大二的同學故事更加精彩。這時的他們褪去了大一的青澀,迎來大學中成長速度最快的一年。九我的開啓了各自的夢想,並在跌跌撞撞中實現本身的夢想。又是一年大學時光的流逝,九位同學好友之間的情誼愈來愈濃。

而後,輸入 wk['like.txt'] ,此時同等價於 segment('like.txt',wk) , wk<='like.txt' 編碼

返回 [1] "like.segment.2018-01-08_16_13_17.txt" ,即在同目錄下生成了分好詞的文件,以下:spa

##like.segment.2018-01-08_16_13_17.txt
新 的 一 學年 開始 了 結束 了 大 一 的 驕傲 和 浮躁 以後 橋川 鍾 白 任 逸 帆 等 人 順利 進入 了 大二 肖 海洋 也 經過 了 大 一 的 考試 如願以償 沒有 留級 大一 的 同學 情誼 依舊 繼續 過 了 一個 假期 大二 伊始 舊 同窗 的 離開 和 新 同窗 的 加入 讓 他們 之間 的 關係 也 發生 了 微妙 變化 顧 一心 隨 家人 去 了 美國 上學 畢 十三 把 這份 牽掛 變成 了 學習 上 奮進 的 動力 轉 學生 許 連翹 新 轉入 電攝 班 並 貌似 帶 着 神祕 的 任務 原 班主任 的 離開 讓 本來 散漫 的 電 攝班 開始 團結 人物 的 新舊交替 和 大二 課業 的 豐富 與 繁重 2015 級 電 攝班 大二 的 同學 故事 更加 精彩 這時 的 他們 褪去 了 大 一 的 青澀 迎來 大學 中 成長 速度 最快 的 一年 九個 人 開啓 了 各自 的 夢想 並 在 跌跌撞撞 中 實現 本身 的 夢想 又 是 一年 大學 時光 的 流逝 九位 同學好友 之間 的 情誼 愈來愈 濃

so easy 吧,如今讓咱們看一下剛剛到底發生了些什麼.net

分詞引擎

在調用worker()函數時,咱們實際是在加載jiebaR庫的分詞引擎。jiebaR庫提供了7種分詞引擎。3d

  • 混合模型(MixSegment) type="mix" :是四個分詞引擎裏面分詞效果較好的類,結它合使用最大機率法和隱式馬爾科夫模型。
  • 最大機率法(MPSegment) type="mp" :負責根據Trie樹構建有向無環圖和進行動態規劃算法,是分詞算法的核心。
  • 隱式馬爾科夫模型(HMMSegment) type="hmm" :是根據基於人民日報等語料庫構建的HMM模型來進行分詞,主要算法思路是根據(B,E,M,S)四個狀態來表明每一個字的隱藏狀態。 HMM模型由dict/hmm_model.utf8提供。分詞算法即viterbi算法。
  • 索引模型(QuerySegment) type="query" :先使用混合模型進行切詞,再對於切出來的較長的詞,枚舉句子中全部可能成詞的狀況,找出詞庫裏存在。
  • 標記模型(tag) type="tag" 
  • Simhash模型(simhash) type="keywords" :對中文文檔計算出對應的simhash值。simhash是谷歌用來進行文本去重的算法,如今普遍應用在文本處理中。Simhash引擎先進行分詞和關鍵詞提取,後計算Simhash值和海明距離(詳情點擊)。
  • 關鍵詞模型(keywods) type="simhash" :關鍵詞提取所使用逆向文件頻率(IDF)文本語料庫能夠切換成自定義語料庫的路徑,使用方法與分詞相似

通常狀況下,使用默認引擎(混合模型)就足夠了。

下面讓咱們仔細研究如下work()函數

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, 用戶權重

work()函數的默認配置:

若是咱們想改變分詞引擎的配置項,能夠在調用worker()建立分詞引擎時,也能夠經過wk$XX來進行設置

 

自定義用戶詞典

編寫自定義的詞典文件,mydict.utf8

而後,在調用worker時設置自定義的用戶詞典  wk=worker(user="mydict.utf8") 

再次對like.txt執行分詞,獲得的結果以下:

【自定義詞典結果】

【默認詞典結果】

duang,是否是頗有效果

 

此外,過濾中止詞的本質與自定義詞典是同樣的啦,只要把中止詞的默認文件換成本身的中止詞文件就好啦

例如將參數改成: stop_word="stop.txt" 

此外此外,還可能須要去除數據字母,可用正則表達式,用stringr包去除空格等

 計算詞頻

jiabaR包中有自動計算獲取詞頻的函數,freq()

那文件怎麼辦呢???那就須要讀取分詞後的文件處理一下,再統計詞頻了

其實也就是一句代碼的事情,啊不,兩句。以上面like.txt分詞後的文件like_segment.txt爲例

 out=file("like_segment.txt")  

 freq(strsplit(readLines(out,encoding="UTF-8")," ")[[1]]) 

注意:freq的參數是向量。此外,統計詞頻還能夠用table()函數

詞性標註

詞性標註可使用worker函數的type參數,type默認爲mix,僅需將它設置爲tag便可

jiebaR包關於詞典詞性標記,採用ictclas的標記方法。ICTCLAS 漢語詞性標註集。標註及含義:

   標註       詞性       標註       詞性   
a 形容詞 Ag 形容詞素
n 名詞 Ng 名詞詞素
nr 人名 m 數詞
 d  副詞  Dg  副詞詞素
 c  連詞  e  嘆詞
 nr  人名  ns  地名
 t  時間詞  nt  機構團體

更多的詞性標記對應請見:點擊

此時,文件操做與此相同。 wk<="like.txt" 便可

提取關鍵字

依舊能夠經過改變worker()的type參數便可

 其中,keywords時, wk<=words 等同於 vector_keywords(words,wk) , keywords(words,wk) 

simhash與之類似。

此外,文件分詞操做與此相似。

其餘操做

此外,jiebaR中還有可能會用到的函數:

一、在默認用戶詞典的基礎上,添加新的用戶詞 new_user_word ,但僅做用於當前分詞引擎

二、停用詞過濾函數:filter_segment(分詞後的向量,過濾詞向量)

三、顯示詞典路徑: show_dictpath() 

四、分詞的快速模式 qseg (quick segmentation) qseg<=text 

五、在線jiebaR分詞:https://qinwf.shinyapps.io/jiebaR-shiny/

六、get_tuple() 返回分詞結果中 n 個連續的字符串組合的頻率狀況,能夠做爲自定義詞典的參考

相關文章
相關標籤/搜索