package org.bigdata508.util; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.bigdata.util.HadoopCfg; import org.wltea.analyzer.lucene.IKAnalyzer; public class DreamOfRedMansion { public static Set<String> dic = new HashSet<>(); static { String ProjectPath = DreamOfRedMansion.class.getResource("/").getFile().toString(); try { BufferedReader br = new BufferedReader(new FileReader(new File( ProjectPath + File.separator + "\DreamOfRed.txt"))); String line=null; while((line=br.readLine())!=null){ line=line.replaceAll("\s+", ""); dic.add(line); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static List<String> parse(String text){ List<String> words = new ArrayList<String>(); //创建IKAnalyzer中文分词对象 IKAnalyzer analyzer = new IKAnalyzer(); // 使用智能分词 analyzer.setUseSmart(true); // 分词 StringReader reader = new StringReader(text); try { TokenStream ts = analyzer.tokenStream("content",reader); CharTermAttribute strs = ts.getAttribute(CharTermAttribute.class); ts.addAttribute(CharTermAttribute.class); // 遍历分词数据 while (ts.incrementToken()) { if(dic.contains(strs.toString())){ words.add(strs.toString()); } } } catch (IOException e) { e.printStackTrace(); } reader.close(); return words; } private static class DreamOfRedMansionMapper extends Mapper<LongWritable, Text, Text, LongWritable> { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { List<String> names = parse(value.toString()); for (String name : names) { context.write(new Text(name), new LongWritable(1)); } } } private static class DreamOfRedMansionReducer extends Reducer<Text, LongWritable, Text, LongWritable> { @Override protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException { Long sum = 0L; for (LongWritable value : values) { sum = sum + value.get(); } context.write(new Text(key+","), new LongWritable(sum)); } } public static class DreamOfRedMansionSortMapper extends Mapper<LongWritable, Text, LongWritable, Text>{ @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, LongWritable, Text>.Context context) throws IOException, InterruptedException { LongWritable data = new LongWritable(Integer.parseInt(value.toString().split(",")[1].trim())); context.write(data, new Text(value.toString().split(",")[0])); } } public static class DreamOfRedMansionSortReduce extends Reducer<LongWritable, Text, Text, LongWritable>{ @Override protected void reduce(LongWritable key, Iterable<Text> values, Reducer<LongWritable, Text, Text, LongWritable>.Context context) throws IOException, InterruptedException { for(Text str : values){ context.write(str, key); } } } public static void main(String[] args) throws Exception{ Configuration cfg = HadoopCfg.getInstance(); Job job = Job.getInstance(cfg); job.setJobName("DreamOfRedMansion"); job.setJarByClass(DreamOfRedMansion.class); // mapper job.setMapperClass(DreamOfRedMansionMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); // reducer job.setReducerClass(DreamOfRedMansionReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); FileInputFormat.addInputPath(job, new Path("/DreamOfRedMansionInput")); FileOutputFormat.setOutputPath(job, new Path("/red_Out/")); job.waitForCompletion(true); Configuration conf = HadoopCfg.getInstance(); Job job2 = Job.getInstance(conf); job2.setJobName("DreamOfRedMansionSort"); job2.setJarByClass(DreamOfRedMansion.class); // sortmapper job2.setMapperClass(DreamOfRedMansionSortMapper.class); job2.setMapOutputKeyClass(LongWritable.class); job2.setMapOutputValueClass(Text.class); // sortreducer job2.setReducerClass(DreamOfRedMansionSortReduce.class); job2.setOutputKeyClass(Text.class); job2.setOutputValueClass(LongWritable.class); FileInputFormat.addInputPath(job2, new Path("/red_Out")); FileOutputFormat.setOutputPath(job2, new Path("/red_Out_sort/")); job2.waitForCompletion(true); } }
dic词典获取匹配名字:
DreamOfRed.txt
林黛玉
薛宝钗
贾元春
贾迎春
贾探春
贾惜春
李纨
妙玉
湘云
王熙凤
贾巧姐
秦可卿
晴雯
麝月
袭人
鸳鸯
雪雁
紫鹃
碧痕
平儿
香菱
金钏
司棋
抱琴
赖大
焦大
王善保
周瑞
林之孝
乌进孝
包勇
吴贵
吴新登
邓好时
王柱儿
余信
庆儿
昭儿
兴儿
隆儿
坠儿
喜儿
寿儿
丰儿
住儿
小舍儿
李十儿
玉柱儿
贾敬
贾赦
贾政
贾宝玉
贾琏
贾珍
贾环
贾蓉
贾兰
贾芸
贾蔷
贾芹
琪官
芳官
藕官
蕊官
药官
玉官
宝官
龄官
茄官
艾官
豆官
葵官
妙玉
智能
智通
智善
圆信
大色空
净虚
彩屏
彩儿
彩凤
彩霞
彩鸾
彩明
彩云
甄宝玉
薛宝琴
薛蟠
薛蝌
王夫人
王子腾
王仁
尤老娘
尤氏
尤二姐
尤三姐
贾敏
贾瑞
贾代儒
贾代化
贾代修
贾代善
詹光
单聘仁
程日兴
王作梅
石呆子
张华
冯渊
张金哥
茗烟
扫红
锄药
伴鹤小鹊
小红
小蝉
刘姥姥
马道婆
宋嬷嬷
张妈妈
秦锺
蒋玉菡
柳湘莲
东平王
乌进孝
冷子兴
山子野
方椿
载权
夏秉忠
周太监
裘世安
抱琴
司棋
侍画
入画
珍珠
琥珀
玻璃
翡翠
二木头
二丫头
卜氏
卜世仁
卜固修
入画
入画之叔
入画之婶
于老爷
大了
大姐
大姐儿
万儿
万虚
山子野
小红
小霞
小螺
小蝉
小鹊
小厮
小丫头
小幺儿
小内监
小舍儿
小蝉儿
小鸠儿
小道士
小吉祥儿
川宁侯
门子
义忠亲王
卫若兰
女尼
女先儿
马尚
马魁
马道婆
丰儿
王仁
王氏
王公
王成
王兴
王忠
王荣
王信
王一贴
王大人
王大夫
王大妈
王大爷
王子胜
王子腾
王太医
王尔调
王奶奶
王奶妈
王老爷
王作梅
王住儿
王君效
王希献
王和荣
王济仁
王青儿
王板儿
王狗儿
王家的
王短腿
王善保
王道士
王嬷嬷
王成之父
王兴媳妇
王信家的
王子腾夫人
王住儿媳妇
王善保家的
云儿
云光
云老爷五儿
五嫂子
元春
木居士
太妃
太上皇
太祖皇帝
尤氏
尤二姐
尤三姐
尤老娘
尤婆子
尤氏母亲
尤老安人
少妃
牛清
牛继宗
毛半仙
乌进孝
乌庄
长府官
长安守备
长安府知府
长安守备之子
仇都尉
凤姐
凤哥
凤丫头
凤哥儿
凤辣子
文化
文官
文清
文妙真人
方杏
方椿
引泉
引愁
金女
双寿
双瑞
孔继宗
书吏
水溶
水仙庵姑子
玉官
玉桂
玉爱
玉桂儿
玉钏儿
玉钏儿娘
玉桂儿家
玉桂儿媳妇
玉柱儿媳妇
巧姐
艾官
可人
可儿
石头
石光珠
石呆子
石头
呆子
平儿
平安节度
东平郡王
世荣
田妈
叶生
叶妈
史公
史鼎
史鼐
史太君
史湘云
史鼎夫人
史鼐夫人
史湘云夫
史湘云父
史湘云母
四儿
四姐
四姐儿
北静王
北静郡王
北静王妃
包勇
白玉钏
白老媳妇
白老媳妇儿
乐善郡王
外藩王爷
宁国公
冯仆
冯唐
冯渊
冯胖子
冯紫英
司棋
司棋妈
邢氏
邢忠
邢大舅
夫人
邢岫烟
邢嫂子
邢德全
老三
老赵
老僧
老太妃
老苍头
老田妈
老宋妈
老祝妈
老张妈
老叶妈
老王家的
老王道士
西平王爷
西宁郡王
灰待者
毕大人
毕知庵
扫红
扫花
豆官
同贵
同喜朱大娘
朱嫂子
多官儿
多姑娘
多浑虫
多姑娘儿
色空
邬将军
庆儿
庆国公
刘四
刘氏
刘妈
刘大夫
刘铁嘴
兴儿
安国公
许氏
守备之子
阴阳生
孙大人
孙绍祖
寿儿
寿山伯
芸香
芳官
花母
花自芳
花姐姐
花袭人
花大姐姐
严老爷
杏奴
李二
李氏
李妈
李纨
李孝
李纹
李贵
李祥
李绮
李德
李十儿
李少爷
李奶子
李奶奶
李守忠
李先儿
李店主
李宫裁
李员外
李御史
李婶子
李婶娘
李衙内
李嬷嬷
杨氏
杨待郎
杨提督
来升
来兴
来旺
来喜
来旺儿
来升媳妇
来旺之子
来旺家的
来旺媳妇
来喜家的
来喜媳妇
吴良
吴贵
吴兴
吴大人
吴大娘
吴天佑
吴巡抚
吴贵儿
吴贵妃
吴贵妻
吴新登
吴兴登
吴兴家的
吴贵媳妇
吴新登媳妇
吴巡抚大人
时觉
时福
呆霸王
何三
何妈
何婆
住儿
伴鹤
余信
余信家的
迎春
迎春妈
冷子兴
冷子兴家的
沁香
沈世兄
沈嬷嬷
宋妈
宋妈妈
宋嬷嬷
忘仁
良儿
妙玉
张二
张大
张三
张公
张华
张材
张暂
张大夫
张王氏
张太医
张友士
张先生
张老爷
张奶妈
张如圭
张法官
张若锦
张金哥
张财主
张家的
张真人
张道士
张德辉
张爷爷
张大老爷
张材家的
陈翼
陈也俊
陈瑞文
坠儿
坠儿娘
青儿
英莲
茄官
林三
林海
林妈
林大娘
林之孝
林如海
林红玉
林之孝妇
林之孝家的
玫瑰花儿
板儿
枕霞旧友
拐子
抱琴
旺儿
旺儿家的
旺儿嫂子
旺儿媳妇
忠靖侯
忠义亲王
忠顺王爷
忠顺亲王贤德妃佳蕙
侍书
佩凤
金氏
金荣
金星
金钏
金哥
金彩
金文翔
金钏儿
金寡妇
金鸳鸯
金文翔妇
金文翔家的
金文翔的媳妇
金彩妻
狗儿周氏
周琼
周瑞
周二爷
周大娘
周大妈
周太监
周公子
周奶妈
周妈妈周贵妃
周姐姐
周家的
周姨娘
周嫂子
周财主
周瑞家的
周瑞媳妇
郑华郑好时
郑华家的
郑好时媳妇
郑好时家的
怡红公子
单大良
单大娘
单聘仁炒豆儿
净虚
宝玉
宝官
宝珠
宝钗
宝蟾
定儿
定城侯
空空道人
春纤
春燕
珍珠
珍大奶奶
珍大嫂子
玻璃
封氏
封肃
赵全
赵天栋
赵天梁
赵太监
赵亦华
赵老爷
赵奶妈
赵堂官
赵国基
赵侍郎
赵姨娘赵嬷嬷
赵姨奶奶
茜雪
药官
茫茫大士
荣国公
胡氏
胡太医
胡老爷胡君荣
胡斯来
胡道长
胡庸医
胡山子野
胡老名公
南安王
南安郡王南安王太妃
栓儿
柳氏
柳芳
柳彪
柳妈
柳五儿
柳家的
柳湘莲
柳嫂子柳婶子
柳二媳妇
柳家媳妇
柱儿
挑雪
临安伯
临昌伯
临安伯诰命临昌伯诰命
临安伯老太太
昭儿
昭容
钟情大士
秋纹
秋桐
秋菱
秋爽居士香怜
香菱
皇上
皇帝
皇太后
侯孝康
侯晓明
保宁侯
俞禄
度恨菩提
娄氏祝妈
神瑛侍者
送玉人
费大娘
娇红
娇杏
绛珠草
绛珠仙草
绛珠仙子绛花洞主
秦氏
秦显
秦钟
秦鲸卿
秦显之妻
秦显家的
素云莲花儿
莺儿
莺儿娘
栓儿
桂儿家的
贾化
贾氏
贾兰
贾母
贾芝
贾芸
贾芷
贾芬
贾芳
贾环
贾法
贾范
贾珍
贾荇
贾复
贾珖
贾珠
贾珩
贾效
贾菱
贾菌
贾萍
贾婆
贾琮
贾琛
贾蓝
贾菖
贾蓁
贾蓉
贾源
贾蔷
贾演
贾璜
贾璎
贾璘
贾敷
贾蘅
贾藻
贾天祥
贾代化
贾代修
贾代善
贾代儒
贾存周
贾雨村
贾时飞
贾恩侯
贾巧姐
贾喜鸾
贾四姐儿
贾蓉媳妇
贾琼之母
贾(王扁)之母
夏三
夏忠
夏妈
夏太太
夏太监
夏奶奶
夏金桂
夏守忠
夏秉忠
夏婆子
圆信
钱升
钱华
钱槐
倪二
兼美
通事官
绣凤
绣桔
绣鸾
琏二奶奶
黄莺
黄莺儿
曹雪芹
梅翰林
梅翰林之子
戚建辉
菱洲袭人
聋子老妈妈
雪雁
探春
惜春
紫云
紫绡
银姐
银蝶儿
偕鸾
偕鸳
彩儿
彩云
彩凤
彩屏
彩明
彩哥
彩鸾
彩嫔
彩霞
彩儿娘
彩霞妈
隆儿
绮霞
琪官
琪官儿
琥珀
靓儿
喜儿
喜鸾
葫芦僧
蒋子宁
蒋玉函
韩奇葵官
黑儿
景田侯
锄药
智通
智能
智善
智能儿
嵇好古
程日兴
傅试
傅秋芳
焦大
粤海将军
焙茗
善姐
善姐儿
谢鲲
跛足道人
渺渺真人
娲皇媚人
缕儿
瑞珠
瑞大奶奶
甄母
甄费
甄士隐
甄夫人
甄友忠
甄英莲
甄宝玉
甄应嘉
甄家娘子
甄应嘉夫人
蓉哥儿
蓉哥儿媳妇
赖二
赖大
赖升
赖尚荣
赖嫂子
赖嬷嬷
赖二家的
赖大家的
赖大奶奶
赖升家的
赖大的媳妇
裘良
裘世安
裘太监
龄官
畸人
傻大姐
傻大舅
傻大姐妈
锦乡侯锦
乡侯诰命
詹光
詹会
詹子亮
鲍二
鲍音
鲍太医
鲍二家的
鲍二媳妇
痴梦仙姑
碧月
碧痕
翡翠
静虚
槛外人
算命先生
潇湘妃子
嫣红
翠云
翠缕翠墨
璜嫂子
璜大奶奶
蕙香
蕉下客
蕊官
蕊珠
醉金刚
墨雨
篆儿
稻香老农
潘又安
潘三保
鹤仙
缮国公
靛儿
薛父
薛公
薛文起
薛姨妈
霍启臻儿
鹦哥
鹦鹉
穆莳
戴权
戴良
檀云
襄阳侯
藕官
藕榭
癞头僧
蘅芜君
警幻仙子
警幻仙姑
颦儿
颦卿
小说文本:DreamOfRedMansion.txt