在那張地圖上,他們相距並不遙遠(yuǎn)
在那張地圖上,他們相距並不遙遠(yuǎn)
7月25日15時,河南暴雨求助資訊網(wǎng)站的頁面截圖。
當(dāng)?shù)貢r間7月22日晚上,李天石團隊開第一次會議。
當(dāng)?shù)貢r間7月22日7時,團隊成員在刪除“粉絲”“飯圈”相關(guān)的條目。
GitHub代碼託管平臺記錄下每位程式員的貢獻圖。坐標(biāo)軸上顯示了隨著時間變化,代碼的改動數(shù)目。
東北女孩李天石在美國卡內(nèi)基梅隆大學(xué)攻讀博士學(xué)位。這個夏天,她和男友沈俊睿過著典型的“博六”生活,每天開組會、搞科研;4073公里外的華盛頓大學(xué),博士生張明瑞最近正忙著暑期實習(xí),在科技公司寫代碼。下班回家,他打開攢了好久的日劇劇集,發(fā)誓“今晚絕不加班”;11172公里外的北京,北京大學(xué)前沿計算研究中心的博士生蔣鴻達正忙著幫實驗室開展保研季的招生工作、推進手頭項目。
在7月裏的某一天,這些年輕人並不知道,他們會因一場暴雨展開一次跨國合作。
李天石是在刷微博時,注意到河南的雨。她關(guān)注災(zāi)情實時動態(tài),點開熱搜詞條,看到大量求救資訊。
“焦慮、擔(dān)心。”她回憶,當(dāng)時問自己,“我能做些什麼?”
河南遭遇強降雨天氣,鄭州是輿論關(guān)注的絕對中心。但李天石注意到,當(dāng)她點開一條鄭州雨情的資訊時,就會在評論區(qū)看見被“淹沒”的聲音:“看看衛(wèi)輝吧”“鞏義請求救援”等。到了北京時間7月21日,微博“河南互助救援”話題下已涌入14萬條討論博文。求救資訊繁亂、龐雜,熱度稍低的消息一瞬間就被資訊的海洋吞沒。
李天石思考,能不能建一個網(wǎng)頁,將求助消息的地理位置提取出來,標(biāo)注在地圖上,以二維的、扁平的圖像直觀地呈現(xiàn)災(zāi)情。
太平洋夏令時7月21日22時44分,她和男友在朋友圈發(fā)佈了這一想法。
看到李天石的朋友圈,身在華盛頓、發(fā)誓“今晚絕不寫代碼”的張明瑞食言了。他掏出工作電腦,打開程式語言界面。北京的蔣鴻達則被導(dǎo)師告知:留美學(xué)生團隊正在針對河南災(zāi)情製作救援資訊地圖,需要他的幫助。
就這樣,在不同時區(qū),4名初創(chuàng)成員開始搭建第一版救援地圖。
這支小分隊成立後5小時,網(wǎng)頁正式上線。
“這個項目更像一座橋。”張明瑞在解釋程式運作原理時這樣比喻,橋的一端是網(wǎng)際網(wǎng)路中海量的求救資訊,另一端則是呈現(xiàn)在用戶面前的地圖。電腦會按程式指令,將網(wǎng)路發(fā)佈的求救資訊中的地址提取出來,匯總到已有的地圖軟體後臺,地圖軟體會在需要救援的地方打上一個紅色的標(biāo)記。流經(jīng)鶴壁的衛(wèi)河被暴雨灌滿,洪水漫上堤壩,村民發(fā)出了求救資訊。機器獲取到救援資訊,在地圖上標(biāo)注紅點:“浚縣陳村北人工堤快要決堤,請求救援!請求救援!”
開發(fā)團隊將網(wǎng)頁連結(jié)發(fā)在朋友圈,有朋友幫忙轉(zhuǎn)到微博,希望能擴大受眾面。
隨著時間推移,資訊流不斷匯聚到地圖上,紅色坐標(biāo)顯示的是求救者位置,經(jīng)緯度精確到小數(shù)點後6位。那條標(biāo)有河南拼音的網(wǎng)址出現(xiàn)在朋友圈、微博、科技論壇……地圖開始擴散。
李天石和她的團隊起初並沒有想到,這張地圖能引來很多人的關(guān)注。“當(dāng)初就想著把它搭出來,能幫到人就好,傳播不開的話就當(dāng)作一次練手。”事實上,就在上線的第二天,網(wǎng)頁就涌入了8萬多的瀏覽量。宣傳救援地圖的那條微博,因轉(zhuǎn)發(fā)量過大而被限流。救援地圖上線的當(dāng)天,張明瑞接到了河南開封藍天救援隊的電話,他們希望能在救援地圖上發(fā)佈消息,徵集雨衣、膠鞋以及手電筒。
“程式已經(jīng)開始了它的生命。”李天石和她的團隊意識到,“在最初製作的時候,程式的走向完全靠開發(fā)者的意願,但當(dāng)更多的人了解和使用它時,它就不再完全屬於你,用戶的需求、想法決定了它的成長軌跡。”在救援地圖的界面中,李天石開出“版本日誌”小專欄,用於記錄程式的更新曆程。
優(yōu)化資訊篩選是最為緊要的。最初,電腦通過“河南”“救援”“暴雨”等關(guān)鍵詞在微博中提取資訊。但四人小分隊很快發(fā)現(xiàn),這種粗篩的方式會讓不少無關(guān)資訊混入其中。
“誤抓”最多的是明星救災(zāi)、捐款的內(nèi)容。張明瑞主要負(fù)責(zé)文本抓取和處理,程式上線初期,某些明星的名字一直佔據(jù)他的電腦螢?zāi)弧?/p>
張明瑞説:“如果真正有需求的用戶在救援地圖中看到一則明星災(zāi)區(qū)救援的消息,他肯定就不想往下看了。”他的首要任務(wù)就是將這些無關(guān)資訊剔除出去。
好在,明星的宣傳文案“有一套自己的話術(shù)”,電腦程式通過學(xué)習(xí)能夠識別並篩除相關(guān)內(nèi)容。“我理解粉絲的心理,自家愛豆做了好事,肯定希望擴散讓更多人知道,但佔用救援資訊傳播的通道來增加曝光量確實不妥。”張明瑞與這類無效資訊鬥爭了小半天:“這是對救援標(biāo)簽的污染。”
地圖程式還在不斷迭代。“救援資訊是有時效性的。”開發(fā)團隊意識到這一點。在初代救援地圖中,求助的標(biāo)識密布整個河南版圖,李天石在想,是否能在二維空間呈現(xiàn)的基礎(chǔ)上,增加時間篩選的維度,“救援隊能根據(jù)時間節(jié)點更快作出救援判斷,關(guān)注災(zāi)情的網(wǎng)友也能直觀地看到事態(tài)發(fā)展。”最終,他們通過增加“時間軸”的控件實現(xiàn)了這一需求。拉動時間軸,可以看到從最近2個小時到過去12小時,每一個小時內(nèi)所發(fā)佈的資訊。
李天石的團隊也更新了。曹禹是清華大學(xué)軟體學(xué)院的在讀博士生。救援地圖上線第二天,他申請參與到前端的“可視化開發(fā)”;博士生徐栩海是張明瑞的同學(xué),他和自然語言處理方向的碩士生孫壬梁一起,共同負(fù)責(zé)數(shù)據(jù)標(biāo)注及文本分類模型的搭建。
參與開發(fā)的遠(yuǎn)不只團隊名單中的人。李天石將程式發(fā)佈在論壇中,不少網(wǎng)友開始幫忙調(diào)試程式、提建議,還有人直接把寫好的代碼交給團隊,希望能整合進程式。
接受採訪時,李天石將網(wǎng)頁地圖左上角的資訊列表圈了出來。“原本這個列表遮住了三分之一的螢?zāi)唬醽碛芯W(wǎng)友幫我們加了一個折疊功能。”她指向列表右側(cè)一個淺藍色小箭頭,點擊,列表瞬間縮入螢?zāi)蛔髠?cè),“這是一個很小的功能改動,但卻給地圖呈現(xiàn)留出了更多空間。”
還有網(wǎng)友給他們提交了代碼,能將獲取的實時數(shù)據(jù)自動搬運到文本識別的文件夾。“這是特別好的想法,起初我們需要隔段時間把機器獲取的資訊複製、粘貼過去,這會很麻煩。”李天石介紹,當(dāng)時的救援資訊量不大,無法與網(wǎng)友提供的代碼進行匹配,但網(wǎng)友的思路給團隊帶來啟發(fā),“我們借用了他的腳本實現(xiàn)了實時的數(shù)據(jù)更新。”
網(wǎng)頁操作的流暢度得到提升,救援資訊篩選、提取的精度也不斷提高。彼時,救命文檔刷爆網(wǎng)路,張明瑞提出用共用文檔“飛書”輔助程式運作。開發(fā)團隊開始與其他志願者團隊對接,將已審核的救援資訊整合進入文檔,再供機器處理,在地圖上呈現(xiàn)。
隨著共用文檔的引入,團隊中加入了人工審核員的角色。文檔中,志願者會根據(jù)資訊的內(nèi)容打上“物資”“求助”等標(biāo)簽,進行人工分類。人工的介入本不在李天石的計劃中,“我一開始是希望它完全自動化,但後來意識到,其實人在裏面依然是重要的角色。” 機器完成了諸如數(shù)據(jù)搬運、粗篩以及地圖標(biāo)誌等重復(fù)性工作,更為細(xì)緻的分類工作需要人來完成。
“機器也能做類似的分揀,但準(zhǔn)確度不夠。在時間有限且數(shù)據(jù)雜亂的情況下,求助於人是更好的選擇。”張明瑞是“增加人工審核員”想法的提出者,審核員一欄留下了他的名字,“它還能形成一個回路,人對資訊的標(biāo)識結(jié)果會反饋給機器,機器通過學(xué)習(xí)能進一步優(yōu)化它們的識別。”這一次,機器和人配合完美。
截至7月30日,第九版救援地圖程式更新完畢。在一週內(nèi),地圖共收錄8560條有效資訊,3.8萬個獨立賬號接入網(wǎng)頁,28萬次訪問……然而,這遠(yuǎn)未到終點。
“我也想出一份力,但我不會寫代碼怎麼辦?”救援地圖發(fā)佈以來,開發(fā)團隊的私信框一直收到類似問題。“當(dāng)程式面向更廣泛的群體時,你才會發(fā)現(xiàn),那些自己或者身邊人都認(rèn)為很容易的東西,對別人而言是有門檻的。”李天石後悔沒能將“降低技術(shù)門檻”這一條納入程式開發(fā)的考量。
“人工審核員”這一崗位,就因為技術(shù)門檻將不少熱心人士“卡”了出去。張明瑞曾經(jīng)和兩個志願者團隊進行對接,對方希望協(xié)助團隊篩選、分類和審核的工作。然而,為了能讓機器讀懂人工分揀的結(jié)果,志願者需要接受培訓(xùn),按照嚴(yán)格的格式進行資訊處理。“這需要一定的學(xué)習(xí)週期和成本。”張明瑞説,“但時間緊迫,要優(yōu)先用最簡單、最易接受的方式。”志願者團隊沒能真正加入,倒是他電腦係的幾名師弟參與其中。
李天石還想到了一個細(xì)節(jié)。程式最開始上線時,前端開發(fā)還未完善,打開網(wǎng)頁時會出現(xiàn)卡頓的情況。評論區(qū)有網(wǎng)友留言,“外地網(wǎng)友儘量不要點開,不要給伺服器壓力,保持網(wǎng)頁流暢”。“真的不是因為這個。”李天石半是感動半是無奈地表示,“大家對技術(shù)細(xì)節(jié)不太了解,以為伺服器壓力太大,其實是我們開發(fā)太匆忙,還沒優(yōu)化好。”
“用更低門檻、更廣泛易懂的方法,讓大家使用這一程式,感受到程式的價值。” 7月31日晚,開發(fā)團隊開了個小會,“讓程式更友好,操作更簡單”將是他們之後的調(diào)整目標(biāo)。
李天石的想法不止於此。“我想更多地去了解這種可視化功能在什麼場景、對哪些群體是比較有用的。”雖然相隔萬里,她感覺自己也站在那場暴雨中,她的身份是一名關(guān)注災(zāi)情動態(tài)的網(wǎng)民,她需要的是直觀、實時的災(zāi)情動態(tài),“這也是我憑直覺開發(fā)程式的動因。”但在救援的過程中,還有更多方的力量,求救者、救援隊、志願者,每一個群體都有他們的訴求。
她正在思考一個計劃,災(zāi)情結(jié)束後,她要去聯(lián)繫志願者與救援隊,摸清他們的工作流程,看看“哪些問題能夠讓機器介入並解決”。她還想看志願者使用程式的過程。講到自己的專業(yè)領(lǐng)域,李天石有些興奮,“我會記錄下他們點擊了哪些功能,對哪些資訊比較感興趣,包括游標(biāo)會在哪些地方來回劃過。”這些內(nèi)容,能幫助她更好地把握程式優(yōu)化的方向。
救援地圖的開發(fā)者們相信,可視化技術(shù)會為這類事件帶來更多幫助。比如,中國留學(xué)生團隊在“一畝三分地”留學(xué)論壇中開發(fā)了“世界疫情實時動態(tài)”的網(wǎng)頁,以可視化方式實時呈現(xiàn)新冠肺炎疫情的分佈與發(fā)展,它也成為美國疾控中心(CDC)參考數(shù)據(jù)的來源之一;國外一款名為CITIZEN的程式,能呈現(xiàn)用戶周邊的突發(fā)事件以及新冠肺炎疫情傳播情況,從而幫助用戶規(guī)避風(fēng)險……目前,李天石和她的團隊也已將救援地圖程式“開源”,歡迎網(wǎng)友借用或者協(xié)助更新。
隨著河南災(zāi)情的緩解,網(wǎng)頁的訪問量也開始下降。撲在地圖上快兩周的李天石,需要把手頭上的科研任務(wù)趕一趕;張明瑞終於有時間把落下的日劇補上,停更的個人公眾號也恢復(fù)更新;蔣鴻達收到了好消息,論文被頂級學(xué)術(shù)會議收錄,上週四,他和實驗室的朋友聚在一起觀看東京奧運會乒乓球男單準(zhǔn)決賽,為馬龍歡呼。
地圖上交疊密布的紅色標(biāo)簽已變?yōu)榱阈巧⒙涞募t點。最近12小時內(nèi),唯一一條消息寫著“需要蔬菜、雞蛋2000斤、味精10袋”。李天石想,等到地圖上不再出現(xiàn)新的求助資訊,他們這一階段的任務(wù)就完成了。
實習(xí)生 盧思薇 來源:中國青年報