永发信息网

如何把预处理(分词、去停用词)之后的语料库合成一个大文档(dat文件),最后是批处理

答案:1  悬赏:60  手机版
解决时间 2021-02-15 22:29
如何把预处理(分词、去停用词)之后的语料库合成一个大文档(dat文件),最后是批处理
最佳答案
M,固定的,是吗?

documenti,中的i,是txt的文件名吗?
txt中的内容都是一行吗?
能提供几个文件测试吗,放到百度网盘即可。




--
文件放置位置:(语料库文件在list文件夹中)



测试文件的内容:



1.bat代码如下:
@echo off
setlocal ENABLEDELAYEDEXPANSION


rem p变量为语料库文件所在的目录
set "p=.list"


set "tmp="
set "result="
>>.esult.dat echo [M]
cd %p%
for /f %%i in ('dir /a-d /b') do (
call:fun_m %%i tmp
set "result=[document%%~ni]=!tmp!"
echo !result!
>>..esult.dat echo !result!
set "tmp="

)

pause
goto:eof

:: ///////////////////////////////////////////
:fun_m
set "str="
set "strstr="
for /f "delims=" %%i in (%1) do (
call:fun_clear
call:fun "%%i"
)
set /a n=0
:fun_m_loop
set /a n+=1
set str=[!#str%n%!]
if "!str!" equ "[]" (goto:a)
set strstr=!strstr! !str!
goto:fun_m_loop
:a
set "%2=%strstr%"
goto:eof

:: ///////////////////////////////////////////
:fun_clear
set /a n=0
:fun_clear_loop
set /a n+=1
if "!#str%n%!" equ "" (goto:eof)
set "#str!n!="
goto:fun_clear_loop

goto:eof

:: ///////////////////////////////////////////
:fun
set str=%1
set str=%str:"=%
set n=0
for %%j in (%str%) do (
set /a n+=1
set #str!n!=%%j
)
goto:eof

结果如下:
批处理所在目录会生成result.dat文件



result.dat内容如下:


[M]
[document1]= [30] [29] [28] [27] [26] [25] [24] [23] [22] [21] [20] [19] [18] [17] [16] [15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1]
[document2]= [30] [29] [28] [27] [26] [25] [24] [23] [22] [21] [20] [19] [18] [17] [16] [15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1]
[document3]= [数字地球] [信息技术] [信息资源] [空间数据] [地球] [信息] [数据] [处理] [数字] [体系] [人们] [全球] [技术]
[document4]= [数字地球] [信息技术] [信息资源] [空间数据] [地球] [信息] [数据] [处理] [数字] [体系] [人们] [全球] [技术]
[document5]= [数字地球] [信息技术] [信息资源] [空间数据] [地球] [信息] [数据] [处理] [数字] [体系] [人们] [全球] [技术]批处理对话框:



追问如你list文件夹里的文本,我希望显示的结果是这样的效果,第一行的M是list文件夹里的文本个数,第二行往下就是一个文本的内容,result.dat里的一行(除第一行)代表一个文本,如下图

追答。。。你是说不需要那些格式了?你耍我呢?

追问没有呀,我上面那种格式的[docment]的[]不需要保留的,你做的基本是对的,把中括号和每一行的[docmenti]=去掉就应该对了

而且我用1.bat执行的结果是这样的


追答能给990-999.txt这几文件测试吗? 百度网盘。问个问题,关键字两遍的中括号还要吗?追问不需要中括号的,想下面这样的格式


追答好的,你那文件都是utf8-bom格式编码,用bat处理有bug。
等我吃完饭,给你写个vbs。
--
分能给多点吗追问我没有多少分吧,能加QQ聊不,我现在恢复一次要5财富值,814726225追答Dim WshShell
Dim fso, f, f1, fc
Dim count
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

folderspec = WshShell.CurrentDirectory & "list"
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
fun f1
count = count + 1
Next

Set fin = fso.OpenTextFile("tmp.dat", ForReading, True)
Set fout = fso.OpenTextFile("result.dat", ForAppending, True)
fout.WriteLine count
fout.WriteLine fin.readall
fin.Close
fout.Close

fso.DeleteFile("tmp.dat")


'///////////////////////////////////////////////////
Function fun (filename)
set stm2=createobject("ADODB.Stream")
stm2.Charset ="utf-8"
stm2.Open
stm2.LoadFromFile filename
readfile = stm2.ReadText
funWrite readfile
stm2.Close
set Stm2 = nothing
End Function

Function funWrite (filetext)
Set f = fso.OpenTextFile("tmp.dat", ForAppending, True)
f.WriteLine filetext
f.Close
End Function
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
红米授权管理在哪
【rubbish可数吗】rubbish是可数名词吗?请问r
辞退通知发送后员工到期不离职怎么处理?
喉咙有痰可以吃汤圆煮米酒吗
万科社区营地在什么地方啊,我要过去处理事情
浙江国南阀业科技有限公司我想知道这个在什么
心软也是一种病吧!
DUNK锐度祛痘的好用么
意思是心情好了看什么都好 的成语
一首歌 女声唱的 好像是讲的一个女生要嫁人了
【好爱答题】...的爱好不好为什么还有如对语
初一总分多少
形容胡琴的成语
定义新运算:2*3=9,3*4=18,10*2=21,则1*5=?
私享家公寓酒店地址在哪,我要去那里办事
推荐资讯
樟脑丸为什么会变小
在家纺上班卖窗帘具体应该注意哪些事项? 本人
吉首市湘西世纪广场网吧地址在哪里啊
夕阳红养老院在什么地方啊,我要过去处理事情
属兔87年9日初八出生的人命运
从深圳塘头到黄贝玲坐什么车
富丽超市地址在什么地方,想过去办事
让胡路区大庆市让胡路区卫生局卫生监督所怎么
怎么下载视频中的音乐??
承包大学食堂要多少钱?本科院校类。
新自由舰1.5VVT运动这车怎么样?油耗到底多少
东安县永州东安县学雷锋志愿服务站在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?