將文本語料分詞後,可以得到
$ 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中會非常卡。