百度空间 | 百度首页 
 
查看文章
 
实习生小胖的百度网页过滤器(2007年初赛)
2007-06-11 17:34

题目描述

    百度网页采集器(Baiduspider)每天从互联网收录数亿网页,互联网的网页质量参差不齐。百度的工程师们每天都在改进方法来判断一个网页质量的好坏,使质量差的网页出现在检索结果中较后的位置。现在实习生小胖想到一个很简单的方法来判断一个网页内容的好坏,方法如下:

    1. 利用数据挖掘技术在互联网语料库中挖掘出一批有特点的词汇,分为好词和坏词两种,好词标上正的权重,坏词标上负的权重;

    2. 通过好词和坏词词典对每个网页计算网页总权重:从第一个字开始匹配,找到一个好词则加上相应的权重,找到一个坏词则减去相应的权重,下一次匹配将从找到的词末尾的下一个位置开始。

    3. 坏词采用正向最短匹配:从当前匹配位置开始的若干连续汉字,如果形成多个坏词,则只计算最短的那个坏词的权重,下一次匹配将从这个最短坏词末尾的下一个位置开始。

    4. 好词采取正向最长匹配:从当前匹配位置开始的若干连续汉字,如果形成多个“有效”好词,则只计算最长“有效”好词的权重,下一次匹配从这个最长“有效”好词末尾的下一个位置开始。

    5. “无效”好词的定义:好词的一部分本身是一个坏词;或者好词的一部分与后续相邻的若干字组成一个坏词。

    现在小胖已经做好了第1步的工作,有一个好词和坏词的列表(词典),但是由于没有对中文文本处理的程序经验,他想请未来的百度之星们帮他完成这个程序。

输入格式

输入第一行为一个字符串(网页正文)。从第二行开始为词典,格式为“词 空格 词的权重”。权重为一个带符号32位整数。如果权重为正,则为好词,反之则为坏词;不存在重复的词,不存在权重为0的词。

测试数据中的词全部为1-5个字的中文,但作为“网页”的字符串中同时包含中文和ASCII字符,每个汉字占2个字节。并非“网页”中的所有字都在词典中。

样例输入

小胖之喷火龙骑士!!

小胖 6

喷火 -1

喷火龙 -1

火龙 -1

4

龙骑 3

龙骑士 2

骑士 -2

3

输出格式

输出仅一行,为网页总权重(答案保证不超过带符号32位整数的范围)。

样例输出

7

样例解释

从“网页”中找到的好词为“小胖”和“龙”,坏词为“喷火”和“骑士”。特别要说明一下“龙”被识别为好词的原因——“喷火”和“喷火龙”均为坏词,按正向最短匹配得到“喷火”,接着往下匹配到好词“龙”、“龙骑”和“龙骑士”,但是由于“骑士”是坏词,所以“龙骑”、“龙骑士”无效而“龙”是最长的有效好词。注意题目描述中的匹配规则,好词的“有效”和“无效”只考虑该好词的一部分与后续字是否能够组成坏词,而不考虑和前面的字是否能够组成坏词——样例中的“龙”虽然可以与前面的字组成坏词“喷火龙”和“火龙”,但由于这两个词都是未能匹配成功的坏词,因此对好词“龙”的词性没有影响,可以累积“龙”的权重。


类别:2007年百度之星题目 | 添加到搜藏 | 浏览() | 评论 (18)
 
最近读者:
 
网友评论:
1
2007-06-12 09:29 | 回复
一直在学习搜索,所以感觉不难!
 
2
2007-06-14 14:53 | 回复
不实用 什么破主意
 
3
2007-06-15 17:33 | 回复
垃圾
 
4
2007-06-15 22:25 | 回复
继续支持VB的instr...
 
5
2007-06-17 14:31 | 回复
劲.
 
6
2007-07-18 21:33 | 回复
可惜知道晚了..我会补上参赛的所有题目..加以锻炼自己
 
7
2007-09-13 12:16 | 回复
这个太简单了吧? 还是我没有看懂题目? 我的处理方法是: 第一次,对每个字做坏词匹配,当然这个也是有方法的,如果匹配,则去除,无效(即不在词典中)也去除, 第二次则看余下的是否在好词表中,
 
8
2007-09-17 00:07 | 回复
哈哈,代码多了想干什么就干什么.
 
9
2007-09-26 15:56 | 回复
钟代麒同志,怎么哪都有你的影啊
 
10
2007-09-27 12:35 | 回复
咋了~~
 
11
2007-11-08 19:02 | 回复
有意思
 
12
2008-03-05 15:26 | 回复
fdsafasdfdshkna g
 
13
2008-03-05 15:26 | 回复
hgfshgrts
 
14
2008-05-10 16:20 | 回复
建立X个二叉树,1个字符长度一个树。数据结构有了,字典也有了,分词逻辑随便写 如果我来做网页过滤,就不用什么好词坏词 在网页找出那些有代表性的词(网页中出现某词的次数/词的出现在多少个网页中),选取少数几个最具代表性的词用快速完全聚类算法,对于聚类结果,只关注那些小类,把有意义的小类留下,并使用同样的样本增加其集合数(也可以减少那些大类的集合数),使各类样本集数量相仿。最后用不完全聚类算法,这样那些乱填字符,主题不明确的垃圾网页就应该大部分被遗留下来了
 
15
2008-05-31 19:39 | 回复
垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾 垃圾
 
16
2008-08-03 11:24 | 回复
关注百度之星~~~~~~~~!
 
17
2008-08-04 12:56 | 回复
关注下
 
18
2009-05-03 17:40 | 回复
支持网页过滤!
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu