1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器

百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器

时间:2020-01-26 14:51:10

相关推荐

百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器

题目描述

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

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

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

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

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

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

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

输入格式

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

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

样例输入

小胖之喷火龙骑士!!

小胖6

喷火-1

喷火龙-1

火龙-1

龙4

龙骑3

龙骑士2

骑士-2

士3

输出格式

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

样例输出

7

样例解释

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

my answer:

no idea!!!完全木有想法啊!!!!!

如果是英文,可以用子典树,建一个GOOD树和一个BAD树,其中GOOD树的某些结点标记为DANGEROUS属性,即当后面为某些特定的字符串时无效。

如果是中文,要怎么办呢?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。