使用mathematica对中文书籍进行文字统计

这几天在做一个有关拼音输入法与概率关系的课件,需要两个汉字之间的转移的概率,比如说输入我这个字,后面最大可能是跟着哪个字?当然这是与个人的输入习惯有关系的。我这里是从红楼梦这本书里进行统计计算。算出在红楼梦这本书里面,我字后面跟各个字的频率是多少。

如果是使用普通的程序设计,我只对c/c++熟悉,其它不熟,估计得做一段时间,没想到使用mathematica这么快,一会就可以了。代码如下:

(*本程序的目的是要找到一篇中文书中,比如以我字开头的词,或者说我字后面跟什么字,作一个统计,用在马尔可夫链中*)
txt=Import["E:\\学校材料\\生活中的数学课件\\红楼梦.txt"];
Length[txt]
0
StringLength[txt]
1764624
StringCount[txt,"想"]
1791
result=StringCases[txt,"想"~~_~~""]; (*这个命令是把紧跟着'想'的字一起输出来*)
Dimensions[result]
{1766}
result[[100]]
想到
CountDistinct[result]
227
single=DeleteDuplicates[result]
(*输出结果省略*)
Dimensions[single]
{227}
size=Dimensions[single][[1]]
227
num=Table[0,{i,size}];
For[i=1,i<= size,i++,{
n=Count[result,single[[i]]];
num[[i]]=n;
}]
Count[result,single[[6]]]
30
ListPlot[num/1791,PlotRange->All]

Max[num]
186
Table[{single[[i]],num[[i]],num[[i]]/1791},{i,1,size}]//MatrixForm
(*输出结果省略*)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值