前言
在做語言模型時碍扔,我們通常需要對從網(wǎng)上爬取的文本進行預(yù)處理,如去標(biāo)點秕重,分詞不同,英文大小寫轉(zhuǎn)換等等,通常這些文本很大悲幅,如果只用一個進程去處理則會耗時嚴重套鹅。而這些預(yù)處理工作是可以并行處理的,最后將處理得到的文件合并在一塊即可汰具,節(jié)省大量的時間。
文本分割
按照文件大小分割
split -b [size] [input-file] -d -a [suffix-length] [output-dir+prefix]
eg:
split -b 1G lm4_03_mobile_all -d -a 2 lm4_seg/lm4_
將文件lm4_03_mobile_all 按照1G的大小分割菱魔,將分割后的文件存放在lm4_seg文件夾下留荔,命名方式為lm4_+后綴標(biāo)號,-a 2表示后綴標(biāo)號為2位澜倦,-d表示用數(shù)字編號
分割的大芯鄣:在split命令中,除了k(KB)藻治,還可以使用M(MB)碘勉、G(GB)、c(byte)桩卵、w(word)
但是在分割過程中验靡,出現(xiàn)了有的segment亂碼了倍宾,原因不明。這里推薦使用下面這種胜嗓,按照文本的行數(shù)進行分割
按照行數(shù)分割
split -l [lines-num] [input-file] -d -a [suffix-length] [output-dir+prefix]
eg:
split -l 32127784 lm4_03_mobile_all -d -a 2 lm4_seg/lm4_
對input-file按照lines-num分割高职,即分割后的每個文件有l(wèi)ines-num行(最后一個文件可能不足lines-num行)
并行處理
# 對lm4_開頭的文件進行操作
for i in lm4_*
do
{
# 這里執(zhí)行對文件的操作,比如我這里是對文件$i進行分詞處理辞州,將分詞的結(jié)果保存在wx/文件
# 夾下怔锌,方便以后進行整合
cat $i | python ../../segment.py ../../dict/dict2 > wx/${i}_seg
}& # 這個別忘了!1涔埃元!
done
wait # 這個也別忘了!C恼岛杀!
這樣就可以進行并行處理了。通過top命令哈雏,可以發(fā)現(xiàn)出現(xiàn)很多進程在進行文本處理