技术有限,但经过不懈努力,终于实现了批处理对自然语言的初步理解——提取关键词
批处理中文分词之正向最大匹配法
@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 甲兵时代,为你服务。