主题:统计 词频统计
苦禅和尚
[专家分:0] 发布于 2006-08-15 16:49:00
各位大下 救我 遇到一个棘手问题(对我来说) 题目是这样的
编程统计一篇英语文章中不同介词出现的频率(介词长度*出现次数/全文长度)。
要求
(1) 英语文章由用户指定路径名来确定。
(2) 介词由用户任意指定n个。
(3) 用频率直方图来表示统计结果。
回复列表 (共5个回复)
沙发
euc [专家分:4310] 发布于 2006-08-15 17:16:00
介词好象有很多哇~ 用一些常用的还可以吧.比如in on at,用状态机找匹配.
设状态i=o=a=1,(i)n=2,(o)n=3,(a)t=4;
int state = 1;
switch (state) {
case 1:
switch (c) {
case 'i': state = 2;
case 'o': state = 3;
case 'a': state = 4;
break;
default: state = -1; //表示失败
}
break;
case 2:
switch (c) {
case 'n': state = 0; //表示成功匹配一个介词
default: state = -1;
}
break;
case 3:
switch (c) {
case 'n': state = 0; //表示成功匹配一个介词
default: state = -1;
}
break;
case 4:
switch (c) {
case 't': state = 0; //表示成功匹配一个介词
default: state = -1;
}
break;
}
我也没实践过,但感觉状态机就是这样.
板凳
苦禅和尚 [专家分:0] 发布于 2006-08-15 17:29:00
首先多谢大下热情恢复 但是我想你说的和题目有些背离啊 我想应该思想是
统计词频 首先得作一个介词库 (包含这篇文章中的的就行了)然后 再指定的文章中搜索 与词库中有相同的旧累计 哦 你认为这要用数据结构中的那种结构最好呢
3 楼
euc [专家分:4310] 发布于 2006-08-16 10:37:00
呵呵,不理解就算了. 按你的想法呢,就是从文件读一个单词,然后搜索介词库看看有没有合适单词,如果有只要把长度加到pps(记录介词总长)上. 读完所有单词就用pps/sum(文章总长度)就行了.不用你那个公式.
4 楼
苦禅和尚 [专家分:0] 发布于 2006-08-19 22:04:00
是这样啊那谢谢了
5 楼
大鹏鸟1海阔天空 [专家分:890] 发布于 2006-10-10 00:48:00
1楼的方法可以用一个多叉树来实现,做好了查询起来很方便的,更重要的是时间空间都很节省,还有一种思路就是做一个词库类(最好可以添加进取词汇)这样,每次从文本里读到的词汇,都在词汇库里查询一次。这样弄也可以得,我用C++ 做好了。
我来回复