受教李亮博士:随机抽取语料库文件夹中N个文件构建子库方法

[FONT=宋体]各位[/FONT]C[FONT=宋体]友好,上次发帖问及利用[/FONT]sub-corpus creator[FONT=宋体]抽取文件创建子库的方法,随即又问了另一个相关却不相同的新问题,大致如下:[/FONT]
[FONT=宋体]我要抽取[/FONT]WECCL2.0[FONT=宋体]中英语专业([/FONT]STU1[FONT=宋体])二年级([/FONT]GRADE2[FONT=宋体])的作文文件,这个很容易做到,[/FONT]2.0[FONT=宋体]书自带的软件很好提取,现在提出来[/FONT]2075[FONT=宋体]个符合条件的文件,但形符数多达[/FONT]55[FONT=宋体]万以上,我想从中抽五分之一[/FONT]415[FONT=宋体]个文件,确保形符数[/FONT]10-12[FONT=宋体]万,因为这时文件名已经不是最初总库的顺序了,不能再用[/FONT]sub-corpus creator[FONT=宋体]软件等距抽取确保随机性了,那么如何在文件夹中随机抽取文件呢?[/FONT]
[FONT=宋体]在求教广外李亮博士之后,李博士慷慨指导我一小时有余(外加其他学术交流两小时),搞定了随机抽样,次日又来[/FONT]Q[FONT=宋体]电,编写了一款更为友好的软件专司其职(建议怕困难的新手采用方法二,特简单!),在李亮的授权下,我来汇报一下学习心得,以示对他的感谢![/FONT]
[FONT=宋体]方法一:随机抽取[/FONT]415[FONT=宋体]个文件到新建文件夹[/FONT]
Step 1[FONT=宋体]:获取所有文件文件名简要信息[/FONT]
[FONT=宋体]在原文件夹(含[/FONT]2075[FONT=宋体]个文件)新建[/FONT]”. txt”[FONT=宋体]文档,打开输入源代码“[/FONT]dir *.txt /b > OK.log[FONT=宋体]”,保存关闭,并将该文件扩展名[/FONT]”. txt”[FONT=宋体]改成[/FONT]”.bat”[FONT=宋体],双击该文档,此时执行了一次“批处理”,即是把原文件夹中的文件名简要信息抽取并复制到改文件夹内一个新的“[/FONT]OK.log[FONT=宋体]”的文件,这里的“[/FONT]OK[FONT=宋体]”可以是任意的,“[/FONT]log[FONT=宋体]”扩展名其实就是和“[/FONT]txt[FONT=宋体]”以示区别,本质上还是记事本文件。[/FONT]
[FONT=宋体]图一:原文件夹中文件名等信息[/FONT]

[FONT=宋体]图二:“批处理”生成的“[/FONT]OK.log[FONT=宋体]”文档中文件名的简要信息[/FONT]

Step 2[FONT=宋体]:用“李亮版随机抽取软件”抽取[/FONT]415[FONT=宋体]个文件[/FONT]
[FONT=宋体]将图二所示的“[/FONT]OK.log[FONT=宋体]”文档中文件名信息复制到“李亮版随机抽取软件”(李亮授权,贴末附上),打开的[/FONT]WORD[FONT=宋体]文档中启用“宏”功能后会出现“随机抽样”按钮,点开选择“删除型[/FONT]N[FONT=宋体]次抽样”,输入抽取的数值如“[/FONT]415[FONT=宋体]”,会自动生成另一个[/FONT]WORD[FONT=宋体]文档,含有被随机抽取的[/FONT]415[FONT=宋体]个文件的文件名信息,暂时命名为“样本名文档”。[/FONT]
Step 3[FONT=宋体]:“批处理”拷贝被抽取的[/FONT]415[FONT=宋体]个文件到制定文件夹[/FONT]
[FONT=宋体]首先,打开一个“[/FONT]EXCEL[FONT=宋体]”文件,将“样本名文档”中的文件名复制到表格[/FONT]A[FONT=宋体]列,在[/FONT]B1[FONT=宋体]单元格输入“[/FONT]copy[FONT=宋体]”,在[/FONT]C1[FONT=宋体]单元格输入“[/FONT]out[FONT=宋体]”([/FONT]out[FONT=宋体]命名可随意,是要把抽取文件放入的文件夹名,注:抽样器抽取的是[/FONT]415[FONT=宋体]个文件名,我们还需要把对应的[/FONT]415[FONT=宋体]个文件放到指定文件夹哦![/FONT][FONT=宋体]),点击[/FONT]D1[FONT=宋体],之后在“[/FONT]EXCEL[FONT=宋体]”表格输入公式的地方输入“[/FONT]=CONCATENATE (B1,” “,A1,” ”, C1)[FONT=宋体]”,此时[/FONT]D1[FONT=宋体]单元格生成的是“[/FONT]copy WARG1781.txt out[FONT=宋体]”,同时选中[/FONT]B1[FONT=宋体]、[/FONT]C1[FONT=宋体]、[/FONT]D1[FONT=宋体],将光标定位选中框右下角,变成小“十”字后拖动光标至所有的[/FONT]415[FONT=宋体]行,复制[/FONT]D1[FONT=宋体]单元格的命令。得到如图所示[/FONT]


