批处理中文分词的实现(甲兵时代批处理原创)

该博客介绍了如何使用批处理实现中文分词,通过正向最大匹配法和交集型词语匹配,对输入的自然语言进行关键词提取,提供了一种简单的中文处理方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

技术有限,但经过不懈努力,终于实现了批处理对自然语言的初步理解——提取关键词

批处理中文分词之正向最大匹配法

@echo off&setlocal enabledelayedexpansion
:fjjz
cls
set /p inf=    你对电脑说:
echo.
cd.>S.TXT
for /l %%i in (0,1,100) do (
set strdd=!inf:~%%i,4!&if defined strdd set strddo=!strdd:~3,1!&if defined strddo   for /f "tokens=1,*" %%a in (dictionary.txt) do if "%%a"=="!strdd!" echo 4 %%i %%a %%b      %%i,4
set strcc=!inf:~%%i,3!&if defined strcc set strcco=!strdd:~2,1!&if defined strcco   for /f "tokens=1,*" %%e in (dictionary.txt) do if "%%e"=="!strcc!" echo 3 %%i %%e %%f      %%i,3
set strbb=!inf:~%%i,2!&if defined strbb set strbbm=!strbb:~1,1!&if defined strbbm   for /f "tokens=1,*" %%x in (dictionary.txt) do if "%%x"=="!strbb!" echo 2 %%i %%x %%y      %%i,2
set straa=!inf:~%%i,1!&if defined straa for /f "tokens=1,*" %%m in (dictionary.txt) do if "%%m"=="!straa!" echo 1 %%i %%m %%n       %%i,1
)>>S.TXT
set var=-1
echo 切分结果:
echo.
:lp
set /a var+=1
for /f "tokens=1,2,3,*"   %%i in (S.txt) do (
if !var!==%%j (
set /p k= 【%%k】<nul
rem echo %%k 1
set /a var=%%j+%%i
)
)
if %var% lss 30 goto lp
echo.
echo.
pause
goto fjjz

———————————————————————————————————————————————

批处理中文分词之交集型词语匹配

@echo off&setlocal enabledelayedexpansion
::交叉词匹配,包含正向最大匹配。效率有点差,但功能实现了。
::注意更新字典。字典基本格式“学生 名 身份”。

::使用其它TXT词库也可以,但词库太大效率特差,切分一句话要一分钟!!!
:fjjz
cls
set /p inf=    你对电脑说:
cd.>S.TXT
for /l %%i in (0,1,100) do (
set strdd=!inf:~%%i,4!&if defined strdd set strddo=!strdd:~3,1!&if defined strddo   for /f "tokens=1,*" %%a in

(dictionary.txt) do if "%%a"=="!strdd!" echo 4 %%i %%a %%b      %%i,4
set strcc=!inf:~%%i,3!&if defined strcc set strcco=!strdd:~2,1!&if defined strcco   for /f "tokens=1,*" %%e in

(dictionary.txt) do if "%%e"=="!strcc!" echo 3 %%i %%e %%f      %%i,3
set strbb=!inf:~%%i,2!&if defined strbb set strbbm=!strbb:~1,1!&if defined strbbm   for /f "tokens=1,*" %%x in

(dictionary.txt) do if "%%x"=="!strbb!" echo 2 %%i %%x %%y      %%i,2
set straa=!inf:~%%i,1!&if defined straa for /f "tokens=1,*" %%m in (dictionary.txt) do if "%%m"=="!straa!" echo 1 %%i %%m %

%n       %%i,1
)>>S.TXT
cd.>zk1.txt
set var=-1
:lp
set /a var+=1
for /f "tokens=1,2,3,*"   %%i in (S.txt) do (
if !var!==%%j (
set /p k= %%k<nul
set /a var=%%j+%%i
)
)>>zk1.txt
if %var% lss 30 goto lp
echo.
cd.>zk2.txt
for /f "tokens=1,2,3,*"   %%a in (S.txt) do if %%a==2 set /p s= %%c<nul>>zk2.txt
set /p wj=<zk1.txt
set /p wj1=<zk2.txt
for    %%i in (!wj!) do (
for    %%a in (!wj!) do (
set dfa=%%i
set ahe=!dfa:~2,1!
for    %%e in (!wj1!) do (
for    %%x in (!wj1!) do (
if defined ahe if "%%i%%a"=="%%e%%x" set vdae=%%e&set vdaea=%%x&set vdbe=%%i&set vdbea=%%a
)
)
)
)
echo.
set /p lied=<zk1.txt
for   %%i in (!lied!) do (
if "%%i"=="!vdbe!" (echo !vdae! !vdaea!) else (if not "!vdaea:~1,1!"=="%%i" echo %%i)
)
echo.
pause
del zk1.txt,zk2.txt
goto fjjz

———————————————————————————————————————————————

测试题目

我喜欢坐在面包车上一边吃面包一边看北京天安门门楼的门
我喜欢坐在面包车上一边吃面包一边看北京大学生活动中心门楼的门
我喜欢坐在面包车上一边吃面包一边看北京大学生活在音乐里
我喜欢坐在面包车上一边吃面包一边看北京大学生活很好
我喜欢坐在面包车上一边吃面包一边看北京大学的学生生活在音乐里
我喜欢坐在面包车上一边吃面包一边看北京大学的学生活在音乐里
广西大学生活很好
我喜欢吃鸭肉
伟大学生生活
大学生活动
大学生活好
大学生活动中心
发展中国家庭养猪事业
你说的确实在理

本篇为原创,转载请注明出处。 http://hi.baidu.com/cjiabing 甲兵时代,为你服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值