当前位置: 首页 > news >正文

学网站开发培训机构华诚博远建筑规划设计公司

学网站开发培训机构,华诚博远建筑规划设计公司,郝友做的网站,技术支持 长沙网站建设-创研科技词频统计 通过分析大量文本数据中的词频#xff0c;可以识别常见词汇和短语#xff0c;从而抽取文本的关键信息和概要#xff0c;有助于识别文本中频繁出现的关键词#xff0c;这对于理解文本内容和主题非常关键。同时#xff0c;通过分析词在文本中的相对频率#xff0…词频统计 通过分析大量文本数据中的词频可以识别常见词汇和短语从而抽取文本的关键信息和概要有助于识别文本中频繁出现的关键词这对于理解文本内容和主题非常关键。同时通过分析词在文本中的相对频率可以帮助理解词在不同上下文中的含义和语境。 纽约时报评论数据集记录了有关《纽约时报》2017年1月至5月和2018年1月至4月发表的文章上的评论的信息。月度数据分为两个csv文件一个用于包含发表评论的文章另一个用于评论本身。评论的csv文件总共包含超过200万条评论有34个特征而文章的csv文件包含超过9000篇文章有16个特征。 本实验需要提取其中的 articleID 和 snippet 字段进行词频统计 MapReduce 在Hadoop中输入文件通常会通过InputFormat被分成一系列的逻辑分片分片是输入文件的逻辑划分每个分片由一个Mapper处理。 本实验中WordCount通过MapReduce统计snippet 字段中每个单词出现的总次数。程序主要包括Mapper, Reducer, Driver三个部分。 自定义的Mapper和Reducer都要继承各自的父类。Mapper中的业务逻辑写在map()方法中Reducer的业务逻辑写在reduce()方法中。整个程序还需要一个Driver来进行提交提交的是一个描述了各种必要信息的job对象。 程序总体流程如下图所示。 Mapper Mapper的主要任务是处理输入分片并生成中间键值对这些键值对将被传递给Reducer进行进一步处理也就是对应的Map的过程。 在本实验中Mapper需要将这行文本中的单词提取出来针对每个单词输出一个word, 1的Key, Value对。之后MapReduce会对这些word,1进行排序重组将相同的word放在一起形成word, [1,1,1,1,1,1,1…]的Key,Value 结构并传递给Reducer。 Reducer Reducer则以中间键值对为输入将其按照键进行分组并将每个组的值按一定规则合并成最终的输出。 注意在此阶段前Hadoop框架会自行将中间键值对经过默认的排序分区分组Key相同的单词会作为一组数据构成新的Key, Value对。 在本实验中Reducer将集合里的1求和再将单词word与这个和sum组成一个Key, Value也就是word, sum输出。每一个输出就是一个单词和它的词频统计总和了。 Driver Driver是一个程序的主入口负责配置和启动整个MapReduce任务。Driver类通常包含了整个MapReduce作业的配置信息、作业的输入路径、输出路径等信息并启动MapReduce作业的执行。 总结 该程序基于Hadoop MapReduce框架实现了简单的单词计数功能适用于大规模文本数据的并行处理。 PSEUDO-CODE 2   WordCount(词频统计) /* Map函数处理每一行的文本 */ 1input Key,Value                                   //Value使用Text类型表示文本行 2从文本中提取文档ID和实际文本内容snippet 3使用空格、单引号和破折号作为分隔符将文本snippet分词 4for 文本snippet中的每个单词 5     去除特殊字符后将word,1写入context发射给Reducer 6end for /* Reduce函数处理相同键的所有值 */ 1input Key,Valuesum←0             //来自Map的word,[1,1,1…] 2for Value的每个1 3     累加计数sum 1 代码 import java.io.IOException; import java.util.regex.*; import java.util.Iterator; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; 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.hadoop.util.GenericOptionsParser; public class WordCount {public WordCount() {}public static void main(String[] args) throws Exception {Configuration conf new Configuration();String[] otherArgs (new GenericOptionsParser(conf, args)).getRemainingArgs();if(otherArgs.length 2) {System.err.println(Usage: wordcount in [in...] out);System.exit(2);}Job job Job.getInstance(conf, word count);job.setJarByClass(WordCount.class);job.setMapperClass(WordCount.TokenizerMapper.class);job.setCombinerClass(WordCount.IntSumReducer.class);job.setReducerClass(WordCount.IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class); for(int i 0; i otherArgs.length - 1; i) {FileInputFormat.addInputPath(job, new Path(otherArgs[i]));}FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));System.exit(job.waitForCompletion(true)?0:1);}public static class TokenizerMapper extends MapperObject, Text, Text, IntWritable {private static final IntWritable one new IntWritable(1);private Text word new Text();public TokenizerMapper() {}public void map(Object key, Text value, MapperObject, Text, Text, IntWritable.Context context)throws IOException, InterruptedException {// Split DocID and the actual textString DocId value.toString().substring(0, value.toString().indexOf(\t));String value_raw value.toString().substring(value.toString().indexOf(\t) 1);// Reading input one line at a time and tokenizing by using space, , and - characters as tokenizers.StringTokenizer itr new StringTokenizer(value_raw, -);// Iterating through all the words available in that line and forming the key/value pair.while (itr.hasMoreTokens()) {// Remove special charactersword.set(itr.nextToken().replaceAll([^a-zA-Z], ));if(word.toString() ! !word.toString().isEmpty()){context.write(word, one);}}}}public static class IntSumReducer extends ReducerText, IntWritable, Text, IntWritable {private IntWritable result new IntWritable();public IntSumReducer() {}public void reduce(Text key, IterableIntWritable values, ReducerText, IntWritable, Text, IntWritable.Context context) throws IOException, InterruptedException {int sum 0;IntWritable val;for(Iterator i$ values.iterator(); i$.hasNext(); sum val.get()) {val (IntWritable)i$.next();}this.result.set(sum);context.write(key, this.result);}}}
http://www.yayakq.cn/news/1781/

