免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4039 | 回复: 11
打印 上一主题 下一主题

[文本处理] 求句子各单词的字符串长度 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-21 11:12 |只看该作者 |倒序浏览
比如“ In statistics, a power lar is a functional relationship between two quantities, where one quantity varies as a power of another" 这句话中,按顺序得到的单词的字母数序列是“ 2 10 1 5 3 2 1 10 12 7 3 10 5 3 8 5 3 8 6 2 1 5 2 7.  
将文件中的每一句话做一次这样的分析后,得到一长串的字数(x1,x2, x3, ... xn), 每一个数字代表一个单词的字母数(n 为文件中单词数),然后求平均值。

论坛徽章:
0
2 [报告]
发表于 2014-06-21 11:33 |只看该作者
  1. awk '{for(i=1;i<=NF;i++){printf("%s ",length($i));sum+=length($i);};print sum/NF;sum=0 }' filename
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-06-21 11:41 来自手机 |只看该作者
о:

  1. awk -F '[, ]+' '{for(i=0;++i<NF;){a=a" "length($i);n+=length($i)}print a,n/NR;a=n=b}' urfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-06-21 11:44 |只看该作者
大侠,我还想知道的是在SHELL脚本中怎么将纯文本提取出来然后利用这里的AWK,纯新手求解惑。回复 2# zerostudy


   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
5 [报告]
发表于 2014-06-21 11:49 |只看该作者
回复 4# wpd0508


    写文件或直接用管道传过来:

urshell >file && awk xxoo file
urshell |awk xxoo

论坛徽章:
0
6 [报告]
发表于 2014-06-21 12:11 |只看该作者
  大侠,你能帮我处理一下这整个题目吗,对我感觉有很大的难度,谢谢了。
  对一个纯文本,其中的每一句话,你首先需要按顺序地得到这句话中每一个单词的字母数,比如“ In statistics, a power lar is a functional relationship between two quantities, where one quantity varies as a power of another" 这句话中,按顺序得到的单词的字母数序列是“ 2 10 1 5 3 2 1 10 12 7 3 10 5 3 8 5 3 8 6 2 1 5 2 7.
      这文件中的每一句话做一次这样的分析后,你会得到一长串的字数(x1,x2, x3, ... xn), 每一个数字代表一个单词的字母数(n 为文件中单词数)。接下去对这串字数进行进行求平均,得到  xbar.  将原来的数组与xbar做差,得以 ( X1, X2, X3,X4,X5 .... Xn),  其中Xi=xi-xbar.然后对数组[ Xi ] 做累加 得到 [ Y1, Y2, Y3,  ... Yn],  其中 Y1=X1, Y2=X1+X2, Y3=X1+X2+X3, ..., Yi = X1+X2+ ... + Xi.
  对以上得到的数组 [ Yi ]  以L个为单元进行分组, 即第一组为 [  Y1 Y2 Y3 ... YL].    对这L个数字进行最小二乘法拟合,得 Y=a1 x + a0, (这里的x为数组对应的下标数,即1~ L).
计算偏差量  E = sqrt( sum (Yi - (a1*xi +a0) )^2对其他单元进行一样的的计算,得到不同的不同的E_L_i。该尺度L下,统计的波动量 E_bar_L = mean( E_L_i)  用不同的L重复以上计算,得到相应的E_bar_L值。  

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2014-06-21 12:46 |只看该作者
回复 6# wpd0508
统计、偏差、拟合。。。
Shell压力很大呀。。。

论坛徽章:
0
8 [报告]
发表于 2014-06-21 12:52 |只看该作者
如果只是第一步怎么完美实现呢回复 7# Herowinter


   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
9 [报告]
发表于 2014-06-21 13:08 |只看该作者
回复 8# wpd0508
这个吗?应该可以做的,求个平均数再累加而已,
应该会有大神帮你做的。
  1. 这文件中的每一句话做一次这样的分析后,你会得到一长串的字数(x1,x2, x3, ... xn), 每一个数字代表一个单词的字母数(n 为文件中单词数)。接下去对这串字数进行进行求平均,得到  xbar.  将原来的数组与xbar做差,得以 ( X1, X2, X3,X4,X5 .... Xn),  其中Xi=xi-xbar.然后对数组[ Xi ] 做累加 得到 [ Y1, Y2, Y3,  ... Yn],  其中 Y1=X1, Y2=X1+X2, Y3=X1+X2+X3, ..., Yi = X1+X2+ ... + Xi.
复制代码

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
10 [报告]
发表于 2014-06-21 16:35 |只看该作者
  1. $ cat t.sh
  2. #!/bin/bash

  3. while read -a w;do
  4.         for i in ${w[*]};do
  5.                 s=${i//[ , .]/}
  6.                 echo -n "${#s} "
  7.         done
  8. echo
  9. done
  10. $ cat 2
  11. In stat,istics, a power lar is a functional. relationship between two quantities, where one quantity varies as a power of another
  12. In stat,istics, a power lar is a functional. relationship between two quantities, where one quantity varies as a power of another
  13. In stat,istics, a power lar is a functional. relationship between two quantities, where one quantity varies as a power of another
  14. $ ./t.sh < 2
  15. 2 10 1 5 3 2 1 10 12 7 3 10 5 3 8 6 2 1 5 2 7
  16. 2 10 1 5 3 2 1 10 12 7 3 10 5 3 8 6 2 1 5 2 7
  17. 2 10 1 5 3 2 1 10 12 7 3 10 5 3 8 6 2 1 5 2 7
  18. $
复制代码
回复 1# wpd0508


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP