R語言jiebaR包的分詞學習

2022-08-22 08:24:11 字數 3613 閱讀 4675

實訓中的自然語言處理部分,首先就是要分詞了,學習一下!

使用jiebar的第一步當然是安裝jiabar包並載入咯

安裝: install.packages("jiebar")    載入:  library(jiebar)

三種分詞語句的寫法:

wk = worker()

#方法1

wk["我希望未來會很好"]

#方法2

wk<="我希望未來會很好" #此處用=的話可不行喲

#方法3

segment("我希望未來會很好",wk)

結果都是一樣的,如下

[1] "我" "希望" "未來" "會" "很" "好"

##like.txt

新的一學年開始了,結束了大一的驕傲和浮躁之後,橋川、鐘白、任逸帆等人順利進入了大二。肖海洋也通過了大一的考試,如願以償沒有留級。大一的同窗情誼依舊繼續。過了乙個假期,大二伊始,舊同學的離開和新同學的加入,讓他們之間的關係也發生了微妙變化。顧一心隨家人去了美國上學, 畢十三把這份牽掛變成了學習上奮進的動力。轉學生許連翹新轉入電攝班並貌似帶著神秘的任務。原班主任的離開,讓原本散漫的電攝班開始團結。

人物的新舊交替,和大二課業的豐富與繁重,2015級電攝班大二的同窗故事更加精彩。這時的他們褪去了大一的青澀,迎來大學中成長速度最快的一年。九個人開啟了各自的夢想,並在跌跌撞撞中實現自己的夢想。又是一年大學時光的流逝,九位同窗好友之間的情誼越來越濃。

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

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

##like.segment.2018-01-08_16_13_17.txt

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

so easy 吧,現在讓我們看一下剛剛到底發生了些什麼

在呼叫worker()函式時,我們實際是在載入jiebar庫的分詞引擎。jiebar庫提供了7種分詞引擎。

一般情況下,使用預設引擎(混合模型)就足夠了。

下面讓我們仔細研究以下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")

各引數的含義如下:

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中還有可能會用到的函式:

1、在預設使用者詞典的基礎上,新增新的使用者詞 new_user_word ,但僅作用於當前分詞引擎

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

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

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

6、get_tuple() 返回分詞結果中 n 個連續的字串組合的頻率情況,可以作為自定義詞典的參考

R語言 jiebaR中文分詞包

中文與英文做文字分析很多時候會多乙個分詞步驟,因為預設情況下,文字分析軟體會預設用空格作為分隔符處理文字,所以很多軟體需要先將中文文字分詞,整理成像英文那樣用空格間隔單詞的資料形式。在r中有乙個jiebar中文分詞包,可以幫我們做分詞操作 install.packages jiebar jiebar...

R語言shiny包的學習

乙個shiny應用可以分為兩部分 前端和後端,其實所有的shiny應用都是基於以下的模版 ui fluidpage server function input,output 其中,fluidpage中主要有兩部分 輸入函式,和輸出函式 輸入函式 輸入函式基本上都是以 input的形式,主要有以下 輸...

包r語言 R語言入門之R包的安裝

install.packages metafor 即可順利安裝該r包。install.packages biocmanager library biocmanager install edger 3 接下來便是安裝源自github 的r包了,它的步驟和安裝源自bioconductor的r包類似,需要...