您的位置:首页 > 其它

根据文本语料生成词典、每行行首加唯一id

2017-09-14 11:37 260 查看
将文本语料分词后,可以得到

$ 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中会非常卡。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: