找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26667|回复: 6

[文本处理] 如何用批处理BAT统计txt文档相似度?

[复制链接]
发表于 2014-3-19 17:37:20 | 显示全部楼层 |阅读模式
文档容量太大,已切割成1000000行n个txt文档,为了把相似度述说清楚,附件中用数字来代替需求,就像附件a.txt

文档中的数字,任意5个数字相同的行就提取进行统计,把结果写入b.txt文档中。谢谢大家!
a.txt

  1. 05 06 07 08 09 25
  2. 05 06 07 08 09 26
  3. 05 06 07 08 09 27
  4. 05 06 07 08 09 28
  5. 05 06 07 08 09 29
  6. 05 06 07 08 09 30
  7. 05 06 07 08 09 31
  8. 05 06 07 08 09 32
  9. 05 06 07 08 09 33
  10. 05 06 07 08 10 11
  11. 05 06 07 08 10 12
  12. 05 06 07 08 10 13
  13. 05 06 07 08 10 14
  14. 05 06 07 08 10 15
  15. 05 06 07 08 10 16
  16. 05 06 07 08 10 17
  17. 05 06 07 08 09 25
  18. 05 06 07 08 09 26
  19. 01 02 03 04 05 06
  20. 01 02 03 04 05 07
  21. 01 02 03 04 05 08
  22. 01 02 03 04 05 09
  23. 01 02 03 04 05 10
  24. 01 02 03 04 05 11
  25. 01 02 03 04 05 12
  26. 01 02 03 04 05 13
  27. 01 02 03 04 05 14
  28. 01 02 03 04 05 15
  29. 01 02 03 04 05 16
  30. 01 02 03 04 05 17
  31. 01 02 03 04 05 18
  32. 01 02 03 04 05 19
  33. 01 02 03 04 05 20
  34. 01 02 03 04 05 21
  35. 01 02 03 04 05 22
  36. 01 02 03 04 05 23
复制代码
b.txt

  1. 01 02 03 04 05  18
  2. 05 06 07 08 09  11
  3. 05 06 07 08 10  7
  4. 06 07 08 09 25  2
  5. 06 07 08 09 26  2
复制代码
b.txt中第6列数是统计次数
发表于 2014-3-19 21:21:34 | 显示全部楼层
以顶楼a.txt为例,生成的b.txt应该是这样吧?
06 07 08 09 25 2
05 07 08 09 25 2
05 06 08 09 25 2
05 06 07 09 25 2
05 06 07 08 25 2
05 06 07 08 09 11
06 07 08 09 26 2
05 07 08 09 26 2
05 06 08 09 26 2
05 06 07 09 26 2
05 06 07 08 26 2
05 06 07 08 10 7
01 02 03 04 05 18
发表于 2014-3-19 22:53:36 | 显示全部楼层
统计文本的相似度,这是高端大气上档次的玩意,就好像搞原子蛋一样,而bat貌似茶叶蛋吧,呵呵。

搞原子蛋,是极难的!
文本是有单词,行,段落,等组成的,这就要分词功能,还要有字典,字典大小还要不能太小,其中的智能化,谁又会写这块功能?

不可否认的是 统计文本的相似度,是压缩文本文件的必要课题。
1 你应研究半年winrar源码,搞懂其中的智能话原理。
旁白:我有一个1g的纯数字文本文档,用winrar5压缩完了是1.4m,用7-zip lzma2 +最大字典压缩完了是15.8m
2或许【智能化代码】+powershell+盘古分词。net 是一个靠谱的决定。
发表于 2014-3-20 10:52:56 | 显示全部楼层
字符串相似度算法 Levenshtein Distance 大全
http://rosettacode.org/wiki/Levenshtein_distance

统计文本的相似度没有找到
发表于 2014-3-20 19:25:14 | 显示全部楼层
也可以做,只是很罗嗦而已!~
最好能看到原始样本,如果不方便,你可以找个人私聊帮忙解决。
发表于 2014-3-23 22:15:26 | 显示全部楼层
本帖最后由 web 于 2014-3-24 16:59 编辑

任意5个数字相同的行就提取进行统计
不好意思没看清题意  可以试试  findstr /c:



  1. for /f " delims="  %%s in (b.txt) do (
  2. findstr /c:"%%s" a.txt >>次数.txt
  3. )
复制代码
如何统计b里边每行数在a里边每行包含出现的次数        给出代码




如果全部相同以下代码可以


参考这里吧http://bbs.bathome.net/thread-24860-1-1.html

  1. @echo off&setlocal enabledelayedexpansion
  2. sort 5.txt | findstr . >temp.tx
  3. set /pstr=<temp.tx
  4. set num=1000000001
  5. (for /f "skip=1 delims=" %%i in (temp.tx) do (     
  6.     if "!str!" neq "%%i" (
  7.        echo;!num:~1!  !str!
  8.        set num=1000000001
  9.     ) else set /a num+=1
  10.       set str=%%i
  11. )
  12.        echo;!num:~1!  !str!
  13. )>sort.txt
  14. sort /r sort.txt >temp.tx
  15. (for /f "tokens=* delims=0" %%i in (temp.tx) do echo;%%i)>sort.txt
  16. del temp.tx

复制代码
terse

  1. @(gawk "{ar[$0]+=1000001}END{for(i in ar)print substr(ar[i],length(ar[i])-5,6) ":" i}" | sort | sed "s/^0*\([0-9]\)*:\(.*\)$/\2    \1/")<aa.txt >11.txt
复制代码
复制代码gawk 和 sed 是第三方命令,自己下一个吧
CrLf
发表于 2014-3-27 19:28:51 | 显示全部楼层
有高手给你解决问题了去看看吧
http://www.bathome.net/viewthrea ... mp;page=1#pid146236
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 01:04 , Processed in 0.023269 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表