百度ä¸æ–‡åˆ†è¯ç®—法分æžä¹‹ä¸€
查询处ç†ä»¥åŠåˆ†è¯æŠ€æœ¯
éšç€æœç´¢ç»æµŽçš„å´›èµ·ï¼Œäººä»¬å¼€å§‹è¶ŠåŠ å…³æ³¨å…¨çƒå„大æœç´¢å¼•æ“Žçš„性能ã€æŠ€æœ¯å’Œæ—¥æµé‡ã€‚作为ä¼ä¸šï¼Œä¼šæ ¹æ®æœç´¢å¼•æ“Žçš„知å度以åŠæ—¥æµé‡æ¥é€‰æ‹©æ˜¯å¦è¦æŠ•æ”¾å¹¿å‘Šç‰ï¼›ä½œä¸ºæ™®é€šç½‘æ°‘ï¼Œä¼šæ ¹æ®æœç´¢å¼•æ“Žçš„性能和技术æ¥é€‰æ‹©è‡ªå·±å–œæ¬¢çš„引擎查找资料;作为技术人员,会把有代表性的æœç´¢å¼•æ“Žä½œä¸ºç ”究对象. æœç´¢å¼•æ“Žç»æµŽçš„崛起,åˆä¸€æ¬¡å‘人们è¯æ˜Žäº†ç½‘络所蕴è—的巨大商机。网络离开了æœç´¢å°†åªå‰©ä¸‹ç©ºæ´žæ‚乱的数æ®ï¼Œä»¥åŠå¤§é‡ç‰å¾…去费力挖掘的金矿。
但是,如何设计一个高效的æœç´¢å¼•æ“Ž?我们å¯ä»¥ä»¥ç™¾åº¦æ‰€é‡‡å–的技术手段æ¥æŽ¢è®¨å¦‚何设计一个实用的æœç´¢å¼•æ“Ž.æœç´¢å¼•æ“Žæ¶‰åŠåˆ°è®¸å¤šæŠ€æœ¯ç‚¹,比如查询处ç†,排åºç®—法,页é¢æŠ“å–算法,CACHE机制,ANTI-SPAMç‰ç‰.这些技术细节,作为商业公å¸çš„æœç´¢å¼•æ“ŽæœåŠ¡æ供商比如百度,GOOGLEç‰æ˜¯ä¸ä¼šå…¬ä¹‹äºŽä¼—çš„.我们å¯ä»¥å°†çŽ°æœ‰çš„æœç´¢å¼•æ“Žçœ‹ä½œä¸€ä¸ªé»‘ç›’,通过å‘黑盒æ交输入,判æ–黑盒返回的输出大致判æ–黑盒里é¢ä¸ä¸ºäººçŸ¥çš„技术细节.
查询处ç†ä¸Žåˆ†è¯æ˜¯ä¸€ä¸ªä¸æ–‡æœç´¢å¼•æ“Žå¿…ä¸å¯å°‘的工作,而百度作为一个典型的ä¸æ–‡æœç´¢å¼•æ“Žä¸€ç›´å¼ºè°ƒå…¶â€ä¸æ–‡å¤„ç†â€æ–¹é¢å…·æœ‰å…¶å®ƒæœç´¢å¼•æ“Žæ‰€ä¸å…·æœ‰çš„关键技术和优势.那么我们就æ¥çœ‹çœ‹ç™¾åº¦åˆ°åº•é‡‡ç”¨äº†å“ªäº›æ‰€è°“çš„æ ¸å¿ƒæŠ€æœ¯.
我们分两个部分æ¥è®²è¿°:查询处ç†/ä¸æ–‡åˆ†è¯.
一. 查询处ç†
用户å‘æœç´¢å¼•æ“Žæ交查询,æœç´¢å¼•æ“Žä¸€èˆ¬åœ¨æŽ¥å—到用户查询åŽè¦åšä¸€äº›å¤„ç†,然åŽåœ¨ç´¢å¼•æ•°æ®åº“里é¢æå–相关的信æ¯.那么百度在接å—到用户查询åŽåšäº†äº›ä»€ä¹ˆå·¥ä½œå‘¢?
1. å‡è®¾ç”¨æˆ·æ交了ä¸åªä¸€ä¸ªæŸ¥è¯¢ä¸²,比如â€ä¿¡æ¯æ£€ç´¢ ç†è®º 工具â€.那么æœç´¢å¼•æ“Žé¦–å…ˆåšçš„æ˜¯æ ¹æ®åˆ†éš”ç¬¦æ¯”å¦‚ç©ºæ ¼,æ ‡ç‚¹ç¬¦å·,将查询串分割æˆè‹¥å¹²å查询串,比如上é¢çš„查询就会被解æžä¸º:<ä¿¡æ¯æ£€ç´¢,ç†è®º,工具>三个åå—符串;这个é“ç†ç®€å•,我们接ç€å¾€ä¸‹çœ‹.
2. å‡è®¾æ交的查询有é‡å¤çš„内容,æœç´¢å¼•æ“Žæ€Žä¹ˆå¤„ç†å‘¢?比如查询â€ç†è®º 工具 ç†è®ºâ€,百度是将é‡å¤çš„å—符串当作åªå‡ºçŽ°è¿‡ä¸€æ¬¡,也就是处ç†æˆç‰ä»·çš„â€ç†è®º 工具â€,而GOOGLE显然是没有进行归并,而是将é‡å¤æŸ¥è¯¢å串的æƒé‡å¢žå¤§è¿›è¡Œå¤„ç†.那么是如何得出这个结论的呢?我们å¯ä»¥å°†â€ç†è®º 工具â€æ交给百度,返回341,000篇文档,大致看看第一页的返回内容.OK.继ç»,我们æ交查询â€ç†è®º 工具 ç†è®ºâ€,在看看返回结果,ä»ç„¶æ˜¯é‚£ä¹ˆå¤šè¿”回文档,当然这个ä¸èƒ½è¯´æ˜Žå¤ªå¤šé—®é¢˜,那看看第一页返回结果的排åº,看出æ¥äº†å—?顺åºå®Œå…¨æ²¡æœ‰å˜åŒ–,而GOOGLE则排åºæœ‰äº›å˜åŠ¨,这说明百度是将é‡å¤çš„查询归并æˆä¸€ä¸ªå¤„ç†çš„,而且å—符串之间的先åŽå‡ºçŽ°é¡ºåºåŸºæœ¬ä¸äºˆè€ƒè™‘(GOOGLE是考虑了这个顺åºå…³ç³»çš„).
3. å‡è®¾æ交的ä¸æ–‡æŸ¥è¯¢åŒ…å«è‹±æ–‡å•è¯,æœç´¢å¼•æ“Žæ˜¯æ€Žä¹ˆå¤„ç†çš„?比如查询â€ç”µå½±BT下载â€,百度的方法是将ä¸æ–‡å—符串ä¸çš„英文当作一个整体ä¿ç•™,并以æ¤ä¸ºæ–点将ä¸æ–‡åˆ‡åˆ†å¼€,è¿™æ ·ä¸Šè¿°çš„æŸ¥è¯¢å°±åˆ‡ä¸º<电影,BT,下载>,ä¸è®ºä¸é—´çš„英文是å¦ä¸€ä¸ªå—典里能查到的å•è¯ä¹Ÿå¥½,还是éšæœºçš„å—符也好,都会当作一个整体æ¥å¯¹å¾….至于为什么,ä½ ç”¨æŸ¥è¯¢â€ ç”µå½±dfdfdf下载â€çœ‹çœ‹ç»“果就知é“了.当然如果查询ä¸åŒ…å«æ•°å—,也是如æ¤åŠžç†.
到目å‰ä¸ºæ¢,一切很简å•,也很清楚,百度怎么处ç†ç”¨æˆ·æŸ¥è¯¢çš„å‘¢?归纳如下:é¦–å…ˆæ ¹æ®åˆ†å‰²ç¬¦å·å°†æŸ¥è¯¢åˆ†å¼€,然åŽçœ‹çœ‹æ˜¯å¦æœ‰é‡å¤çš„å—符串,如果有,就抛弃多余的,åªä¿ç•™ä¸€ä¸ª,接ç€åˆ¤æ–是å¦æœ‰è‹±æ–‡æˆ–者数å—,如果有的è¯,把英文或者数å—当作一个整体ä¿ç•™å¹¶æŠŠå‰åŽçš„ä¸æ–‡åˆ‡å¼€.
接ç€è¯¥å¹²ä»€ä¹ˆå‘¢?该考虑分è¯çš„问题了.
二. ä¸æ–‡åˆ†è¯
首先,讲讲百度的分è¯æ—¶æœºæˆ–者æ¡ä»¶é—®é¢˜,是å¦æ˜¯ä¸ªä¸æ–‡å—符串百度就拿æ¥åˆ‡ä¸€ä¸‹å‘¢?éžä¹Ÿ,è¦æƒ³è¢«ç™¾åº¦çš„分è¯ç¨‹åºè£å¹¸çš„切割一下也是è¦è®²æ¡ä»¶çš„,哪能是个å—符串就切割啊?ä½ å½“ç™¾åº¦æ˜¯å–锯æ¡çš„么?
é‚£ä¹ˆä»€ä¹ˆæ ·çš„å—符串æ‰æ»¡è¶³è¢«åˆ‡å‰²çš„æ¡ä»¶å‘¢?简å•è¯´æ¥,如果å—符串åªåŒ…å«å°äºŽç‰äºŽ3个ä¸æ–‡å—符的è¯,那就ä¿ç•™ä¸åŠ¨,当å—符串长度大于4个ä¸æ–‡å—符的时候,百度的分è¯ç¨‹åºæ‰å‡ºé©¬å¤§å¹²å¿«ä¸Š,把这个å—符串肢解掉.
怎么è¯æ˜Žå‘¢?我们å‘百度æ交â€ç”µå½±ä¸‹è½½â€,看看返回结果ä¸æ ‡ä¸ºçº¢å—的地方,ä¸éš¾çœ‹å‡ºæ¥,查询已ç»è¢«åˆ‡å‰²æˆ<电影,下载>两个å•è¯äº†,说明分è¯ç¨‹åºå·²ç»å¼€å·¥äº†,如果是比4个ä¸æ–‡å—符更长的å—符串,那分è¯ç¨‹åºå°±æ›´ä¸å®¢æ°”了,一定大å¸å…«å—而åŽå¿«.我们æ¥çœ‹çœ‹ä¸‰ä¸ªå—符的情况,æ交查询â€å½“然择â€,看起æ¥è¿™ä¸ªæŸ¥è¯¢ä¸ä¼¦ä¸ç±»,é‚£æ˜¯å› ä¸ºæˆ‘å¸Œæœ›çœ‹åˆ°è¿™ä¸ªå—符串被切分为<当然,æ‹©>,返回结果365篇相关页é¢,翻到最åŽä¸€é¡µ,å‘çŽ°æ ‡çº¢çš„å…³é”®å—都是â€å½“然择â€è¿žç»å‡ºçŽ°çš„情况,好åƒæ²¡æœ‰åˆ‡åˆ†,但是还ä¸ç¡®å®š,那么å†æ交人工分好的查询â€å½“然 æ‹©â€çœ‹çœ‹,返回结果1,090,000篇,基本上å¯ä»¥ç¡®å®šæ²¡æœ‰è¿›è¡Œåˆ†è¯äº†,当然å¦å¤–一ç§è§£é‡Šæ˜¯:对于三个å—符先切分,然åŽå°†åˆ‡åˆ†åŽçš„结果当作一个çŸè¯æŸ¥è¯¢,è¿™æ ·çœ‹åˆ°çš„æ•ˆæžœå’Œæ²¡æœ‰åˆ‡åˆ†æ˜¯ç›¸ä¼¼çš„.但是我倾å‘于判æ–百度对于少于3个å—符的串没有切分,奥å¡å§†ä¸æ˜¯è¯´äº†ä¹ˆâ€å¦‚æ— å¿…è¦,勿增实体â€,å¹²å—åšæ— 用功呢.那么如果没有切分,会有一个éšä¹‹è€Œæ¥çš„问题,怎么从索引库里é¢æå–未切分的å—符串呢?这牵扯到索引的问题,我觉得百度应该采å–了两套索引机制,一ç§æ˜¯æŒ‰ç…§å•è¯ç´¢å¼•,一ç§æ˜¯æŒ‰ç…§N-GRAM索引,至于索引的具体问题,以åŽåœ¨è¯¦ç»†è®ºè¿°.
下é¢æˆ‘们看看百度是采å–的何ç§åˆ†è¯ç®—法,现在分è¯ç®—法已ç»ç®—是比较æˆç†Ÿäº†,有简å•çš„有å¤æ‚çš„,比如æ£å‘最大匹é…,åå‘最大匹é…,åŒå‘最大匹é…,è¯è¨€æ¨¡åž‹æ–¹æ³•,最çŸè·¯å¾„算法ç‰ç‰,有兴趣的å¯ä»¥ç”¨GOOGLE去æœç´¢ä¸€ä¸‹ä»¥å¢žåŠ ç†è§£.这里就ä¸å±•å¼€è¯´äº†.但是è¦è®°ä½ä¸€ç‚¹çš„是:判æ–一个分è¯ç³»ç»Ÿå¥½ä¸å¥½,关键看两点,一个是消除æ§ä¹‰èƒ½åŠ›;一个是è¯å…¸æœªç™»å½•è¯çš„识别比如人å,地å,机构åç‰.
那么百度用的是什么方法?我的判æ–是用åŒå‘最大匹é…算法.至于怎么推ç†å¾—出的,让我们一æ¥æ¥æ¥çœ‹.当然,这里首先有个å‡è®¾,百度ä¸ä¼šé‡‡å–比较å¤æ‚的算法,å› ä¸ºè€ƒè™‘åˆ°é€Ÿåº¦é—®é¢˜.
我们æ交一个查询â€æ¯›æ³½ä¸œåŒ—京åŽçƒŸäº‘â€,åˆä¸€ä¸ªä¸çŸ¥æ‰€äº‘的查询,尽管ä¸çŸ¥æ‰€äº‘但是自有它的é“ç†,我想看看百度的分è¯æ˜¯å¦‚何消æ§ä»¥åŠæ˜¯å¦æœ‰è¯å…¸æœªç™»å½•è¯çš„识别的功能,如果是æ£å‘最大匹é…算法的è¯,那么输出应该是:â€æ¯›æ³½ä¸œ/北京/åŽ/烟云â€,如果是åå‘最大匹é…算法的è¯,那么输出应该是:â€æ¯›/æ³½/东北/京åŽçƒŸäº‘â€,我们看看百度的分è¯ç»“æžœ:â€æ¯›æ³½ä¸œ/北/京åŽçƒŸäº‘â€,一个很奇怪的输出,跟我们的期望相差较多,但是从ä¸æˆ‘们å¯ä»¥èŽ·å¾—如下信æ¯:百度分è¯å¯ä»¥è¯†åˆ«äººå,也å¯ä»¥è¯†åˆ«â€äº¬åŽçƒŸäº‘â€,这说明有è¯å…¸æœªç™»å½•è¯çš„识别的功能,我们å¯ä»¥å‡è®¾åˆ†è¯è¿‡ç¨‹åˆ†ä¸ºä¸¤ä¸ªé˜¶æ®µ:第一阶段,先查找一个特殊è¯å…¸,这个è¯å…¸åŒ…å«ä¸€äº›äººå,部分地å以åŠä¸€äº›æ™®é€šè¯å…¸æ²¡æœ‰çš„æ–°è¯,è¿™æ ·é¦–å…ˆå°†â€æ¯›æ³½ä¸œâ€è§£æžå‡ºæ¥,剩下了å—符串â€åŒ—京åŽçƒŸäº‘â€,而â€åŒ—/京åŽçƒŸäº‘â€,å¯ä»¥çœ‹ä½œæ˜¯åå‘最大匹é…的分è¯ç»“æžœ.è¿™æ ·åŸºæœ¬è¯´å¾—é€š.为了è¯æ˜Žè¿™ä¸€ç‚¹,我们æ交查询â€å‘毛泽东北â€,我们期望两ç§åˆ†è¯ç»“æžœ,一个是æ£å‘最大匹é…<å‘毛,æ³½,东北>,一个是上述å‡è®¾çš„结果<å‘,毛泽东,北>,事实上百度输出是第二ç§æƒ…况,è¿™æ ·åŸºæœ¬èƒ½ç¡®å®šç™¾åº¦åˆ†è¯é‡‡å–了至少两个è¯å…¸,一个是普通è¯å…¸,一个是专用è¯å…¸(人åç‰).而且是专用è¯å…¸å…ˆåˆ‡åˆ†,然åŽå°†å‰©ä½™çš„片æ–交由普通è¯å…¸æ¥åˆ‡åˆ†.
继ç»æµ‹éªŒ,æ交查询â€å¤å·´æ¯”伦ç†â€,如果是æ£å‘最大匹é…,那么结果应该是<å¤å·´æ¯”伦,ç†>,如果是åå‘最大匹é…,那么结果应该是<å¤å·´,比,伦ç†>,事实上百度的分è¯ç»“果是<å¤å·´æ¯”伦,ç†>,从这个例å看,好åƒç”¨äº†æ£å‘最大匹é…算法;æ¤å¤–还有一些例å表明好åƒæ˜¯ä½¿ç”¨æ£å‘最大匹é…çš„;但是且慢,我们看这个查询â€åŒ—京åŽçƒŸäº‘â€,æ£å‘最大匹é…期望的结果是<北京,åŽ,烟云>,而åå‘最大匹é…期望的结果是<北,京åŽçƒŸäº‘>,事实上百度输出的是åŽè€…,这说明å¯èƒ½é‡‡ç”¨çš„åå‘最大匹é…;从这点我们å¯ä»¥çŒœæµ‹ç™¾åº¦é‡‡ç”¨çš„是åŒå‘最大匹é…分è¯ç®—法,如果æ£å‘å’Œåå‘匹é…分è¯ç»“果一致当然好办,直接输出å³å¯;但是如果两者ä¸ä¸€è‡´,æ£å‘匹é…一ç§ç»“æžœ,åå‘匹é…一ç§ç»“æžœ,æ¤æ—¶è¯¥å¦‚何是好呢?从上é¢ä¸¤ä¸ªä¾‹å看,在这ç§æƒ…况下,百度采å–最çŸè·¯å¾„方法,也就是切分的片æ–越少越好,比如<å¤å·´,比,伦ç†>å’Œ<å¤å·´æ¯”伦,ç†>相比选择åŽè€…,<北京,åŽ,烟云>å’Œ<北,京åŽçƒŸäº‘>相比选择åŽè€….还有类似的一些例å,è¿™æ ·åŸºæœ¬å¯ä»¥è§£é‡Šè¿™äº›è¾“出结果.
但是ä»ç„¶é—留的问题是:如果æ£å‘åå‘分è¯ä¸ä¸€è‡´,而且最çŸè·¯å¾„也相åŒ,那怎么办?输出æ£å‘的还是åå‘的结果?我们å†æ¥çœ‹ä¸€ä¸ªä¾‹å.æ交查询â€é¥è¿œå¤å¤å·´æ¯”伦â€,这个查询被百度切分为<é¥è¿œ,å¤å¤,巴比伦>,说明è¯å…¸é‡Œé¢æœ‰â€å·´æ¯”伦â€,但是是å¦æœ‰â€å¤å·´æ¯”伦â€è¿™ä¸ªè¯æ±‡ä¸ç¡®å®š,æ¤æ—¶çœ‹ä¸å‡ºæ˜¯æ£å‘切分还是åå‘切分得出的结果,æ¢æŸ¥è¯¢ä¸ºâ€é¥è¿œå¤å·´æ¯”伦â€,æ¤æ—¶è¢«åˆ‡åˆ†ä¸ºâ€é¥è¿œ/å¤å·´æ¯”伦â€,这说明è¯å…¸é‡Œé¢æœ‰â€å¤å·´æ¯”伦â€è¿™ä¸ªè¯æ±‡,这说明了â€é¥è¿œå¤å¤å·´æ¯”伦â€æ˜¯æ£å‘最大匹é…的结果.那为什么â€é¥è¿œå¤å¤å·´æ¯”伦â€ä¸ä¼šè¢«åå‘切分为â€é¥/è¿œå¤/å¤å·´æ¯”伦â€å‘¢,百度的å¯èƒ½é€‰æ‹©æ˜¯è¿™ç§æƒ…况下选择å•å—少的那组切分结果.
当然还å¯ä»¥ç»§ç»è¿½é—®:如果切分åŽå•å—ä¹Ÿä¸€æ ·å¤š,那怎么办?最åŽçœ‹ä¸€ä¸ªä¾‹å,查询â€çŽ‹å¼ºå¤§å°:â€,百度将其切分为â€çŽ‹/强大/å°â€,是æ£å‘切分的结果,如果是åå‘的会被切分为â€çŽ‹/强/大å°â€,这说明有æ§ä¹‰è€Œä¸”å•å—也相åŒåˆ™é€‰æ‹©æ£å‘切分结果.
OK,看到这里å¯èƒ½å¤´å·²ç»æœ‰äº›æ™•äº†,最åŽæ€»ç»“一下百度的分è¯ç®—法,当然里é¢è¿˜æ˜¯æœ‰çŒœæµ‹çš„æˆåˆ†,算法如下:
首先查询专用è¯å…¸(人å,部分地åç‰),将专有å称切出,剩下的部分采å–åŒå‘分è¯ç–ç•¥,如果两者切分结果相åŒ,说明没有æ§ä¹‰,直接输出分è¯ç»“æžœ.如果ä¸ä¸€è‡´,则输出最çŸè·¯å¾„的那个结果,如果长度相åŒ,则选择å•å—è¯å°‘的那一组切分结果.如果å•å—也相åŒ,则选择æ£å‘分è¯ç»“æžœ..
ç™¾åº¦ä¸€ç›´å®£ä¼ è‡ªå·±åœ¨ä¸æ–‡å¤„ç†æ–¹é¢çš„优势,从上é¢çœ‹,分è¯ç®—æ³•å¹¶æ— ç‰¹æ®Šä¹‹å¤„,消æ§æ•ˆæžœå¹¶ä¸ç†æƒ³,å³ä½¿ç™¾åº¦é‡‡å–比上述分è¯ç®—法å¤æ‚些的算法也难以说æˆæ˜¯ä¼˜åŠ¿,如果说百度有优势的è¯,唯一的优势就是那个很大的专用è¯å…¸,这个专用è¯å…¸ç™»å½•äº†äººå(比如大长今),称谓(比如è€å¤ªå¤ª),部分地å(比如阿è”é…‹ç‰),估计百度采用å¦æœ¯ç•Œå…¬å¸ƒçš„比较新的命å实体识别算法从è¯æ–™åº“里é¢ä¸æ–识别出è¯å…¸æœªç™»å½•è¯,é€æ¸æ‰©å……这个专门è¯å…¸.如果这就是优势的è¯,那么这个优势能够ä¿æŒå¤šä¹…就是个很明显的问题.
最后编辑: 郝聪 编辑于2008/02/19 15:55
éšç€æœç´¢ç»æµŽçš„å´›èµ·ï¼Œäººä»¬å¼€å§‹è¶ŠåŠ å…³æ³¨å…¨çƒå„大æœç´¢å¼•æ“Žçš„性能ã€æŠ€æœ¯å’Œæ—¥æµé‡ã€‚作为ä¼ä¸šï¼Œä¼šæ ¹æ®æœç´¢å¼•æ“Žçš„知å度以åŠæ—¥æµé‡æ¥é€‰æ‹©æ˜¯å¦è¦æŠ•æ”¾å¹¿å‘Šç‰ï¼›ä½œä¸ºæ™®é€šç½‘æ°‘ï¼Œä¼šæ ¹æ®æœç´¢å¼•æ“Žçš„性能和技术æ¥é€‰æ‹©è‡ªå·±å–œæ¬¢çš„引擎查找资料;作为技术人员,会把有代表性的æœç´¢å¼•æ“Žä½œä¸ºç ”究对象. æœç´¢å¼•æ“Žç»æµŽçš„崛起,åˆä¸€æ¬¡å‘人们è¯æ˜Žäº†ç½‘络所蕴è—的巨大商机。网络离开了æœç´¢å°†åªå‰©ä¸‹ç©ºæ´žæ‚乱的数æ®ï¼Œä»¥åŠå¤§é‡ç‰å¾…去费力挖掘的金矿。
但是,如何设计一个高效的æœç´¢å¼•æ“Ž?我们å¯ä»¥ä»¥ç™¾åº¦æ‰€é‡‡å–的技术手段æ¥æŽ¢è®¨å¦‚何设计一个实用的æœç´¢å¼•æ“Ž.æœç´¢å¼•æ“Žæ¶‰åŠåˆ°è®¸å¤šæŠ€æœ¯ç‚¹,比如查询处ç†,排åºç®—法,页é¢æŠ“å–算法,CACHE机制,ANTI-SPAMç‰ç‰.这些技术细节,作为商业公å¸çš„æœç´¢å¼•æ“ŽæœåŠ¡æ供商比如百度,GOOGLEç‰æ˜¯ä¸ä¼šå…¬ä¹‹äºŽä¼—çš„.我们å¯ä»¥å°†çŽ°æœ‰çš„æœç´¢å¼•æ“Žçœ‹ä½œä¸€ä¸ªé»‘ç›’,通过å‘黑盒æ交输入,判æ–黑盒返回的输出大致判æ–黑盒里é¢ä¸ä¸ºäººçŸ¥çš„技术细节.
查询处ç†ä¸Žåˆ†è¯æ˜¯ä¸€ä¸ªä¸æ–‡æœç´¢å¼•æ“Žå¿…ä¸å¯å°‘的工作,而百度作为一个典型的ä¸æ–‡æœç´¢å¼•æ“Žä¸€ç›´å¼ºè°ƒå…¶â€ä¸æ–‡å¤„ç†â€æ–¹é¢å…·æœ‰å…¶å®ƒæœç´¢å¼•æ“Žæ‰€ä¸å…·æœ‰çš„关键技术和优势.那么我们就æ¥çœ‹çœ‹ç™¾åº¦åˆ°åº•é‡‡ç”¨äº†å“ªäº›æ‰€è°“çš„æ ¸å¿ƒæŠ€æœ¯.
我们分两个部分æ¥è®²è¿°:查询处ç†/ä¸æ–‡åˆ†è¯.
一. 查询处ç†
用户å‘æœç´¢å¼•æ“Žæ交查询,æœç´¢å¼•æ“Žä¸€èˆ¬åœ¨æŽ¥å—到用户查询åŽè¦åšä¸€äº›å¤„ç†,然åŽåœ¨ç´¢å¼•æ•°æ®åº“里é¢æå–相关的信æ¯.那么百度在接å—到用户查询åŽåšäº†äº›ä»€ä¹ˆå·¥ä½œå‘¢?
1. å‡è®¾ç”¨æˆ·æ交了ä¸åªä¸€ä¸ªæŸ¥è¯¢ä¸²,比如â€ä¿¡æ¯æ£€ç´¢ ç†è®º 工具â€.那么æœç´¢å¼•æ“Žé¦–å…ˆåšçš„æ˜¯æ ¹æ®åˆ†éš”ç¬¦æ¯”å¦‚ç©ºæ ¼,æ ‡ç‚¹ç¬¦å·,将查询串分割æˆè‹¥å¹²å查询串,比如上é¢çš„查询就会被解æžä¸º:<ä¿¡æ¯æ£€ç´¢,ç†è®º,工具>三个åå—符串;这个é“ç†ç®€å•,我们接ç€å¾€ä¸‹çœ‹.
2. å‡è®¾æ交的查询有é‡å¤çš„内容,æœç´¢å¼•æ“Žæ€Žä¹ˆå¤„ç†å‘¢?比如查询â€ç†è®º 工具 ç†è®ºâ€,百度是将é‡å¤çš„å—符串当作åªå‡ºçŽ°è¿‡ä¸€æ¬¡,也就是处ç†æˆç‰ä»·çš„â€ç†è®º 工具â€,而GOOGLE显然是没有进行归并,而是将é‡å¤æŸ¥è¯¢å串的æƒé‡å¢žå¤§è¿›è¡Œå¤„ç†.那么是如何得出这个结论的呢?我们å¯ä»¥å°†â€ç†è®º 工具â€æ交给百度,返回341,000篇文档,大致看看第一页的返回内容.OK.继ç»,我们æ交查询â€ç†è®º 工具 ç†è®ºâ€,在看看返回结果,ä»ç„¶æ˜¯é‚£ä¹ˆå¤šè¿”回文档,当然这个ä¸èƒ½è¯´æ˜Žå¤ªå¤šé—®é¢˜,那看看第一页返回结果的排åº,看出æ¥äº†å—?顺åºå®Œå…¨æ²¡æœ‰å˜åŒ–,而GOOGLE则排åºæœ‰äº›å˜åŠ¨,这说明百度是将é‡å¤çš„查询归并æˆä¸€ä¸ªå¤„ç†çš„,而且å—符串之间的先åŽå‡ºçŽ°é¡ºåºåŸºæœ¬ä¸äºˆè€ƒè™‘(GOOGLE是考虑了这个顺åºå…³ç³»çš„).
3. å‡è®¾æ交的ä¸æ–‡æŸ¥è¯¢åŒ…å«è‹±æ–‡å•è¯,æœç´¢å¼•æ“Žæ˜¯æ€Žä¹ˆå¤„ç†çš„?比如查询â€ç”µå½±BT下载â€,百度的方法是将ä¸æ–‡å—符串ä¸çš„英文当作一个整体ä¿ç•™,并以æ¤ä¸ºæ–点将ä¸æ–‡åˆ‡åˆ†å¼€,è¿™æ ·ä¸Šè¿°çš„æŸ¥è¯¢å°±åˆ‡ä¸º<电影,BT,下载>,ä¸è®ºä¸é—´çš„英文是å¦ä¸€ä¸ªå—典里能查到的å•è¯ä¹Ÿå¥½,还是éšæœºçš„å—符也好,都会当作一个整体æ¥å¯¹å¾….至于为什么,ä½ ç”¨æŸ¥è¯¢â€ ç”µå½±dfdfdf下载â€çœ‹çœ‹ç»“果就知é“了.当然如果查询ä¸åŒ…å«æ•°å—,也是如æ¤åŠžç†.
到目å‰ä¸ºæ¢,一切很简å•,也很清楚,百度怎么处ç†ç”¨æˆ·æŸ¥è¯¢çš„å‘¢?归纳如下:é¦–å…ˆæ ¹æ®åˆ†å‰²ç¬¦å·å°†æŸ¥è¯¢åˆ†å¼€,然åŽçœ‹çœ‹æ˜¯å¦æœ‰é‡å¤çš„å—符串,如果有,就抛弃多余的,åªä¿ç•™ä¸€ä¸ª,接ç€åˆ¤æ–是å¦æœ‰è‹±æ–‡æˆ–者数å—,如果有的è¯,把英文或者数å—当作一个整体ä¿ç•™å¹¶æŠŠå‰åŽçš„ä¸æ–‡åˆ‡å¼€.
接ç€è¯¥å¹²ä»€ä¹ˆå‘¢?该考虑分è¯çš„问题了.
二. ä¸æ–‡åˆ†è¯
首先,讲讲百度的分è¯æ—¶æœºæˆ–者æ¡ä»¶é—®é¢˜,是å¦æ˜¯ä¸ªä¸æ–‡å—符串百度就拿æ¥åˆ‡ä¸€ä¸‹å‘¢?éžä¹Ÿ,è¦æƒ³è¢«ç™¾åº¦çš„分è¯ç¨‹åºè£å¹¸çš„切割一下也是è¦è®²æ¡ä»¶çš„,哪能是个å—符串就切割啊?ä½ å½“ç™¾åº¦æ˜¯å–锯æ¡çš„么?
é‚£ä¹ˆä»€ä¹ˆæ ·çš„å—符串æ‰æ»¡è¶³è¢«åˆ‡å‰²çš„æ¡ä»¶å‘¢?简å•è¯´æ¥,如果å—符串åªåŒ…å«å°äºŽç‰äºŽ3个ä¸æ–‡å—符的è¯,那就ä¿ç•™ä¸åŠ¨,当å—符串长度大于4个ä¸æ–‡å—符的时候,百度的分è¯ç¨‹åºæ‰å‡ºé©¬å¤§å¹²å¿«ä¸Š,把这个å—符串肢解掉.
怎么è¯æ˜Žå‘¢?我们å‘百度æ交â€ç”µå½±ä¸‹è½½â€,看看返回结果ä¸æ ‡ä¸ºçº¢å—的地方,ä¸éš¾çœ‹å‡ºæ¥,查询已ç»è¢«åˆ‡å‰²æˆ<电影,下载>两个å•è¯äº†,说明分è¯ç¨‹åºå·²ç»å¼€å·¥äº†,如果是比4个ä¸æ–‡å—符更长的å—符串,那分è¯ç¨‹åºå°±æ›´ä¸å®¢æ°”了,一定大å¸å…«å—而åŽå¿«.我们æ¥çœ‹çœ‹ä¸‰ä¸ªå—符的情况,æ交查询â€å½“然择â€,看起æ¥è¿™ä¸ªæŸ¥è¯¢ä¸ä¼¦ä¸ç±»,é‚£æ˜¯å› ä¸ºæˆ‘å¸Œæœ›çœ‹åˆ°è¿™ä¸ªå—符串被切分为<当然,æ‹©>,返回结果365篇相关页é¢,翻到最åŽä¸€é¡µ,å‘çŽ°æ ‡çº¢çš„å…³é”®å—都是â€å½“然择â€è¿žç»å‡ºçŽ°çš„情况,好åƒæ²¡æœ‰åˆ‡åˆ†,但是还ä¸ç¡®å®š,那么å†æ交人工分好的查询â€å½“然 æ‹©â€çœ‹çœ‹,返回结果1,090,000篇,基本上å¯ä»¥ç¡®å®šæ²¡æœ‰è¿›è¡Œåˆ†è¯äº†,当然å¦å¤–一ç§è§£é‡Šæ˜¯:对于三个å—符先切分,然åŽå°†åˆ‡åˆ†åŽçš„结果当作一个çŸè¯æŸ¥è¯¢,è¿™æ ·çœ‹åˆ°çš„æ•ˆæžœå’Œæ²¡æœ‰åˆ‡åˆ†æ˜¯ç›¸ä¼¼çš„.但是我倾å‘于判æ–百度对于少于3个å—符的串没有切分,奥å¡å§†ä¸æ˜¯è¯´äº†ä¹ˆâ€å¦‚æ— å¿…è¦,勿增实体â€,å¹²å—åšæ— 用功呢.那么如果没有切分,会有一个éšä¹‹è€Œæ¥çš„问题,怎么从索引库里é¢æå–未切分的å—符串呢?这牵扯到索引的问题,我觉得百度应该采å–了两套索引机制,一ç§æ˜¯æŒ‰ç…§å•è¯ç´¢å¼•,一ç§æ˜¯æŒ‰ç…§N-GRAM索引,至于索引的具体问题,以åŽåœ¨è¯¦ç»†è®ºè¿°.
下é¢æˆ‘们看看百度是采å–的何ç§åˆ†è¯ç®—法,现在分è¯ç®—法已ç»ç®—是比较æˆç†Ÿäº†,有简å•çš„有å¤æ‚çš„,比如æ£å‘最大匹é…,åå‘最大匹é…,åŒå‘最大匹é…,è¯è¨€æ¨¡åž‹æ–¹æ³•,最çŸè·¯å¾„算法ç‰ç‰,有兴趣的å¯ä»¥ç”¨GOOGLE去æœç´¢ä¸€ä¸‹ä»¥å¢žåŠ ç†è§£.这里就ä¸å±•å¼€è¯´äº†.但是è¦è®°ä½ä¸€ç‚¹çš„是:判æ–一个分è¯ç³»ç»Ÿå¥½ä¸å¥½,关键看两点,一个是消除æ§ä¹‰èƒ½åŠ›;一个是è¯å…¸æœªç™»å½•è¯çš„识别比如人å,地å,机构åç‰.
那么百度用的是什么方法?我的判æ–是用åŒå‘最大匹é…算法.至于怎么推ç†å¾—出的,让我们一æ¥æ¥æ¥çœ‹.当然,这里首先有个å‡è®¾,百度ä¸ä¼šé‡‡å–比较å¤æ‚的算法,å› ä¸ºè€ƒè™‘åˆ°é€Ÿåº¦é—®é¢˜.
我们æ交一个查询â€æ¯›æ³½ä¸œåŒ—京åŽçƒŸäº‘â€,åˆä¸€ä¸ªä¸çŸ¥æ‰€äº‘的查询,尽管ä¸çŸ¥æ‰€äº‘但是自有它的é“ç†,我想看看百度的分è¯æ˜¯å¦‚何消æ§ä»¥åŠæ˜¯å¦æœ‰è¯å…¸æœªç™»å½•è¯çš„识别的功能,如果是æ£å‘最大匹é…算法的è¯,那么输出应该是:â€æ¯›æ³½ä¸œ/北京/åŽ/烟云â€,如果是åå‘最大匹é…算法的è¯,那么输出应该是:â€æ¯›/æ³½/东北/京åŽçƒŸäº‘â€,我们看看百度的分è¯ç»“æžœ:â€æ¯›æ³½ä¸œ/北/京åŽçƒŸäº‘â€,一个很奇怪的输出,跟我们的期望相差较多,但是从ä¸æˆ‘们å¯ä»¥èŽ·å¾—如下信æ¯:百度分è¯å¯ä»¥è¯†åˆ«äººå,也å¯ä»¥è¯†åˆ«â€äº¬åŽçƒŸäº‘â€,这说明有è¯å…¸æœªç™»å½•è¯çš„识别的功能,我们å¯ä»¥å‡è®¾åˆ†è¯è¿‡ç¨‹åˆ†ä¸ºä¸¤ä¸ªé˜¶æ®µ:第一阶段,先查找一个特殊è¯å…¸,这个è¯å…¸åŒ…å«ä¸€äº›äººå,部分地å以åŠä¸€äº›æ™®é€šè¯å…¸æ²¡æœ‰çš„æ–°è¯,è¿™æ ·é¦–å…ˆå°†â€æ¯›æ³½ä¸œâ€è§£æžå‡ºæ¥,剩下了å—符串â€åŒ—京åŽçƒŸäº‘â€,而â€åŒ—/京åŽçƒŸäº‘â€,å¯ä»¥çœ‹ä½œæ˜¯åå‘最大匹é…的分è¯ç»“æžœ.è¿™æ ·åŸºæœ¬è¯´å¾—é€š.为了è¯æ˜Žè¿™ä¸€ç‚¹,我们æ交查询â€å‘毛泽东北â€,我们期望两ç§åˆ†è¯ç»“æžœ,一个是æ£å‘最大匹é…<å‘毛,æ³½,东北>,一个是上述å‡è®¾çš„结果<å‘,毛泽东,北>,事实上百度输出是第二ç§æƒ…况,è¿™æ ·åŸºæœ¬èƒ½ç¡®å®šç™¾åº¦åˆ†è¯é‡‡å–了至少两个è¯å…¸,一个是普通è¯å…¸,一个是专用è¯å…¸(人åç‰).而且是专用è¯å…¸å…ˆåˆ‡åˆ†,然åŽå°†å‰©ä½™çš„片æ–交由普通è¯å…¸æ¥åˆ‡åˆ†.
继ç»æµ‹éªŒ,æ交查询â€å¤å·´æ¯”伦ç†â€,如果是æ£å‘最大匹é…,那么结果应该是<å¤å·´æ¯”伦,ç†>,如果是åå‘最大匹é…,那么结果应该是<å¤å·´,比,伦ç†>,事实上百度的分è¯ç»“果是<å¤å·´æ¯”伦,ç†>,从这个例å看,好åƒç”¨äº†æ£å‘最大匹é…算法;æ¤å¤–还有一些例å表明好åƒæ˜¯ä½¿ç”¨æ£å‘最大匹é…çš„;但是且慢,我们看这个查询â€åŒ—京åŽçƒŸäº‘â€,æ£å‘最大匹é…期望的结果是<北京,åŽ,烟云>,而åå‘最大匹é…期望的结果是<北,京åŽçƒŸäº‘>,事实上百度输出的是åŽè€…,这说明å¯èƒ½é‡‡ç”¨çš„åå‘最大匹é…;从这点我们å¯ä»¥çŒœæµ‹ç™¾åº¦é‡‡ç”¨çš„是åŒå‘最大匹é…分è¯ç®—法,如果æ£å‘å’Œåå‘匹é…分è¯ç»“果一致当然好办,直接输出å³å¯;但是如果两者ä¸ä¸€è‡´,æ£å‘匹é…一ç§ç»“æžœ,åå‘匹é…一ç§ç»“æžœ,æ¤æ—¶è¯¥å¦‚何是好呢?从上é¢ä¸¤ä¸ªä¾‹å看,在这ç§æƒ…况下,百度采å–最çŸè·¯å¾„方法,也就是切分的片æ–越少越好,比如<å¤å·´,比,伦ç†>å’Œ<å¤å·´æ¯”伦,ç†>相比选择åŽè€…,<北京,åŽ,烟云>å’Œ<北,京åŽçƒŸäº‘>相比选择åŽè€….还有类似的一些例å,è¿™æ ·åŸºæœ¬å¯ä»¥è§£é‡Šè¿™äº›è¾“出结果.
但是ä»ç„¶é—留的问题是:如果æ£å‘åå‘分è¯ä¸ä¸€è‡´,而且最çŸè·¯å¾„也相åŒ,那怎么办?输出æ£å‘的还是åå‘的结果?我们å†æ¥çœ‹ä¸€ä¸ªä¾‹å.æ交查询â€é¥è¿œå¤å¤å·´æ¯”伦â€,这个查询被百度切分为<é¥è¿œ,å¤å¤,巴比伦>,说明è¯å…¸é‡Œé¢æœ‰â€å·´æ¯”伦â€,但是是å¦æœ‰â€å¤å·´æ¯”伦â€è¿™ä¸ªè¯æ±‡ä¸ç¡®å®š,æ¤æ—¶çœ‹ä¸å‡ºæ˜¯æ£å‘切分还是åå‘切分得出的结果,æ¢æŸ¥è¯¢ä¸ºâ€é¥è¿œå¤å·´æ¯”伦â€,æ¤æ—¶è¢«åˆ‡åˆ†ä¸ºâ€é¥è¿œ/å¤å·´æ¯”伦â€,这说明è¯å…¸é‡Œé¢æœ‰â€å¤å·´æ¯”伦â€è¿™ä¸ªè¯æ±‡,这说明了â€é¥è¿œå¤å¤å·´æ¯”伦â€æ˜¯æ£å‘最大匹é…的结果.那为什么â€é¥è¿œå¤å¤å·´æ¯”伦â€ä¸ä¼šè¢«åå‘切分为â€é¥/è¿œå¤/å¤å·´æ¯”伦â€å‘¢,百度的å¯èƒ½é€‰æ‹©æ˜¯è¿™ç§æƒ…况下选择å•å—少的那组切分结果.
当然还å¯ä»¥ç»§ç»è¿½é—®:如果切分åŽå•å—ä¹Ÿä¸€æ ·å¤š,那怎么办?最åŽçœ‹ä¸€ä¸ªä¾‹å,查询â€çŽ‹å¼ºå¤§å°:â€,百度将其切分为â€çŽ‹/强大/å°â€,是æ£å‘切分的结果,如果是åå‘的会被切分为â€çŽ‹/强/大å°â€,这说明有æ§ä¹‰è€Œä¸”å•å—也相åŒåˆ™é€‰æ‹©æ£å‘切分结果.
OK,看到这里å¯èƒ½å¤´å·²ç»æœ‰äº›æ™•äº†,最åŽæ€»ç»“一下百度的分è¯ç®—法,当然里é¢è¿˜æ˜¯æœ‰çŒœæµ‹çš„æˆåˆ†,算法如下:
首先查询专用è¯å…¸(人å,部分地åç‰),将专有å称切出,剩下的部分采å–åŒå‘分è¯ç–ç•¥,如果两者切分结果相åŒ,说明没有æ§ä¹‰,直接输出分è¯ç»“æžœ.如果ä¸ä¸€è‡´,则输出最çŸè·¯å¾„的那个结果,如果长度相åŒ,则选择å•å—è¯å°‘的那一组切分结果.如果å•å—也相åŒ,则选择æ£å‘分è¯ç»“æžœ..
ç™¾åº¦ä¸€ç›´å®£ä¼ è‡ªå·±åœ¨ä¸æ–‡å¤„ç†æ–¹é¢çš„优势,从上é¢çœ‹,分è¯ç®—æ³•å¹¶æ— ç‰¹æ®Šä¹‹å¤„,消æ§æ•ˆæžœå¹¶ä¸ç†æƒ³,å³ä½¿ç™¾åº¦é‡‡å–比上述分è¯ç®—法å¤æ‚些的算法也难以说æˆæ˜¯ä¼˜åŠ¿,如果说百度有优势的è¯,唯一的优势就是那个很大的专用è¯å…¸,这个专用è¯å…¸ç™»å½•äº†äººå(比如大长今),称谓(比如è€å¤ªå¤ª),部分地å(比如阿è”é…‹ç‰),估计百度采用å¦æœ¯ç•Œå…¬å¸ƒçš„比较新的命å实体识别算法从è¯æ–™åº“里é¢ä¸æ–识别出è¯å…¸æœªç™»å½•è¯,é€æ¸æ‰©å……这个专门è¯å…¸.如果这就是优势的è¯,那么这个优势能够ä¿æŒå¤šä¹…就是个很明显的问题.
相关日志
Dedecms编辑器CKeditoræ›´æ¢ä¸ºç™¾åº¦UEditor的方法
从12月百度算法å˜åŒ–预测2011å¹´SEOæ–¹å‘
百度上线图片竞价排å 图片显示推广å—æ ·(图)
桥页SEO:网站自我æ¯ç工具
Google和百度网页æœç´¢çš„查询å‚数解释
百度欲在ä¸å›½å¤åˆ¶â€œeBay+è°·æŒâ€æ¨¡å¼
百度分è¯ç®—法详解
百度ä¸æ–‡åˆ†è¯ç®—法分æžä¹‹ä¸‰
百度ä¸æ–‡åˆ†è¯ç®—法分æžä¹‹äºŒ
Dedecms编辑器CKeditoræ›´æ¢ä¸ºç™¾åº¦UEditor的方法
从12月百度算法å˜åŒ–预测2011å¹´SEOæ–¹å‘
百度上线图片竞价排å 图片显示推广å—æ ·(图)
桥页SEO:网站自我æ¯ç工具
Google和百度网页æœç´¢çš„查询å‚数解释
百度欲在ä¸å›½å¤åˆ¶â€œeBay+è°·æŒâ€æ¨¡å¼
百度分è¯ç®—法详解
百度ä¸æ–‡åˆ†è¯ç®—法分æžä¹‹ä¸‰
百度ä¸æ–‡åˆ†è¯ç®—法分æžä¹‹äºŒ
最后编辑: 郝聪 编辑于2008/02/19 15:55
muoonu
2009/05/18 09:14
ä½ å½“ç™¾åº¦æ˜¯å–锯æ¡çš„么?
kugou
2008/03/07 12:06
æ©ï¼Œåº”该æ¥è¯´ï¼Œè¯æ”¾å‰é¢å°±è¶Šé‡è¦ï¼Œä¸è¿‡å›½å†…的应用没有这方é¢çš„è¦æ±‚
分页: 1/1 1