根據文本語料生成詞典、每行行首加唯一id

將文本語料分詞後,可以得到

$ head -n 6 train.txt

現在  方便  聽電話  嗎  
許加  說  今天晚上  開始  搶  課  
白  詛咒  的  旋律  
我的  遊戲  遊戲中心  
難道  是  我  發音  不  標準  嗎  
除了  實體店  網上  回收  禮品店  也  不在少數


我用到的方法是將空格變成換行符,得到一個有很多重複詞的詞典,然後用sort -u 將重複項去除,如下:

$ cat train.dat dev.dat test.dat > vocab.word.repeat

$ vim vocab.word.repeat

全局替換:%s:  :\r:g

保存:wq

$sort -u vocab.word.repeat >vocab.word


然後給每行行首加上一個唯一id

vim內部有內置命令如 line(),可以方便的利用line函數進行一些行號相關的操作,用法可以查看幫助 :h line()
當替換字符串以“\=”開頭時,表示以表達式的計算結果作爲替換值。

:%s:^:    :g

:%s/^/\=line(".") - 1/


但這種方法只適用於文本很短時,當文本較長時,在vim中會非常卡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章