[FONT=宋体]其次,在[/FONT]2075[FONT=宋体]的原文件夹再次建立一个[/FONT]txt[FONT=宋体]文档,将上表[/FONT]D[FONT=宋体]列的信息复制到该文档,保存关闭。在文件夹下建立一个子文件夹,以“[/FONT]out[FONT=宋体]”命名(可以另外命名,但上一步要和这个命名一致)然后类似于[/FONT]Step1[FONT=宋体]将文件扩展名名修改为[/FONT]”.bat”[FONT=宋体],双击便执行了另外一次“批处理”,完毕后打开新建的“[/FONT]out[FONT=宋体]”文件夹,[/FONT]415[FONT=宋体]个抽取的文件已经列队在此啦![/FONT]

[FONT=宋体]方法二:使用“李亮版随机删除器”随机删除指定数量外的文件(等于是随机抽取了指定数量)[/FONT]
[FONT=宋体]将李亮特为“随机抽取文件夹中一定数量文件”目的编写的[/FONT]VBS[FONT=宋体]软件(李亮授权,贴末附上)拷贝到原文件夹,双击后边要求输入随机删除文件的数量([/FONT]2075-415=1660[FONT=宋体]),输入[/FONT]1660[FONT=宋体],就会随机删除[/FONT]1660[FONT=宋体]个文件,剩下的即可视为被随机抽取的[/FONT]415[FONT=宋体]个啦。这个方法太方便啦,难怪[/FONT]Biber[FONT=宋体]等([/FONT]1998: 16[FONT=宋体])要鼓励语料库研究者学习编程呢![/FONT]

[FONT=宋体]至此,[/FONT]Mission completed! [FONT=宋体]不知道我汇报的是否到位。[/FONT]

[FONT=宋体]再次感谢李亮博士的谆谆教导和慷慨分享!(帖子原文及软件请见本人自己发布的第一条回复!)[/FONT]
 
Last edited:
回复: 受教李亮博士:随机抽取语料库文件夹中N个文件构建子库方法

截图没有显示,和软件打包一并附上,请感兴趣C友下载!Please give credit to Dr. Li Liang.
 

附件

  • 随机抽取文件夹中N个文件(软件及截图).rar
    81.4 KB · 浏览: 112
Last edited:
回复: 受教李亮博士:随机抽取语料库文件夹中N个文件构建子库方法

李亮博士对我啰嗦汇编的精辟总结:“整个做法的最简要原理是:从全部文件名列表中随机生成自己需要的数量的文件名列表,让DOS命令去把这些文件拷贝到另一个文件夹!
整个做法的较详细原理是:1获取全部文件列表,2通过随机删除全部文件中的额外数量的文件名而留下自己需要数量的随机文件名,3在excel中通过concatenate()函数而制作出针对剩余文件名的全套dos指令,4把excel产生的全套dos指令保存到一个新建的bat文件中,5准备一个专门的文件夹“out”在全体文件所在的文件夹,6双击bat文件就把所有文件中的所需的随机文件都被dos指令拷贝到“out”文件夹了。”
 
回复: 受教李亮博士:随机抽取语料库文件夹中N个文件构建子库方法

Thanks a lot for sharing.
 
回复: 受教李亮博士:随机抽取语料库文件夹中N个文件构建子库方法

是呀,学点编程,很有用,VBA就可以。。。
 
Back
顶部