终于找到可以写博客的题材了。近期在做一个社交媒体事件文摘的活儿,借用本实验室的一个文摘系统。系统是面向特定领域,用它做微博语言的文摘效果不理想。考虑到再写一个文摘系统比较麻烦,就想在此基础上进行改进。系统里有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里,希望能得到好的文摘结果吧。