大张伟(主唱/吉他手/词曲创作)
原名:张伟(原因:张伟在小时候的班级里,有两个叫张伟的,他的老师叫的很不习惯,好象是因为张伟比那个张伟大。老师叫他们一个就叫大张伟。一个叫小张伟。后来张伟听习惯了,名字就不改了。)原名:大张伟
外文名:Wowkie zhang
国 籍:中国
民 族:汉
星 座:处女座
血 型:B
身 高:175cm
体 重:60kg
出生地:北京市
出生日期:1983年8月31日
职 业:歌手、音乐人、主持人 经纪公司恒大音乐
代表作品:嘻唰唰、化蝶飞、我的果汁分你一半、倍儿爽等
从资料中我们可以看出,大张伟其实姓张,张伟就是他的本名。那么大张伟为什么叫大张伟呢?原来他上学的时候班上有两个叫张伟的,为了区分就称呼他为大张伟。时间长了,他就干脆用大张伟这个名字出道了。那为什么要称他为大老师呢?很多人以为大老师这个名字是被王嘉尔叫出来的,其实早在2010年就有大老师这个称号了。大张伟是北京人,喜欢叫别人X老师,所以有的人也这么叫他大老师。
大张伟首谈恋情,祝福大老师
自从大老师段子手的名号在圈内被打响后,“组团睡大张伟”成为了诸多迷妹们的心声,各种关于大老师的事迹以及段子在网上流传,不少迷妹表示,又有才华又逗比还活得通透,简直就是理想男友的人选,在微博上,他也成为了和宋仲基抗衡的“男神。”不过虽然大老师心直口快,但也并非百无禁忌,一直以来他对于感情这块要么不提,要么态度暧昧,之前有媒体曝光了他和经纪人的疑似恋情,他也只是在微博上简单回应,称“我需要的温暖是当拼血汗后,自觉可以放轻一切的陪伴。”自从后再无提及。
而在《笑星闯地球》的节目中,王自健和张大大连连暗示大张伟,使得大张伟回应了有关其与“身边工作人员谈恋爱”的传闻:“我觉得喜欢就要在一块啊,这很正常啊,和身边的人在一起顶多是工作没了,工作没了还能找下一个,幸福的感觉没了,你怎么找?”疑似肯定与经纪人恋情。
在节目中一个有关“办公室恋情”的小品过后,王自健首先发声“挖坑”大张伟:“办公室恋情咱仨有得聊吗?”没想到大张伟丝毫不中招:“没得聊,算了,下一个话题好吧。”王自健丝毫不想放弃,就这个话题接着“挖”:“我觉得是这样虽然咱们都不上班,但是工作关系的恋情也是可以拿出来说一说的嘛!”张大大也在一旁助攻:“因为我是既没有这个福气,谈过圈中的艺人,也没有跟身边的工作人员有机会发生恋爱的关系,嗯。”两人疑似把矛头直接对准前段时间闹得沸沸扬扬的大张伟与其经纪人的恋情。
大张伟见实在是躲不过了,这才开口回应:“是这样的,我觉得喜欢就要在一块啊,这很正常啊,这有什么不应该的吗?比如说上班,或者说和身边人在一块,顶多就是工作没了嘛,对吧,工作没了还能找下一个,但那个幸福的感觉没了你怎么找?”疑似正面肯定与经纪人的恋情传闻。现场观众也被他的认真感动,纷纷鼓掌祝福。
而在《十三亿分贝》里,大张伟更是首度提及了自己的恋情承认“身边有人了。”被黄妈问起是谁时,他也腼腆表示,“就是上次拍到的那个啊。”还表示现在在考虑带着恋人去哪里玩,“想带她去玩了……”甚至还透露近期想要生孩子。大老师这么难得的爆出恋情,也引来了迷妹们的集体关注,有迷妹表示,虽然有点“心碎”,但还是祝福:“大老师难得这么害羞一下呢,还在考虑一起出去玩,啊真的好羡慕,他的女朋友是拯救了银河系吗!但是也祝福他们,应该每天都会过得很快乐吧。”也有网友开始猜测,是不是接下来就是要步入婚姻殿堂的节奏,“大老师这么说,不会是在考虑度蜜月的地方吧!”
总是给大家带来快乐的大老师,现在也拥有了自己的幸福,祝福大老师,希望大老师以后的每一天都可以活得精彩纷呈,开心幸福。
简单啊PS打开两张图将一张拖放到另一张里面也就是说现在是两个图层图A和图B点“窗口”--“动画”动画面板点出来之后新建一帧选第一帧把图A图层显示可见图B图层隐藏选第二帧把图A图层隐藏图B图层显示可见按下空格键或是点播放按钮就可以预览了记得要选择“永远”文件--存储为WEB所用格式保存即可说白了就是一帧对应一个图层这个就两图层两个帧
大张旗鼓?[dàzhāngqígǔ]? 生词本 基本释义?详细释义? [dàzhāngqígǔ] 张:陈设,展示;旗鼓:旗帜和战鼓。形容进攻的声势和规模很大。也形容群众活动声势和规模很大。 出处 清·张春帆《宦海》:“李参戎带着这些人陆续出了镇南关;便大张旗鼓;排齐队伍;浩浩荡荡地向前进发。” 例句 我们要~地宣传社会主义优越性。
大张伟,中国大陆著名男歌手、词曲创作人,以其独特的音乐风格和魅力的嗓音征服了无数听众。他的歌曲旋律优美动人,歌词真挚感人,深受广大乐迷喜爱。
下面是大张伟唱的歌曲大全,希望能给大家带来美妙的听觉享受:
这首歌曲是大张伟的代表作之一,由他自己作词作曲,并以其出众的演唱技巧将歌词中的情感完美表达出来。这首歌歌词优美,旋律动人,讲述了一段感情中的心酸故事,引起了众多歌迷的共鸣。
这首歌曲是一首轻快的流行歌曲,歌词中充满着青春的活力和对美好未来的向往。大张伟用他靓丽的嗓音将这种青春感传递给了听众,让人感到乐观向上。
这首歌曲是大张伟和那英合唱的一首经典作品。歌曲中有着浓郁的电子音乐风格,旋律独特,让人耳目一新。大张伟和那英的声音相互融合,演绎出了一段跨越光年的爱情故事。
这首歌曲是一首充满回忆和怀旧情怀的歌曲,歌词中描述了年轻时代时的纯真、激情和梦想。大张伟用他独特的嗓音将这种情感表达得淋漓尽致,让听众不禁回忆起自己的青春岁月。
这首歌曲是大张伟的一首励志作品,歌词中传递了积极向上的信念和对幸福生活的追求。大张伟的嗓音充满力量,唱出了人们对爱情和生活的向往。
这首歌曲给人带来了一种清新的感觉,歌词中描绘了恋爱中的种种情绪,让人感到仿佛置身于恋爱的世界中。大张伟的嗓音温柔而饱满,为这首歌曲增添了无限的魅力。
这首歌曲是大张伟和林宥嘉合唱的一首感人作品,歌词中展现了爱情中的分离和不舍之情。大张伟和林宥嘉的声音相互呼应,用歌声表达了人们对真爱的珍视和守护。
这首歌曲是大张伟的一首自信之作,歌词中表达了一个人也可以过得很好的信念,鼓励着那些独自奋斗的人们。大张伟的嗓音有个人独特的魅力,让这首歌更加动听。
这首歌曲是大张伟与郁可唯合唱的一首温暖作品,歌词中诉说了对爱情的美好期待。大张伟和郁可唯的声音相互交融,将这份对爱情的期待演绎得感人至深。
这首歌曲是大张伟的一首深情之作,歌词中表达了对年少时梦想的追忆和对未来的期待。大张伟用他独特的嗓音将这种情感演绎得深情款款,让人感到心灵的震撼。
以上就是大张伟大张伟唱的歌曲大全,每一首歌曲都展现了他独特的音乐才华和独特的艺术魅力。希望大家喜欢这些优秀的歌曲,能够在音乐的海洋中享受美妙的感觉。
求职和招聘都是要自愿性的。只要大张会招你就可以了
忠心耿耿,耿耿于怀,大张旗鼓,旗鼓相当,理直气壮,气壮山河,万众一心,一心一意,颠倒黑白,黑白分明,与众不同,不同凡响^_^
在建筑物中,无线电通信是不可或缺的一部分。而对于无线电通信来说,天线是至关重要的。在本篇文章中,我们将介绍一种新型的天线——大张角射灯天线。
大张角射灯天线是一种新型的无线电通信天线,其设计灵感来自于传统的射灯天线。与传统的射灯天线不同的是,大张角射灯天线具有更大的张角和更高的发射功率。这种天线可以被用于各种建筑物中,包括高层建筑、大型商场和公共场所等。
大张角射灯天线具有以下优势:
更大的张角:大张角射灯天线可以实现更广泛的覆盖范围,从而提高了通信的可靠性和稳定性。
更高的发射功率:大张角射灯天线可以实现更高的发射功率,从而提高了通信的覆盖范围和可靠性。
更高的抗干扰能力:大张角射灯天线具有更高的抗干扰能力,可以有效地减少外界干扰对通信系统的影响。
大张角射灯天线可以被用于各种建筑物中,包括高层建筑、大型商场和公共场所等。这种天线可以实现更广泛的覆盖范围和更高的通信质量,从而提高了建筑物中的无线电通信的可靠性和稳定性。
随着无线电通信技术的不断发展,大张角射灯天线将会在未来得到更广泛的应用。同时,随着对天线性能要求的不断提高,大张角射灯天线也将会不断升级和完善,成为建筑物中无线电通信的重要组成部分。
总之,大张角射灯天线是一种非常有前途的新型无线电通信天线,它具有更大的张角、更高的发射功率和更高的抗干扰能力,可以被广泛地应用于各种建筑物中,为建筑物中的无线电通信提供更可靠的支持。
人间清醒大张伟低调娶胖妹素人:听听他的“清奇”婚姻观!!!
大张伟的妻子刘迎,是他的经纪人,一个胖胖的,名不见经传的素人。
很多人质疑他,“你已经是名人了,为什么选择这么朴素的爱情?”
这话说的很含蓄,更直接的意思是,你现在名利双收,为什么不选择更好的女人?
大张伟的回答真可谓人间清醒,活通透了!
“踏实”。
因为这个爱情观,大张伟还上了热搜,引发3.5亿人阅读。
有多少功成名就的人是因为“躁动”而妻离子散,而大张伟选择的是“踏实”。
要说,两人的爱情,要追溯到十几年前。
他是大明星,她是他的经纪人。
与刘迎的互动,大张伟肉眼可见的欢乐!快乐地像个傻子~
这样的日子让大张伟觉得朴实、安心。
他曾说自己的理想对象是“年画娃娃“,胖呼呼的。
果不其然,他娶了胖姑娘刘迎,他不在乎被人吐槽“不般配”。
谈到妻子,大张伟说:
“一见到她之后,就感觉整个春天的花都开了,就感觉整个世界都是亮的。”
这两年,大张伟成了综艺“全勤王”。
无论是语言类综艺如《奇葩说》《脱口秀》《吐槽大会》,
还是表演类节目《百变大咖秀》《天天向上》,
还是歌唱节目《蒙面歌王》《乐队的夏天》。
总之,你打开啥综艺,都能看到他。
奇怪的是,这个“聒噪”的段子手并不会让你觉得烦,
反而很希望看见他,看他怎样用清奇的脑回路给你的生活释压~
很多人说他“肤浅”,那是你没读懂背后的深沉!
就像贾玲对他的评价:
“他其实很深情,很专一,很符合一句话:别人笑我太疯癫,我笑他人看不穿。”
这让我想起来一前辈,周星驰。
从“星仔”到“星爷”,他一直很搞笑,
你看他的笑,总觉得他的笑背后有另外一层让人难以读懂的东西。
“一个人有多不正经,就能有多深情”,真的是这样。
鬼马的大张伟用他实际的婚姻选择,印证了这一点。
网上有句话,“最怕rapper唱情歌,最怕浪子说情话。”
他在《乐队的夏天》里聊的婚姻观,打动了无数人:
“冷酷的人之所以一直冷酷,是因为没有碰见他喜欢的人。”
碰见了,就愿意将所有笑容、所有花都献给她。
94年香港红磡的那场足以载入史册的万人演唱会,
魔岩三杰,窦唯、何勇、张楚,牵起了摇滚的滔天巨浪。
下面站着一个男孩,就是大张伟。
同样被热血点燃,并开始了自己的歌唱梦想。
如果18岁的大张伟知道汪峰也要穷得交不起房租,甚至连吃饭都费劲,我想他打死也不会碰摇滚。
可他的起步还蛮顺利的,第一首专辑《幸福的旁边》让他饱尝了赚到钱的乐趣!
也招来了好多桃花运。
大张伟被一茬茬的漂亮姑娘们,围追堵截。
青春期的大张伟显然还没具备老炮儿们的“摇滚精神”,
吓得连忙丢下句:“我明天还有小测验呢,我得赶紧复习去。”
落荒而逃。
大张伟没有心思理这些,从小到大,能让他较劲的不是姑娘,是钱!
穷人家孩子最怕什么?
最怕没钱。
没钱意味着没有太多东西。
10万块拿到手那天,大张伟用这10万块钱付了首付,买了楼房。
前所未有的幸福感充斥着这个小家,大张伟也明白了一个道理:唱歌写歌,能赚钱!
出生在北京磁器口的大张伟,是地道的北京胡同长大的孩子。
他的名字也很普通,叫“张伟”。
名字起得“简陋”,家里存款也不多。
他的愿望就是让父母过上好日子。
如今,流量本量的大张伟终于实现了自己的愿望。
他曾说过,自己的梦想是“赚到一个亿”,然后什么都不管地转身离开。
如今凭借着频繁在电视节目里露脸,不知道他这个“小目标”实现了没有?
但我们却发现这个宝藏男孩的深邃。
“名儿都是虚的,钱才是真的”,这句话的背后包含着多少辛酸顿悟的故事。
小学时期,凭借一首《小小少年》,大张伟拿下了区歌唱比赛一等奖。
“童星”出身的大张伟热爱音乐,为此结交了同样热爱音乐的王文博和郭阳。
三个人脑子一热,就组建了最早的“花儿乐队”。
人呐,一生要想出头,总会梦幻地碰上一个贵人。
花儿的乐队的贵人是“麦田守望者乐队”的吉他手。
三人在一次以为稀松平常的排练时,恰逢这位摇滚界前辈经过。
即刻决定,给这三位孩子一个表现的机会。
把他们带到了酒吧,对着半个摇滚圈名人——唐朝、窦唯、郑钧,痛快唱了几首自己的原创歌曲。
台下的摇滚前辈为之惊艳,当下正是出道。
更名为“花儿乐队”。
总以为,大张伟的歌唱事业会顺风顺水,就此巅峰了。
没想到,他一篇博文,宣布“自废摇滚武功”!
“你们愤怒吧,我不玩了,我赚钱去了”。
紧接着是一系列“口水歌”的诞生。一首首快乐简单的神曲,让大张伟身价倍增。也把“花儿乐队”,推到了前无古人的乐坛热度。万万想不到,火得一塌糊涂的《嘻唰唰》被网友翻出来是抄袭,一时间舆论几乎淹没了他的歌唱前途。当所有人都以为这个歌手再也不会火了的时候,不知道什么时候,他又悄悄地在屏幕上霸屏了。
甚至还有人调侃说:“这年头,不请大张伟都不好意思叫综艺。”起起伏伏,真的是人生的常态。多少聪明的人都折在这一层的领悟上。在别的歌手都纷纷被转型围困的时候,大张伟,早已有了“破局”的新气象。如今,三十而立,他再次上车,“大老师式”出圈金句,上了一个又一个热搜。人送外号“人间清醒”。
他在《幻乐之城》的综艺上,逗的天后王菲一阵阵发笑。
更有人说,大张伟专治王菲,一开口就能让王菲晓得直不起腰来~天后也丝毫不掩饰自己对大张伟的欣赏和喜欢!
在另一档节目中,上一代人的歌唱偶像毛阿敏同样直言夸赞。“你跟他聊天的时候,会觉得,这个家伙看过很多书,听过很多音乐,博学多才”。说到这里,不得不让人重新审视大张伟。喧嚣的表面下面,他又有多少让人惊喜的秘密呢?
“祸兮福所倚,福兮祸所伏”,人生就是起起伏伏。这个世界看似不公平,有人得势就一冲上天,有的人勤奋踏实却默默无闻。但是如果把时间拉长一点,就会发现这个世界真的很公平。凡是一夜暴富过的人,都一直在寻找一夜暴富的办法,结果再也没找到;凡是靠房子发财的人,基本上都没有形成其它赚钱的本领;凡是靠投机发财的人,其它方面往往都不尽人意,比如家庭和健康方面。那些从未一夜暴富的人,往往都有自己固定的赚钱能力,步步为营;那些一直靠自己的人,路越走越宽,被接纳的地方越来越多;那些有清晰定位和一技之长的人,幸福感更强,生活淡定安稳。
什么叫天道?大抵如此。
人生,真的不用着急,有的人先扬后抑,有的人先抑后扬,有人一步一个台阶。但是最后,每个人总会回归到最真实的自己。愿你在别人的故事里,见自己。
(作者:墨落)
之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。
训练数据:
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
检测数据:
sunny,hot,high,weak
结果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代码调用Mahout的工具类实现分类。
基本思想:
1. 构造分类数据。
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
接下来贴下我的代码实现=》
1. 构造分类数据:
在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。
数据文件格式,如D1文件内容: Sunny Hot High Weak
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
这三步,代码我就一次全贴出来;主要是两个类 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 测试代码
*/
public static void main(String[] args) {
//将训练数据转换成 vector数据
makeTrainVector();
//产生训练模型
makeModel(false);
//测试检测数据
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean参数是,是否递归删除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成训练模型失败!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("检测数据构造成vectors初始化时报错。。。。");
System.exit(4);
}
}
/**
* 加载字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加载df-count目录下TermDoc频率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1时表示总文档数
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要从dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用贝叶斯算法开始分类,并提取得分最好的分类label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("检测所属类别是:"+getCheckResult());
}
}
1. 请介绍一下WebGIS的概念和作用,以及在实际应用中的优势和挑战。
WebGIS是一种基于Web技术的地理信息系统,通过将地理数据和功能以可视化的方式呈现在Web浏览器中,实现地理空间数据的共享和分析。它可以用于地图浏览、空间查询、地理分析等多种应用场景。WebGIS的优势包括易于访问、跨平台、实时更新、可定制性强等,但也面临着数据安全性、性能优化、用户体验等挑战。
2. 请谈谈您在WebGIS开发方面的经验和技能。
我在WebGIS开发方面有丰富的经验和技能。我熟悉常用的WebGIS开发框架和工具,如ArcGIS API for JavaScript、Leaflet、OpenLayers等。我能够使用HTML、CSS和JavaScript等前端技术进行地图展示和交互设计,并能够使用后端技术如Python、Java等进行地理数据处理和分析。我还具备数据库管理和地理空间数据建模的能力,能够设计和优化WebGIS系统的架构。
3. 请描述一下您在以往项目中使用WebGIS解决的具体问题和取得的成果。
在以往的项目中,我使用WebGIS解决了许多具体问题并取得了显著的成果。例如,在一次城市规划项目中,我开发了一个基于WebGIS的交通流量分析系统,帮助规划师们评估不同交通方案的效果。另外,在一次环境监测项目中,我使用WebGIS技术实现了实时的空气质量监测和预警系统,提供了准确的空气质量数据和可视化的分析结果,帮助政府和公众做出相应的决策。
4. 请谈谈您对WebGIS未来发展的看法和期望。
我认为WebGIS在未来会继续发展壮大。随着云计算、大数据和人工智能等技术的不断进步,WebGIS将能够处理更大规模的地理数据、提供更丰富的地理分析功能,并与其他领域的技术进行深度融合。我期望未来的WebGIS能够更加智能化、个性化,为用户提供更好的地理信息服务,助力各行各业的决策和发展。