[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]20元求词频统计

词频统计,我觉得有两种,分词和不分词。
不分词的,https://blog.ailemon.me/2017/02/ ... entation-algorithm/
我还用不来。

http://www.bathome.net/viewthrea ... hlight=%CD%B3%BC%C6
这里的方法好像可以。但是超级慢,一分钟大约20个。我的两字词的表是26万。

我的文本大约60多兆。想统计所有二字词和三字词的频率,有没有高效的办法。
谢谢!

发的两个链接是两个不同的统计方法,你要的是哪种
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

调用gawk的那个方案每分钟处理多少个?
test.bat
  1. @echo off
  2. gawk "FILENAME==\"test.txt\" {a[$0]++} FILENAME==\"lit.txt\"{printf(\"%%s有%%d次\n\",$0,a[$0])}" test.txt lit.txt >jjpc.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 lxh623 于 2019-7-30 14:27 编辑

回复 3# Batcher
上午那个没有出来,您这个很快出来了,但是,都是0次。

也许没有说明白。两个文件不一样。一个是词语,一个是诗词(一行一首)。用词语搜索诗词。

谢谢!

TOP

回复 2# zaqmlp
都可以的,只要达到结果。全部都有词频。
第一个大概自己去做一个词表。

TOP

回复 5# lxh623

不是都可以,两种处理方式不同,结果也不同
直接说明白你的文本内容是怎样的,需要怎么统计
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 4# lxh623


    原贴代码是Linux语法,我只是翻译成了Windows语法。至于得不到正确的结果,可能是需求不一样。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 lxh623 于 2019-7-30 15:17 编辑

回复 6# zaqmlp
搜索每一个词语,得到它出现的总次数(不是总行数)。
原件:
盼断归期,划损短金篦。一搦腰围,宽褪素罗衣。知他是甚病疾,好教人没理会,拣口儿食,陡恁的无滋味。医,越恁的难调理。
秋景堪题,红叶满山溪。松径偏宜,黄菊绕东篱。正清樽斟泼醅,有白衣劝酒杯。官品极,到底成何济!归,学取他渊明醉。
怕见春归,枝上柳绵飞。静掩香闺,帘外晓莺啼。恨天涯锦字稀,梦才郎翠被知。宽尽衣,一搦腰肢细。痴,暗暗的添憔悴。
你性随邪,迷恋不来也。我心痴呆,等到月儿斜。你欢娱受用别,我凄凉为甚迭!休谎说,不索寻吴越。咱,负心的教天灭!

关键词文本:
一一
一丁
一七
一上
一下
一世
一丘
一丝
一丢
一两
一严
一个
一举
一乘
一九
一了
一事
一二
一井
一些

TOP

本帖最后由 WHY 于 2019-7-31 10:37 编辑
  1. @echo off
  2. REM 关键词字数,2~3个字
  3. set /a Min=2, Max=3
  4. gawk "FNR==NR{a[$0]=1;b[$0]=0};FNR!=NR{for(i=%Min%;i<=%Max%;i++)for(j=1;j<=length($0)-i+1;j++){s=substr($0,j,i);if(a[s])b[s]++}}END{for(i in b)print i,b[i]}" 关键词.txt 诗词.txt > Result.txt
  5. pause
复制代码
诗词.txt
  1. 盼断归期,划损短金篦。一搦腰围,宽褪素罗衣。知他是甚病疾,好教人没理会,拣口儿食,陡恁的无滋味。医,越恁的难调理。
  2. 秋景堪题,红叶满山溪。松径偏宜,黄菊绕东篱。正清樽斟泼醅,有白衣劝酒杯。官品极,到底成何济!归,学取他渊明醉。
复制代码
关键词.txt
  1. 盼断
  2. 一搦
  3. 天地
  4. 我们
  5. 素罗衣
复制代码
Result.txt
  1. 天地 0
  2. 素罗衣 1
  3. 我们 0
  4. 一搦 1
  5. 盼断 1
复制代码

TOP

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. set "rootpath=%~dp0"
  6. cd /d "%rootpath%"
  7. powershell -NoProfile -ExecutionPolicy bypass ^
  8.     function getcount($str,$word){^
  9.         $index=0;^
  10.         $count=0;^
  11.         while(($index=$str.IndexOf($word, $index)) -ne -1){^
  12.             $count++;^
  13.             $index=$index+$word.Length;^
  14.         };^
  15.         return $count;^
  16.     };^
  17.     $file1='原件.txt';^
  18.     $file2='关键词.txt';^
  19.     $file3='统计结果.txt';^
  20.     $dic=New-Object 'System.Collections.Generic.Dictionary[string,int]';^
  21.     $text1=[IO.File]::ReadAllLines($file1,[Text.Encoding]::Default);^
  22.     $text2=[IO.File]::ReadAllLines($file2,[Text.Encoding]::Default);^
  23.     for($i=0;$i -lt $text1.count;$i++){^
  24.         for($j=0;$j -lt $text2.count;$j++){^
  25.             $c=getcount $text1[$i] $text2[$j];^
  26.             if(-not $dic.ContainsKey($text2[$j])){^
  27.                 $dic.add($text2[$j], $c);^
  28.             }else{^
  29.                 $dic[$text2[$j]]+=$c;^
  30.             };^
  31.         };^
  32.     };^
  33.     [System.Collections.ArrayList]$s=@();^
  34.     foreach($it in $dic.keys){[void]$s.add($it+' '+$dic[$it])};^
  35.     [IO.File]::WriteAllLines($file3, $s, [Text.Encoding]::Default);^
  36.     $dic;
  37. echo;%info%
  38. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 10# zaqmlp
请问,路径需要写入吗?
示例:E:\ABC Book\C诗歌对联\诗词总汇

TOP

回复 11# lxh623
17~19行,可要可不要,把bat跟原件.txt、关键词.txt放一起运行
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 9# WHY

如果是三字词,还是可以吗?

TOP

回复 13# lxh623


    已修改

TOP

用我写的工具trie,上百兆文件几秒钟就能统计完,http://www.bathome.net/thread-45901-1-1.html

TOP

返回列表