办公室的白板上写满了字。
李明的粉笔停在半空,眉头皱成一个疙瘩。
他转身看向另外四个同伴,又看看坐在会议桌旁的贾瀞雯。
“贾总,这个『网页爬虫』的概念……我们研究了三天,还是有点不明白。”他放下粉笔,拍了拍手上的粉灰,“文档上说,要让程序像蜘蛛一样在网上爬,自动发现和收集网页。
但具体怎么实现”
张涛推了推眼镜,翻开陈浩写的技术框架文档:“这里写了一些思路--从几个种子网站开始,提取页面上的连结,然后访问这些连结,再提取新连结。
理论上可行,但实际做起来问题很多。”
“什么问题”贾瀞雯问。
“比如,有些网站不允许被访问。”说话的是王磊,团队里最年轻的一个,北大研究生在读,“还有,网页格式千奇百怪,怎么准確提取连结再比如,如果程序陷入死循环怎么办”
贾瀞雯点点头。
这些她也不懂,但她知道该问谁。
“今天先到这里。”她看看表,“晚上我打电话问问陈总。
大家继续研究其他部分,分词算法那边有进展吗”
张涛摇摇头:“更难。
英文有空格分隔单词,中文是连在一起的。
『中华人民共和国』怎么分是『中华』『人民』『共和国』,还是『中华人民』『共和国』不同的分法,意思差別很大。”
会议室里一阵沉默。
五个年轻人你看看我,我看看你,都从对方眼里看到同样的困惑--这个项目,比他们想像的要难得多。
晚上八点,贾瀞雯在办公室拨通了陈浩的电话。
“餵”陈浩的声音有点喘,背景里有嘈杂的人声。
“在忙”
“刚下戏,换衣服呢。”陈浩走到安静的地方,“说吧,今天遇到什么问题了”
贾瀞雯把白天的討论复述了一遍。
陈浩听完,笑了:“正常,这些確实是难点。
你记一下,我一个个说。”
贾瀞雯拿起笔。
“第一,爬虫的伦理问题。
我们要遵守robots协议,就是网站根目录下的一个文本文件,告诉爬虫哪些页面可以访问,哪些不行。
这个必须遵守,不然我们会惹麻烦。”
“第二,网页格式问题。
现在网页主要是htl,虽然各家写法不一样,但基本结构是固定的。
连结都在<ahref=>標籤里,用正则表达式可以提取。”
贾瀞雯打断:“正则表达式是什么”
“一种文本匹配的方法。”陈浩解释,“比如你要找所有以『??开头的字符串。
这个让技术人员去查资料,他们懂。”
“第三,防止死循环。
每个访问过的连结都要记录下来,下次遇到就直接跳过。
还要设置深度限制,不能无限爬下去。”
贾瀞雯飞快地记著。
陈浩的声音很平静,好像这些难题都不是问题。
“那中文分词呢”她问,“这个他们觉得特別难。”
电话那头沉默了一会儿。
“这个確实难。”陈浩承认,“英文搜索可以直接按单词匹配,中文必须先把句子切分成有意义的词语。
我们需要的不是机械切分,而是理解语义后的智能切分。”
“怎么做”
“两种思路。”陈浩说,“一是基於词典,把常用的词做成词典库,然后匹配。
二是基於统计,分析大量文本,找出经常连在一起出现的字组合。
最好的办法是两者结合。”
贾瀞雯记下最后几个字,笔尖顿了顿:“浩哥,这些概念你怎么都懂你又没学过计算机。”
陈浩笑了:“我是不懂具体编程,但我懂逻辑,懂原理。