词频统计MultiMap起效

终于找到可以写博客的题材了。近期在做一个社交媒体事件文摘的活儿,借用本实验室的一个文摘系统。系统是面向特定领域,用它做微博语言的文摘效果不理想。考虑到再写一个文摘系统比较麻烦,就想在此基础上进行改进。系统里有domain dic这个词典,如果对当前话题的语料分词,词频较高的词可作为domian dic。

对语料的分词用的是stanford的分词系统,ctb和pku两种训练语料做中和。最后选择用map1统计词频,将词作为Key,词出现的次数作为value。词频统计的最终目标是将词频较高的词输出。接着做的工作有点繁琐,也出现了问题。先用一个数组存放value,用map2将map1里的key和value的值交换,词频作为key,词作为value方便根据词频输出词。当用快拍将数组里的value排序后,用map2.get(key)。运行之后出现很多重复的结果。问题的症结在于map1里的value有重复的,转移到map2后变成key,用get方法得到的结果将后来出现相同key对应的value覆盖了。后经高人指点,选择用MultiMap。具体的实现代码:

package map;
import java.io.*;
import java.util.*;
import map.Myhashmap;
import org.apache.commons.collections.MultiMap;
import org.apache.commons.collections.*;
public class map {
public static void main(String args[])
{
MultiMap map = new MultiHashMap();
map.put(1, "a");
map.put(1, "b");
Iterator iterator = map.keySet().iterator();  
while (iterator.hasNext()) {  
   //          System.err.println(iterator.next());  
   Object key = iterator.next();  
   Object object = map.get(key);  
   if (object instanceof List) {  
       List<String> valuelist = (List<String>) object;  
       for (Object value : valuelist) {  
           System.out.println(key + "----" + value);  
       }  
   } else if (object instanceof String) {  
       System.out.println(key + "====" + object.toString());  
   }  
}
}
}
其中commons.collections.jar包是在网上down的,这样终于实现了一对多的键值对输出。剩下的工作将高频词汇加入到doman dic里,希望能得到好的文摘结果吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值