现实世界的应用外文翻译资料

 2022-10-26 09:53:57

英语原文共 415 页,剩余内容已隐藏,支付完成后下载完整资料


现实世界的应用

集群

本章介绍

iexcl;在Twitter上集群志同道合的人

iexcl;使用暗示标签Last.fm上的艺术家集群

iexcl;创建相关-岗位配备一个网站

你可能拿起这本书来学习和了解集群怎么能适用于现实世界的问题。到目前为止,我们主要集中在聚类的路透新闻数据集,其中有大约20,000文件,每一个具有约1000到2000字该数据集的大小是不足够的挑战为Mahout到显示其扩展能力。在本章中,我们使用集群来解决三个有趣在更大的数据集的问题。首先,我们尝试使用从Twitter(http://twitter.com)公共鸣叫发现谁鸣叫都使用集群的人。其次,我们考察从一组数据Last.fm(http://last.fm),一个流行的网络电台的网站,并尝试生成从数据相关的标签。最后,我们采取一种流行的技术的全部数据转储讨论网站,堆栈溢出(http://stackoverflow.com),具有约50万的问题和20万用户。我们用这个数据集来实现相关特性功能的网站。我们的第一个问题是从Twitter群集鸣叫找到相似的用户。

12.1查找在Twitter相似的用户

Twitter是一个社交网络及微博客服务,人们播出被称为鸣叫短,公众的信息。这些讯息是最多140个字符长。一旦发布,鸣叫便即刻发布的所有用户的追随者的饲料和它的公开显示在Twitter的网站。这些讯息有时与注解像#Obama风格的关键字或标记为在语法另一个用户像导演@SeanOwen。由于Twitter的新服务条款不允许我们公布的数据集,你会需要自己准备。在这本书中的源代码,有一个名为Twitter-类下载,抓住从Twitter 100000鸣叫(但你可以改变这个数字在源代码中),并将其写入以后将用于分析的文件。取10万鸣叫约需2小时。

注意要运行这个程序,你需要获得认证密钥从Twitter通过https://dev.twitter.com/注册应用程序应用程序,并把认证值到程序中,如

在源代码中说明。而且不要忘记添加-Dfile.encoding = UTF-8选项.

12.1.1数据预处理和特征加权

这些数据必须进行预处理,以把它变成由Mahout中使用的格式。首先,它必须被转换成能由字典矢量器读取的SequenceFile格式。那么必须使用的TF-IDF作为特征权重转换成矢量方法。这本字典矢量化预计其输入到有一个文本键和值。这里,重点将是Twitter用户名,并且该值将全部鸣叫的串联从该用户。准备这个输入是非常适合于MapReduce的工作。映射器读取的每一行输入:用户名,时间戳和由制表符分隔的鸣叫文本。它的输出用户名作为键和鸣叫文本作为值。减速机接收到来自所有鸣叫一个特定的用户,加入他们成一个字符串,并且输出以此为值,用再次作为用户名的关键。这个数据被写入到一个SequenceFile。映射器,减速器及配置类,以及一份工作,调用它们Hadoop集群上,显示在清单12.1和12.2。地图-减少类被实现为一个通用组逐场映射器。

清单12.1集团通过字段映射器

公共类ByKeyMapper扩展映射lt;LongWritable,文本,文本,文本gt; {

私人模式分路器= Pattern.compile(“ t”的);

私人INT selectedField = 1; //鸣叫

私人INT groupByField = 0; // 用户名

@覆盖

保护无效图(LongWritable键,文本价值,

上下文语境)抛出IOException异常,

InterruptedException的{

的String []栏= splitter.split(value.toString());

如果(fields.length - 1 lt;selectedField ||

fields.length - 1 lt;groupByField){

context.getCounter(

“地图”,“LinesWithErrors”),增量(1)。

返回;

}

字符串欧凯=领域[groupByField]

字符串oValue =领域[selectedField]

context.write(新文本(欧凯),新文本(oValue));

}

}

清单12.2组逐场减速器

公共类ByKeyReducer扩展减速lt;文本,文本,文本,文本gt; {

@覆盖

保护无效减少(文字键,

可迭代lt;文本gt;值,

上下文的背景下){

StringBuilder的输出=新的StringBuilder();

对于(Text值:值){

。output.append(value.toString())附加(“”);

}

context.write(关键,新的文本(

。output.toString()修剪()));

}

}

一旦作业执行,用户的鸣叫连接成一个文件大小串并写出到SequenceFile。接着,将该输出必须转换为TFIDF向量。运行基于字典的矢量化之前,有必要了解

Twitter的数据集更好,识别一些简单的和有益的调整,将有助于特征选择和加权的过程。

12.1.2避免在特征选择常见的陷阱

TF-IDF是,我们已经多次使用的有效功能加权技术已经。如果它适用于个人微博,最长期的频率是1,因为文本的长度是140个字符,或者25总字。我们感兴趣的是集群用户的一致好评鸣叫,所以我们转而创建一个数据集,其中一个文件由所有的微博,而不是个人微博为用户的。运用TF-IDF本会更有意义,而且群集将更有意义发生。直接将TF-IDF权重可能不会产生很大的成绩。不如以消除通常发生在所有的鸣叫功能:停止字。我们使用字典矢量器并设置最大文档频率百分比参数到的或许50%的低的值。这消除了发生在50字以上所有文件的百分之一。我们还使用了矢量化的搭配功能生成从Twitter数据双字母组,并把它们作为特色集群。但是有一个问题。鸣叫是随便写的邮件,而不是精心编辑

文字像路透社收藏。鸣叫包含拼写错误,缩写,俚语,和其它的变化。三人啁啾以下会句子永远不会聚集在一起,因为他们的鸣叫没有共同的词:

HappyDad7:“只要有洛克清凉瓶”

BabyBoy2010:“我爱洛卡科拉”

Cool_Dude9:“哥们我misssing LLokkkeee !!!!”

为了解决这个问题,我们可以发现这些替代拼写之间的关系,用拼音过滤器。这些是减少一个字到一碱形式的算法,近似于单词的发音方式。例如,Loke和洛卡可能既降低到类似LK。字清爽可以减少到事像RFRX。有一个程序的至少三个显着实现像这一点:探测法,音位和双音位。所有在该实施阿帕奇共享编解码器library.1我们使用它的DoubleMetaphone实施每个字转换成基础语音形式。下面列出了一个样本,Lucene的分析器执行以这种方式使用DoubleMetaphone。

清单12.3 Lucence分析类鸣叫优化

公共类TwitterAnalyzer扩展仪{

私人DoubleMetaphone过滤器=新DoubleMetaphone();

@覆盖

公众的TokenStream的TokenStream(字符串字段名,读者阅读器){

最终的TokenStream结果=新PorterStemFilter(新的StopFilter(

如此,新StandardTokenizer(Version.LUCENE_CURRENT,读卡器),

StandardAnalyzer.STOP_WORDS_SET));

TermAttribute termAtt =(TermAttribute)结果

.addAttribute(TermAttribute.class);

StringBuilder的BUF =新的StringBuilder();

尝试{

而(result.incrementToken()){

串字=新的String(termAtt.termBuffer(),0,termAtt

.termLength());

。buf.append(filter.encode(字))附加(“”);

1您可以在http://commons.apache.org/codec/找到了Apache共享编解码器包的层次结构

apidocs /组织/阿帕奇/公/解码器/语言/包tree.html

清单12.3 Lucence分析类鸣叫优化

初始化

编码器

创建语音根

}

}赶上(IOException异常五){

e.printStackTrace();

}

返回新WhitespaceTokenizer(新StringReader(buf.toString()));

}

}

注DoubleMetaphone过滤器将只对英文文本。您

可能需要寻找一个过滤器,如果你处理其他语言。当你将从Twitter抢鸣叫,集合也将包含在其他微博语言。我们忽略了质量损失,由于其他语言此例。使用Hadoop的第12.1.1产生的SequenceFile复制到集群HDFS复制命令。一旦数据被复制到集群,可以运行DictionaryVectorizer在Twitter上SequenceFiles如下:

斌/象夫seq2sparse -ng 2 -ml 20 -s 3 -x 50 -OW

-i MIA / twitter_seqfiles / -o MIA /叽叽喳喳的载体-n 2

-a mia.clustering.ch12.TwitterAnalyzer -seq

以确保TwitterAnalyzer类是在Java CLASSPATH的时候是很重要的您尝试运行此命令。矢量化可能需要一些时间来标记鸣叫并生成一套完整的从他们中bigram。该矢量表示会比原来的输入较小。我们不知道我们需要生成的簇的数目。因为不是更少100000独特的用户生成的微博,我们可以决定创建100集群

每一个用户,并产生约1000集群。使用运行K-means算法刚刚生成的载体。从输出群的一个例子,我们得到当我们运行此列如下:

首页相关条款:

KMK =gt; 7.609467840194702

APKM =gt; 7.5810538053512575

TP =gt; 6.775630271434784

KMPN =gt; 5.795418488979339

MRFL =gt; 4.9811420202255245

KSTS =gt; 4.082704496383667

NFLX =gt; 4.005469512939453

PTL =gt; 3.9200561702251435

N =gt; 3.7717770755290987

A =gt; 3.4771755397319795

这里的特征KMK是DoubleMetaphone滤波器的像漫画字的输出,漫画,komic,等等。要查看原始话,运行与向量聚类,而不使用任何过滤器,或者干脆使用StandardAnalyzer。你可以用最大的文档频率设定在重新运行群集两倍多50%和20%。当我们这样做,下面的字词名单已从包含的话题漫画的鸣叫集群选择:

热门术语-maxDFPercent = 50

漫画=gt; 9.793121272867376

漫画=gt; 6.115341078151356

CON =gt; 5.015090566692931

HTTP =gt; 4.613376768249454

I =gt; 4.255820257194115

SDCC =gt; 3.927590843402978

你=gt; 3.635386448917967

RT =gt; 3.0831371437419546

我=gt; 2.9564724853544524

NOCOW地图=gt; 2.916910980686997

热门术语-maxDFPercent = 20

NOCOW地图=gt; 11.411304909842356

漫画=gt; 10.651778670719692

漫画=gt; 10.252182320186071

的webcomic =amp;

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[154087],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。