一、背景
準備對《水滸傳》中人物關係進行探索,無奈《水滸傳》詞庫只有三種型別資料:天魁星呼保義宋江、呼保義宋江、宋江,無法對」天魁星「、」呼保義「進行分詞,故需要進行預處理,現對此問題進行處理。
二、技術路線
思路:觀察現有資料,天罡地煞資料格式規範,容易獲取,江湖稱號(」呼保義「)稍微複雜,現利用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...