R 文字處理 分詞

2021-06-21 20:15:40 字數 1756 閱讀 7369

一、背景

準備對《水滸傳》中人物關係進行探索,無奈《水滸傳》詞庫只有三種型別資料:天魁星呼保義宋江、呼保義宋江、宋江,無法對」天魁星「、」呼保義「進行分詞,故需要進行預處理,現對此問題進行處理。

二、技術路線

思路:觀察現有資料,天罡地煞資料格式規範,容易獲取,江湖稱號(」呼保義「)稍微複雜,現利用r及其文字挖掘工具進行處理。

工具:r、rwordseg包

三、過程

1. 處理天罡地煞詞項

#定義資料讀取函式

get.content<-function(file.path)

#處理天罡地煞資料

sh.heros<-get.content('水滸人物.txt')

sh.heros<-sh.heros[1:108] #前108行為 "天魁星呼保義宋江"型資料,故擷取

sh.heros<-substr(sh.heros,1,3)

write.table(sh.heros,'sh_words1.txt',sep='\n',row.names=false,col.names=false,quote=false)

2. 處理江湖稱號詞項

江湖稱號資料獲取的主要阻礙在於姓名長短不一,無法採用像天罡地煞資料的處理方式直接通過子字串獲得。 由於現有分詞包能對人物姓名進行切分,因此考慮採用分詞技術:獲取」呼保義宋江「型資料,分詞後得到乙個由分出的各詞項組成的列表,去除每個向量最後乙個元素後對每個向量進行拼接,即是江湖稱號資料。

#載入所需包

library(tm)

library(rwordseg)

#讀取現有資料

shuihu.names<-get.content('水滸人物.txt')

insertwords(c(shuihu.names[209:length(shuihu.names)])) #將現有人物姓名作為臨時分詞,原檔案第209個開始起為"宋江"型資料

name.terms<-segmentcn(shuihu.names)

hero.names<-name.merge[-which(name.merge=='na')]

hero.names<-hero.names[109:length(hero.names)]

write.table(hero.names,'sh_words2.txt',sep='\n',row.names=false,col.names=false,quote=false)

#拼接函式

merge.element<-function(a)

3. 合併資料  

words.1<-get.content('水滸人物.txt')

words.2<-get.content('sh_words1.txt')

words.3<-get.content('sh_words2.txt')

words<-c(words.1,words.2,words.3)

write.table(words,'水滸人名.txt',sep='\n',row.names=false,col.names=false,quote=false)

4. 如何利用?

(1)  採用rwordseg包中insetwords()函式將資料作為臨時分詞詞項使用

(2)  將資料匯入目錄 「 r_home/library/rwordseg/dict " 中字尾名為" .dic" 檔案中,利用loaddict()載入分詞資料,持久使用

shell文字處理

最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...

WML 文字處理

wml使用xml文件字符集,目前支援unicode 2.0,和hdml不同,wml的所有標籤,屬性和規定的可接收值必須小寫,card的名字和變數也是區分大小寫的。和hdml一樣,對於連續的空字元,只顯示乙個空格。標籤內屬性的值必須用 或者 括起來,屬性名,和值之間不能有空格。對於不成對出現的標籤,必...

shell 文字處理

最近優化指令碼,將幾套指令碼合併,比如,處理nand手機的指令碼和處理emmc手機的指令碼是不一樣的,這導致我們的指令碼有很多個版本。手機側只有busybox,所以不能使用功能強大的python來處理文字。花了半天時間,發現雖然語法比較怪異,但也能簡潔的完成任務。if e proc emmc the...