办公室的白板上写满了字。
李明的粉笔停在半空,眉头皱成一个疙瘩。
他转身看向另外四个同伴,又看看坐在会议桌旁的贾瀞雯。
“贾总,这个‘网页爬虫’的概念……我们研究了三天,还是有点不明白。”他放下粉笔,拍了拍手上的粉灰,“文档上说,要让程序像蜘蛛一样在网上爬,自动发现和收集网页。
但具体怎么实现?”
张涛推了推眼镜,翻开陈浩写的技术框架文档:“这里写了一些思路--从几个种子网站开始,提取页面上的链接,然后访问这些链接,再提取新链接。
理论上可行,但实际做起来问题很多。”
“什么问题?”贾瀞雯问。
“比如,有些网站不允许被访问。”说话的是王磊,团队里最年轻的一个,北大研究生在读,“还有,网页格式千奇百怪,怎么准确提取链接?再比如,如果程序陷入死循环怎么办?”
贾瀞雯点点头。
这些她也不懂,但她知道该问谁。
“今天先到这里。”她看看表,“晚上我打电话问问陈总。
大家继续研究其他部分,分词算法那边有进展吗?”
张涛摇摇头:“更难。
英文有空格分隔单词,中文是连在一起的。
‘中华人民共和国’怎么分?是‘中华’‘人民’‘共和国’,还是‘中华人民’‘共和国’?不同的分法,意思差别很大。”
会议室里一阵沉默。
五个年轻人你看看我,我看看你,都从对方眼里看到同样的困惑--这个项目,比他们想象的要难得多。
晚上八点,贾瀞雯在办公室拨通了陈浩的电话。
“喂?”陈浩的声音有点喘,背景里有嘈杂的人声。
“在忙?”
“刚下戏,换衣服呢。”陈浩走到安静的地方,“说吧,今天遇到什么问题了?”
贾瀞雯把白天的讨论复述了一遍。
陈浩听完,笑了:“正常,这些确实是难点。
你记一下,我一个个说。”
贾瀞雯拿起笔。
“第一,爬虫的伦理问题。
我们要遵守rObOtS协议,就是网站根目录下的一个文本文件,告诉爬虫哪些页面可以访问,哪些不行。
这个必须遵守,不然我们会惹麻烦。”
“第二,网页格式问题。
现在网页主要是HTML,虽然各家写法不一样,但基本结构是固定的。
链接都在<a href=>标签里,用正则表达式可以提取。”
贾瀞雯打断:“正则表达式是什么?”
“一种文本匹配的方法。”陈浩解释,“比如你要找所有以‘http://’开头的字符串。
这个让技术人员去查资料,他们懂。”
“第三,防止死循环。
每个访问过的链接都要记录下来,下次遇到就直接跳过。
还要设置深度限制,不能无限爬下去。”
贾瀞雯飞快地记着。
陈浩的声音很平静,好像这些难题都不是问题。
“那中文分词呢?”她问,“这个他们觉得特别难。”
电话那头沉默了一会儿。
“这个确实难。”陈浩承认,“英文搜索可以直接按单词匹配,中文必须先把句子切分成有意义的词语。
我们需要的不是机械切分,而是理解语义后的智能切分。”
“怎么做?”
“两种思路。”陈浩说,“一是基于词典,把常用的词做成词典库,然后匹配。
二是基于统计,分析大量文本,找出经常连在一起出现的字组合。
最好的办法是两者结合。”
贾瀞雯记下最后几个字,笔尖顿了顿:“浩哥,这些概念你怎么都懂?你又没学过计算机。”
陈浩笑了:“我是不懂具体编程,但我懂逻辑,懂原理。
而且我看得多,想得多。
搜索引擎的核心不是技术多炫,而是理解人想要什么,然后从数据里找出来。”
他顿了顿:“瀞雯,你告诉团队,别被技术细节吓住。
我们不是在写完美的学术论文,是在做一个能用的工具。
第一版可以粗糙,可以有问题,但要快,要让用户能用上。
改进可以慢慢来。”
挂断电话后,贾瀞雯把笔记整理成文档,打印了五份。
第二天开会,她把陈浩的话转述给团队。
“陈总说,第一版可以粗糙,但要快。”她看着五张年轻的脸,“我们不求完美,但求可用。”
李明眼睛一亮:“这就对了。
我们总想一次做到最好,结果越想越不敢动手。
其实可以先做个最简单的版本,能跑起来就行。”
“对!”张涛一拍桌子,“爬虫可以先从几个固定的网站开始,比如新闻网站。
这些网站结构规范,容易抓取。
分词可以先做基于词典的简单版本,复杂的以后再说。”
团队的气氛活跃起来。
年轻人就是这样,不怕困难,就怕迷茫。
一旦有了方向,哪怕方向不完美,他们也敢往前冲。
三天后,新的问题来了。
这次是王磊提出的。
他在研究分词算法时,遇到了一个具体难题。
“贾总,我们试了基于词典的方法,但遇到一个问题。”王磊在白板上写了个例子,“比如‘乒乓球拍卖完了’这句话。
怎么分?”
他画出两种分法:“‘乒乓球/拍卖/完了’,这是说乒乓球被拍卖掉了。
但也可以是‘乒乓/球拍/卖完了’,这是说球拍卖光了。
同一个句子,两种分法,意思完全不一样。”
贾瀞雯看着白板上的句子,也皱起眉。
确实,这太难了。
当晚的电话汇报,她重点说了这个问题。
陈浩听完,没有马上回答。
“这个问题很关键。”他说,“中文的歧义切分是搜索引擎必须要解决的。
这样,你让团队等一下,我想想。”
电话挂断了。
贾瀞雯以为陈浩要思考几天,没想到第二天一早,她就接到了电话。
“瀞雯,我画了个图。”陈浩的声音听起来有些疲惫,像是熬了夜,“我让助理去传真给你,你看一下。”
半小时后,传真机响了。
五页纸,上面是手绘的流程图和说明。
贾瀞雯拿起来看。
第一页是总览,标题是“中文分词歧义处理逻辑”。
后面四页是详细的流程图,每一步都有说明。
她看不懂技术细节,但能看懂思路。
陈浩提出了一个“双向最大匹配”的方法。
从左到右扫描一遍,从右到左再扫描一遍,比较两种结果。
如果一致,就用这个结果。
如果不一致,就启用歧义处理规则--检查上下文,查词典,甚至用简单的概率统计。
最下面还有一行小字:初期可用简单规则,后续逐步完善。
贾瀞雯把传真复印了五份。
团队看到后,会议室里炸开了锅。
【跪求礼物,免费的为爱发电也行!】