相关文章:

  • 胶南网站建设公司简洁网站模板素材
  • wordpress个人网站模板江苏网站建设方案
  • 怎么建设网站是什么网站报价方案范文
  • 手机网站电话漂浮代码深圳酒店网站建设
  • m版网站开发福州建设注册中心网站
  • 做自媒体那几个网站好点衡东网络推广公司
  • 如何把自己做的网站连上网安徽平台网站建设制作
  • 珠海公司网站设计多语种网站营销
  • 深圳网站建设网站推广的方法朝西村网站建设公司
  • 佛山快速建站哪家服务专业wordpress搬运小红书内容
  • 保定网站模板建站简述seo
  • 做侵权网站用哪里的服务器做定制网站怎么样
  • 昆山网站开发建设公司柳州网站建设推荐
  • 阜宁县网站建设前端微信小程序开发
  • 自助建站免费申请个人网页沧州网站制作教程
  • 苍溪网站建设制作安卓手机网站开发
  • 在凡科做网站编辑同城的网站建设
  • 哪些企业必须用网站网络优化关键词
  • 长沙网站建设网站wordpress theme 插件
  • 网站建设规划方案书网站开发项目可行性
  • 视频网站开发前景如何买网站服务器要多少钱一年
  • 建设银行浙江网站物流网络规划与设计
  • 移动端网站建设的方案唐山网站制作价格
  • ps个人网站的首页界面wordpress滑动插件
  • 深圳做网站(推荐乐云践新)wordpress网站商务通
  • 常见的静态网站开发技术甘肃建设银行网站
  • 云南网站建设天软科技网站开发量
  • 中科建建设发展有限公司网站湖南省工商注册登记网
  • 营销企业网站建设应遵守的原则重庆商城网站建设地址
  • 广州游戏网站建设南宁做网站哪家好