纯文本文件的奇偶行分离器和合并器

李亮1975重庆

语料库快乐军政委
适用场合】当你搜集的语料文件或翻译文件(例如“英汉对照.txt”)是第一个自然段是英语,第二个自然段是中文,第三个自然段又是英语,第四个自然段是中文,而你希望把中文段落按照顺序都提取出来存入另一个文件(例如“中文.txt”),同时也把英文段落也提取出来存入另一个文件(例如“英文.txt”)。或者,你面对两个文件恰好是上面情况的结果文件,而你希望合并这两个文件,那么就是本帖所推出的两个小软件的处理范围了。做平行语料库的朋友,经常有这样的需求。

文件奇偶行分离器.exe

【安装】免安装,一定要解压缩软件到一个文件夹或桌面,而不能直接在压缩包中双击;如果你直接在压缩包双击本软件,那么它就被解压缩到C盘的临时文件夹,那么,处理完毕你就找不到处理结果躺在哪里了;
【使用】双击,让你选择一个文本文件,就自动把里面的第1行、第3行、第5行……都存入“奇数行.txt”;而同时,第2行、第4行、第6行……都被存入“偶数行.txt”;运行完毕,会提示“处理完毕”,你就会看到当前软件所在的文件夹出现“奇数行.txt”和“偶数行.txt”,就是分离结果了;处理速度每秒数兆,能处理MB和GB级的大型TXT文件;

文件奇偶行合并器.exe
【安装】免安装,一定要解压缩软件到一个文件夹或桌面,而不能直接在压缩包中双击;如果你直接在压缩包双击本软件,那么它就被解压缩到C盘的临时文件夹,那么,处理完毕你就找不到处理结果躺在哪里了;
【使用】双击,让你选择两个文本文件,就自动把你选择的两个文件进行上面的分离器的逆过程;运行完毕,会提示“处理完毕”,就在会当前软件所在的文件夹出现“合并.txt”,就是合并结果了;处理速度每秒数兆,能处理MB和GB级的大型TXT文件;

【百度网盘下载】
http://pan.baidu.com/s/1dD689sl

36款杀毒引擎的扫描结果:无毒
http://r.virscan.org/6ffb2f130e02b88370c31f95f4631994


 
回复: 纯文本文件的奇偶行分离器和合并器

但是如果是第一行是一种语言,第二行是另外一种语言也是可以的么??
 
回复: 纯文本文件的奇偶行分离器和合并器

只要是硬回车就是一个自然段,就可以了。
 
回覆: 纯文本文件的奇偶行分离器和合并器

李博的工具就是实用、好用,谢谢!
 
回覆: 纯文本文件的奇偶行分离器和合并器

目前似乎只处理编码为Ansi的语料。
 
回覆: 纯文本文件的奇偶行分离器和合并器

但在转码过程中有的字符一转就出现“?“甚至乱码现象。
 
两款都不行的话,把样本文件传上来,我研究下

我可以立即推出更强的转码器咯,哈哈;
乱码的准确位置也标识下,免得我万一发现不了。
 
你把源文件的不乱码的部分都删除,再上传这样的源文件转码后的效果

这样,乱码的字符就一目了然了
 
样本有没有

armstrong,你提到的文本文件转码变成问号之类的乱码,你还有那样的文本文件么,提供一个样本的话,我可以研究下,你上传到帖子的附件就行。
 
回覆: 纯文本文件的奇偶行分离器和合并器

昨天操作时产生乱码的文件,当时就给删除了,没有保存。这里有两个文件,是同一个文件只是编码不一样,将Unicode转化成Ansi时出现问号。
 

附件

  • Unicode.txt
    3.8 KB · 浏览: 1
  • Ansi.txt
    1.9 KB · 浏览: 1
某些字符本质上无法保存为ansi

研究了下样本包,发现了“?”这样的字符,其实,这样的字符你就是自己手工操作在“记事本”中把当前unicode编码的文本文件另存为“ANSI”也会变成一个问号之类的乱码的,同时在你保存为ANSI的时候,“记事本”都会提醒你“即将导致乱码”的,你手工试下保存那份unicode文本就会有这个提醒的。所以,这种情况是不能也无法用ANSI来手工或自动转码的,只能保存保持为unicode或utf8之类的兼容的文字编码格式。所以,整个互联网的网页都是utf-8格式的,这就是unicode的初级模式,而unicode的中级模式是unicode 16,而高级模式是unicode 32。所以,当前的全球互联网的文字编码还处于较低水平,等硬件软件各方面更成熟就会走向16和32位的。
 
回复: 纯文本文件的奇偶行分离器和合并器

多谢李博分享!
我一般都是用Excel的“筛选”功能分离中英对照的文本,就是奇数行编号为1,偶数行编号为2,这样“1 2 1 2 1 2 ...”,然后分别筛选1、2,即分别对应中文和英文。操作过程中发现错误还可以比较直观地进行修改。
关于1 2 1 2 1 2 ...,可以自己保存一个分类专用栏,也可以用Alt+F11调用VBA编程,将若干行批量编号为1、2、1、2...
另外,利用硬回车做中英文分离需要注意的一个问题是,有时候会出现段落间空行。这就可以用许家金博士等在《语料库应用教程》中推荐的“文本整理器”,在分离之前批量去除段落间空行。
 
回复: 纯文本文件的奇偶行分离器和合并器

曽经花过时间弄这档子事,后来找到awk菜谱,都是一句awk搞定

分离:
en-zh-test.txt 英中行交叉, 运行下列awk命令行后 newfile1.txt含英文 newfile2.txt含中文

Windows gnuawk
单号行
awk "(NR)%2 {print > ""newfile1.txt""""}" en-zh-test.txt
双号行
awk "(NR+1)%2 {print > ""newfile2.txt""""}" en-zh-test.txt

Linux/cygwin
单号行
awk '(NR)%2 {print > "newfile1.txt"}' en-zh-test.txt
双号行
awk '(NR+1)%2 {print > "newfile2.txt"}' en-zh-test.txt

合并:
(以tab ""\t""""或"\t"分开,如需空格隔开就改成"" """"或" ")
Windows gnuawk
awk "NR==FNR{a[FNR]=$0;next} {print a[FNR]""\t""""$0}" file1 file2 > file12

Linux/cygwin
awk 'NR==FNR{a[FNR]=$0;next} {print a[FNR]"\t"$0}' file1 file2 > file12
 
看来gawk之类的awk是语料转换与语料提取中的利器

如果系统总结出在语料实践中最实用的awk语句几十条,无疑是制造了几十个小软件!
或者做个嵌入了gawk的独立exe,提供菜单上的预置的常用awk语句组合而实现各种功能。
 
Back
顶部