倒序索引
注意点:
- StringTokenizer(String str) :构造一个用来解析 str 的 StringTokenizer 对象。java 默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r)。
- nextToken()是 StringTokenizer 类下的一个方法
- while (st.hasMoreTokens()) // 判断是否已经到结尾
成绩排序
Configuration config=new Configuration();
//这句话要早点写,否则没用
config.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR,",");
// 设置输入格式,一共有三种格式
job.setInputFormatClass(KeyValueTextInputFormat.class);
// 输出结果保留一位小数
String.format("%.1f", key.getChinese())
Hadoop—MapReduce练习(数据去重、数据排序、平均成绩、倒排索引)
HanLP
properties的路径要配置好,我把data的文件方resource就没报jdk的错了,奇怪!!
『NLP自然语言处理』中文文本的分词、去标点符号、去停用词、词性标注
java_利用hanlp对文件“三国演义(罗贯中).txt”进行分词,去掉标点符号和停用词, 最后统计词频,排序输出到文件“三国演义词频.txt“
最后成功的配置如下:
- 分词以后的结果类似这种
[3823890201582094/m, /w, 今天/t, 我/rr, 约/d, 了/ule, 豆浆/nf, ,/w, 油条/nf, 。/w, 约/d, 了/ule, 电饭煲/n, 几/d, 小时/n, 后/f, 饭/n, 就/d, 自动/d, 煮/v, 好/a, ,/w, 还/d, 想/v, 约/d, 豆浆机/nz, ,/w, 让/v, 我/rr, 早晨/t, 多/a, 睡/v, 一/m, 小时/n, ,/w, 豆浆/nf, 就/d, 自然/n, 好/a, 。/w, 起床/vi, 就/d, 可以/v, 喝/vg, 上/f, 香喷喷/z, 的/ude1, 豆浆/nf, 了/ule, 。/w,
/w, 3823890210294392/m, /w, 今天/t, 我/rr, 约/d, 了/ule, 豆浆/nf, ,/w, 油条/nf,
/w, 3823890235477306/m, /w, 一会儿/mq, 带/v, 儿子/n, 去/vf, 动物园/n, 约/d, 起/vf, ~/w,
/w, 3823890239358658/m, /w, 继续/v, 支持/v]
这个/w是标注的词性:
分词结果包含词性,每个词性的意思请查阅《HanLP词性标注集》。
TF:
词频(term frequency,TF),表示词在一篇文档中出现的频率=词在该文档中出现的次数 / 该文档中单词的总数—TF越大,表示该词对文档越重要
DF:
文档频率 (document frequency),一个词在多少篇文章中出现过
主要实现参考这个:
MapReduce使用TF-IDF模拟实现微博热点词汇抓取