最老程序員創(chuàng)業(yè)札記:全文檢索、數(shù)據(jù)挖掘、推薦引擎應(yīng)用2
吳言的直接上司張宏宇比他小10歲,是一個北大畢業(yè)的碩士,頭腦相當(dāng)靈活,辦事效率非常高,常常別人還不明白是怎么回事的時侯他就恍然大悟了。他的頭銜是研發(fā)總監(jiān),實(shí)際上就是研發(fā)部門經(jīng)理,手下有20幾個人,他還有一個漂亮的女朋友,靚照就放在筆記本的桌面上,每次開會時,都讓這些程序員們眼饞得直流口水。哎,天下的好事怎么都讓他一人占盡了呢!
事情的起因很偶然,公司準(zhǔn)備在網(wǎng)上商城開始銷售化妝品,需要研發(fā)部門提供推薦功能,給用戶推薦適合她們需求的化妝品。但是當(dāng)前的推薦引擎是通過海量數(shù)據(jù)挖掘產(chǎn)生推薦結(jié)果的,因此需要對現(xiàn)有推薦算法進(jìn)行改進(jìn)。但是張宏宇在會上直接承諾在本周內(nèi)搞定。由于吳言比較資深,列席了這次管理會議,在會上提出了不同的意見,吳言認(rèn)為應(yīng)該采用基于內(nèi)容的推薦引擎,而目前公司采用的是基于機(jī)器學(xué)習(xí)的推薦引擎,因此需要更長的時間進(jìn)行預(yù)研,才能找出合理的實(shí)現(xiàn)方案,兩人甚至還發(fā)生了頗為激烈的爭吵,但是管理層還是選擇了相信年輕有為的研發(fā)總監(jiān),拍板本周推出這個功能。
吳言回到坐位上,心情一如既往的不太好,不過已經(jīng)習(xí)慣了,高層從來沒有聽取過底層程序員的意見,所謂聽取一線技術(shù)人員意見也只是個形式而已。哎,想想自己的同學(xué)小A,現(xiàn)在已經(jīng)做到研發(fā)副總了,還有小B,做為華北區(qū)銷售總監(jiān),早就老婆開寶馬自己開奔馳了......再看看自己,還在這里的最底層郁悶著。
吳言正在坐位上胡思亂想,忽然有人從背后拍了一下他的肩膀,把他一下從暇想中拉回了現(xiàn)實(shí),輕輕驚叫了一聲,回頭一看,原來是上司張宏宇。
“對不起,老吳!嚇了你一跳吧!”張宏宇輕松的說著?!拔蚁脒@周還剩下兩天了,我們最好今天就想出一個臨時解決方案,我陪你一起加下班,你這邊沒問題吧!”
吳言心中暗想,又來這一套,明明自己瞎承諾,卻讓我來替你擺平,活都我做回頭功勞都是你的。雖然心里不滿,但是吳言還是很勉強(qiáng)的說:“應(yīng)該沒問題?!睆埡暧畹玫搅俗约盒枰拇饛?fù),歡快地說:“太好了,謝謝!謝謝!”,然后風(fēng)一般的回到了他在窗邊有個簡易隔斷的老板桌那去了。
整個下午及晚上,吳言都在座位上編寫初始數(shù)據(jù)、初始數(shù)據(jù)導(dǎo)入程序、推薦引擎新接口,然后是測試,調(diào)試查找BUG。那邊張宏宇又是去到研發(fā)副總王永輝王總的大辦公室去聊天,請王總吃晚飯,期間不時過來問一下吳言進(jìn)展情況。
時間過得真快,轉(zhuǎn)眼已經(jīng)十一點(diǎn)多了,終于通過編寫輔助數(shù)據(jù),可以實(shí)現(xiàn)通過機(jī)器學(xué)習(xí)推薦算法向用戶推薦化妝品的原型了,張宏宇看到了更是興奮異常,連說:“太好了!太好了!辛苦!辛苦!趕緊回家休息吧!明天還得上班呢!今天打車回去,明天拿票過來報銷!”
聽著這些俗套的話,吳言心里沒有任何感覺。坐在出租車?yán)?,吳言看著車窗外如水的夜色,心中一個聲音強(qiáng)烈的叫著,再也不能這樣了,我要改變!雖然這并不是第一次,但是這次卻是最強(qiáng)烈的一次。
整整一夜,吳言被這個念頭折磨得難以入睡,我要怎么改變現(xiàn)狀呢?再換一份工作?天下烏鴉一般黑,新公司未必比現(xiàn)在的強(qiáng)多少。出路?出路?......是不是可以創(chuàng)業(yè)?這個念頭在吳言的頭腦里一閃,興奮得幾乎使他從床上跳起來,雖然創(chuàng)業(yè)的念頭以前也有過,但是這一次卻像是一個處在黑暗中的人,看到遠(yuǎn)方的一盞明燈一樣,整個人都亢奮起來。
第二天吳言起了個大早,不到八點(diǎn)就來到了公司,公司里還空無一人,他要開始準(zhǔn)備創(chuàng)業(yè)了,這個想法只要想想就讓他覺得很興奮。程序員創(chuàng)業(yè)準(zhǔn)備過程十分簡單,吳言從產(chǎn)生創(chuàng)業(yè)想法,到確定創(chuàng)業(yè)方向,也就只有兩三個小時的時間,接下來就是開干了。
首先是到Google上搜創(chuàng)業(yè)方向,從一大堆的搜索結(jié)果中,吳言注意到了SNS,不錯這造就了人人網(wǎng)、開心網(wǎng)、新浪微博,然后是電子商務(wù),不錯電子商務(wù)造就了馬云,這個當(dāng)代的創(chuàng)業(yè)教父級人物。忽然他看到了社會化電子商務(wù),電子商務(wù)與SNS的融合,社交購物元年,好像是當(dāng)前的一個熱點(diǎn)。搜一下社會化電子商務(wù),發(fā)現(xiàn)已經(jīng)有人在女裝、化妝品等方面已經(jīng)開始做了,不過其他行業(yè)還未見涉及。社會化電子商務(wù)可以用到他的全文檢索、數(shù)據(jù)挖掘、推薦引擎的技術(shù)背景,同時只需要聚合其他電子商務(wù)網(wǎng)站內(nèi)容,不用考慮進(jìn)銷存等讓人犯愁的事。對!就做這個方向。但是電子商務(wù)的種類很多,到底做哪個類別呢?服裝、化妝品等等自己不熟悉,而且已經(jīng)有人在做了,不如做3C電器吧,聚合京東、卓越、庫巴、500城等電器商城,能讓消費(fèi)者直接比較同一商品在不同網(wǎng)上商城的價格,而不用到各個商城去比較,這本身對消費(fèi)者就有意義。
確定了創(chuàng)業(yè)大方向后,說干就干,第一件事就是實(shí)現(xiàn)從各大電器商城網(wǎng)頁抓取功能,網(wǎng)頁抓取可以使用Apache的HttpClient,網(wǎng)頁分析可以采用Jsoup,但是出于程序員的本能,發(fā)現(xiàn)只需要十幾行代碼就可以實(shí)現(xiàn)的網(wǎng)頁抓取功能,用Apache HttpClient光下載所需軟件就需要幾M,索性就自己寫吧,從頭開始的成就感可比采用開源軟件強(qiáng)烈多了。
在Eclipse下建立一個新工程,創(chuàng)建網(wǎng)絡(luò)爬蟲接口WebCrawler,然后建立專門針對京東的網(wǎng)絡(luò)爬蟲類JdCrawler,實(shí)現(xiàn)接口方法getContent,輸入京東商城的網(wǎng)址http://www.360buy.com/,首先發(fā)現(xiàn)京東的首頁好大,幾經(jīng)調(diào)整Buffer的大小,終于完整下載下來京東商城首頁,第一眼就發(fā)現(xiàn),京東商城利用HTML中的meta屬性,增加了關(guān)鍵詞的密度,算是一種搜索引擎優(yōu)化(SEO)的實(shí)用小技巧吧。
然后是建立開源項(xiàng)目,為什么要建開源項(xiàng)目呢?因?yàn)閯?chuàng)業(yè)這事成功率很低,即使不成功,能夠做一個不錯的開源軟件也是不錯的。
吳言首先嘗試了googlecode,注冊用戶創(chuàng)建項(xiàng)目都很順利,但是當(dāng)要上傳代碼時就發(fā)現(xiàn)有問題了,因?yàn)閲鴥?nèi)好像屏愛蔽了獲取SVN密碼的鏈接,沒有密碼,當(dāng)然就沒有辦法上傳了。
吳言只好選擇在Sourceforge上創(chuàng)建了自己的開源項(xiàng)目sep3c,選用SVN作為版本控制工具,項(xiàng)目介紹及WiKi都采用了英文,雖然可能有些詞不達(dá)意,但是他想把這個項(xiàng)目做成國際級的項(xiàng)目,所以必須采用英文。
注:與本文相關(guān)的開源項(xiàng)目:http://sourceforge.net/projects/sep3c 。不過項(xiàng)目還處于早期階段,目前只有空項(xiàng)目,只有十幾行網(wǎng)頁抓取的代碼,不過隨著書中內(nèi)容的展開,項(xiàng)目會逐漸具有越來越多的功能。
浙公網(wǎng)安備 33010602011771號