谈笑分生
課程:COMP4321 [原課號:COMP336]
作者:xzhuah [14级 CSE]
創建於:2016-06-06 02:07:22
更新於:2016-06-06 12:59:29
課程:COMP4321 [原課號:COMP336]
作者:xzhuah [14级 CSE]
創建於:2016-06-06 02:07:22
更新於:2016-06-06 12:59:29
課程時間:2016年Spring季
授課教授:LEE, DikLun
我覺得教授 知识渊博,人好话多
這門課的Grade:Grade神/較好
COMP 4321 是讲搜索引擎的一门课,内容较为丰富,主要内容有:
1.搜索引擎的基本概念和商业模型
就比如搜索引擎的种类,基本任务,各大公司如何用它赚钱
2. 各种搜索引擎涉及的算法和数据结构
这一部分内容丰富,也是我认为的精华部分,做project基本只需要这一部分的内容。
比如布尔模型(用01表示关键词的有无),vector space model(给每个关键次加一个权重,权重的算法很多,主要跟关键词在文中的出现次数,文章的长度,含该关键词的文章数量等有关),如何计算文章与查询语句的相似度,文章与文章的相似度(这些算法也可以引导你去思考如何比较其他东西的相似度)
Inverted Files 一个用于搜索引擎的数据结构,简单地说,它是用来方便通过关键词去找包含该关键词的文章的一个可扩展的数据结构, 它的概念很简单,熟悉数据结构的朋友们一眼就能记下来,做project的时候有相当一部分时间是去做这个,并优化之。
Extended Boolean Model 强化版的布尔模型,知道就好
Hypursuit, WISE,PageRank,HITS: 这几个是建立在超链接上的算法,BasicIdea就是如果A有指向B的链接,那A与B之间就有很多不可描述的关系,Hypursuit认为A 和B之间的相似度与A到B的最短路径有关,与A B共同的祖先和后代有关。WISE认为链接可以传递相似性,PageRank是Google用的(不过目前Google已经停止更新PageRank了,还有Page是Google创始人LarryPage的名字!),它认为越多网页指向A, 客户访问到A的概率越大,其PageRank就越高。HITS和PageRank有点像,它计算网页的Authorities和Hubs
3. 字符串匹配算法
介绍了几种字符串匹配算法,朴素的跟不朴素的,没加强的跟加强的,最后还拉出有限状态机和正则表达式讲了一通。
4 . Performance Evaluation
评价一个搜索引擎也是一门学问,我们定义了几种指标,recall,precision, fallout, 对比了人工评价与机器评价的差别,然后又定义了几种更复杂的指标,最后是Benchmark和TREC等知识,非常繁杂。
5. 关键词的处理
这就涉及到语言学啦,我们知道,英语单词从一个词根可以派生出一堆意义相近的单词,probability, probably, probable. 我们可以把这三个都用Probal代替,具体如何截断单词就是这里的主要内容。然后你要选哪些作为关键词呢?你选的关键词关键不关键啊?查询语句之间的相似度如何呀?两个不同的词是否经常一起出现,这又说明了什么?同义词怎么处理等。内容同样十分繁杂。
6. 反馈
这一章就是讲如何利用用户反馈优化搜索。通过用户的点击行为推测各个结果的真实相关性,然后通过调节搜索语句和代表文章的向量进行优化。还可以根据用户的搜索历史进行优化,
7. 企业搜索
用于公司内部的搜索引擎,对结果的准确度要求更高,爬虫的过程也更加专业化
8. 其他
这一部分是比较零散的,比如Google如何保证结果没有太多广告以及有害的网页。文件签名等。
9. Java JSP
由于Project推荐用Java做,我们开了四堂Lab讲Java的爬虫,JSP等东西,学的都是精髓
这门课上课发言可以获得最高3%的bonus,Project会有最高3%的bonus,都是要尽量拿到的。考试开卷。
说说上课,教授会讲很多很多东西,很容易走神,发言包括问和回答问题,要是教授忘记给你记bonus了,下课要勇敢地冲上去批判一番。教授人太好,知识水平又高,有些同学提的无聊问题他也能跟你们谈笑风生。所以尽量还是提些有建设性的问题,避免讲不完课。
说说Project,只是推荐用Java啊,其他语言也可用,最后主要靠给TA demo拿分。一个组一般3人,跟教授谈笑风生之后我抱上了三条大腿,成了唯一的四人组,当然我们的workload并不比别的组低,我们做了很多额外的东西,总的码量超过一万。做的时候分工要明确,要仔细看要求,要尽力拿bonus,能做的尽量都做,PageRank呀,stemmed Word呀,浮夸的前端啊,多爬些网页啊等等。(最有技术含量的还是提高查询速度,我们的搜索引擎在速度方面是完胜别的组的,有的组要将近一分钟才返回的结果,我们不到一秒就可以返回(当然与我们把服务器装在自己电脑上,以及缓存命中也有关,但算法绝对是关键)
在这里补一个坑,强烈建议不要使用java.net.URL这个类,它有大坑,每当你调用它的equals或者hashcode方法时,它会去访问那个URL,在Java眼里,Two URL objects are equal if they have the same protocol, reference equivalent hosts, have the same port number on the host, and the same file and fragment of the file. 为了确保equivalent hosts这一条,凡是要比较两个URL时,Java会发送请求并等待响应。这一点会严重拖慢速度,建议使用String代替掉URL,效率高有省空间。我们当时没注意,后来回去填坑费了好大劲。
整个Project还是非常复杂的,有许多细节你可以处理,比如有些网站里包含的链接写的是http协议其实是https协议,用浏览器会帮你自动转换,但编程时你要手动转换。有些网址比如www.aa.com/abc和www.aa.com/abc#id这两个,了解网页的同学都应该知道他们其实是同一个网页,写的时候也要注意不要重复爬。很多这些细节虽然没有保护在要求里,不做也不会有大问题(教授会指定爬虫范围,范围里的网页没有这些问题),但是这些问题是真实网页爬虫中必须解决的,可以在demo的时候成为你的加分项。
demo给TA之后,TA会选出几组(我们是5组,但有一组没来)去做in class demo, 这几组会获得而外的加分,所以要尽量做好。个人认为Project的分值和bonus应该给高一点,它比考试有意义的多。有兴趣的同学还可以吧project放到亚马逊的服务器上,以后都可以随时访问。
吐槽一下考试,这门课最XX的地方就是考试,选择题考察概念,大题主要考算法。期中考,8分一道的选择题让人颤抖,分值高,出题又不严谨,非常难以捉摸,PastPaper都是判断题,一题一分,改成选择题之后就呵呵了。你会发现选项槽点满满,一个选项经常有多种理解方式,而你永远猜不到答案是什么理解方式。同学们记住了,考差了别灰心,一定去checkpaper,找到答案和课件,pastpaper的矛盾之处,跟TA教授谈笑分还是有希望生的。当然还是要看个人的奋斗啦。期末5分一道的选择,情况也差不多。教授就喜欢选择题考一些细节概念,要利用好开卷的条件多查查,确保不扣分,万一扣了,你还可以拿出你查到的资料去批判一番。大题都是考各种算法为主,最好总结一下所有的算法,很有帮助。算法经常有前提条件,优缺点,所需假设等,这些也是会考的。pastpaper里还有考过project有哪些要求的问题,我表示无可奉告。但真正的考试里并没有出现,但还是应带上project 手册进考场。Pastpaper也要带,可能会出相同的表达,你也可以指出pastpaper答案和标准答案的矛盾之处去把分要回来。
总的来说吧,这门课讲了很多有用有趣的东西,也有很多没什么用的东西。假如你对search engine真的很有兴趣,那就来上吧。要是并不想从事这方面的工作,那就慎重一点,这个课内容太繁杂,虽然开卷,但workload依然挺大,龟又掌握在那几道槽点满满的选择题上,令人有点不爽。
我们的Project安装在个人电脑上,运气好的话,连接科大WiFi时可以访问 Search
Comments
Write a comment
請登錄後再評論
請登錄後再評論