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

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

M,固定的,是吗?

documenti,中的i,是txt的文件名吗?

txt中的内容都是一行吗?

能提供几个文件测试吗,放到百度网盘即可。

--

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

测试文件的内容:

1.bat代码如下:

@echo off

setlocal ENABLEDELAYEDEXPANSION

rem p变量为语料库文件所在的目录

set "p=.\list"

set "tmp="

set "result="

>>.\result.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!

>>..\result.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]= [数字地球] [信息技术] [信息资源] [空间数据] [地球] [信息] [数据] [处理] [数字] [体系] [人们] [全球] [技术]

批处理对话框:

# -*- coding: utf8 -*-

import csv

l = [['1', 'Wonderful Spam'],['2', 'Lovely Spam']]

#模拟数据写入一个csv

with open('eggs.csv', 'w', newline='') as csvfile:

    spamwriter = csv.writer(csvfile, delimiter=',',

                            quotechar='"', quoting=csv.QUOTE_MINIMAL)

    for row in l:

        spamwriter.writerow(row)

#从文件读取

l=[]

with open('eggs.csv', newline='') as csvfile:

     spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')

     for row in spamreader:

         l = l + [row]

#把两列拼接增加为第三列写回到文件

with open('eggs.csv', 'w', newline='') as csvfile:

    spamwriter = csv.writer(csvfile, delimiter=',',

                            quotechar='"', quoting=csv.QUOTE_MINIMAL)

    for row in l:

        print(row)

        spamwriter.writerow(row + [row[0]+row[1]])

是的,大规律检索是不能通过数据库的。

检索的时候不能通过数据库的查询来完成。

这个东西涉及到搜索引擎的相关技术。

你可以写一个小程序试试,假设每篇文章 2000个汉字,有500万篇,都存入数据库,你检索一下试试?

这涉及到分词技术,分词索引,分词的反向索引..

这些技术通常都是保密的。要不然google,百度它们也不会这么有实力,就因为掌握到了这些技术。

之所以这么麻烦,都因为中文语法的特殊性...


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9930608.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存