20130324 about course assignments

46 views
Skip to first unread message

Hongfei Yan

unread,
Mar 24, 2013, 4:33:11 AM3/24/13
to cs41...@googlegroups.com
16名同学选课
==Linux, C++ (5)
GUOYanwei, WUYuexin, JIANGHan,LIYechen, CHAIXiaohu,

==Linux, C++, without Makefile (2)
KANGHuawei, LIANGXiongkai, FANnana

==Win, C++ (3)
SONGXintong, HUANGYanxiang, HUANGZhe

==Java (2)
ZHAOHaoshu, CUIChenyang(assign1&2 in Java, assign3 in Python)

==Python (3)
YANGTing, CHENWeizheng, RONGXiaosong


Note:

0)提交的作业,如有可能,尽量使用英文。尤其源程序中不要出现非英文字符,乱码。
1)提交的打包作业,不要包含数据集,可执行文件及中间文件。太大了,且没用。
2)作业说明中不要出现类似“我的想法和ppt上的差不多”字眼。不知道是那个ppt,哪一页。
3)如果是在Linux系统中,用C++完成的作业,希望能提供Makefile,因为不使用集成环境。
4)作业中使用到其他的包,请说明,并给出出处。比如,很多同学用到了stemming包。
5)可以基于其他同学的前次作业代码,来完成后续作业,但是要注明出处。比如提供的过岩巍的代码,或者其他同学代码。
6)上述统计如有错误,请反馈。

7)另:我只是尽量看了过岩巍的第一次作业的代码,其中query analysis部分使用stack还没有看懂。
吴悦昕也使用了boost库,虽然我这里版本与他的一致,还是无法编译通过。

附上过岩巍的作业供大家参考,他使用了boost库,我可以编译通过。欢迎大家讨论、学习作业代码
#include<boost/algorithm/string.hpp>
#include<boost/unordered_map.hpp


==assignment 1
完成情况:
1、完成对Shakespeare文档集以文档为单位构建倒排索引。对文档内容,全部转为小写,用空格,"\t","\n"作为词项切分符。未进行去停、词项归一、词干还原操作。
2、完成布尔检索模型支持布尔查询。我定义的布尔查询规则如下:
1)默认空格表示与操作,竖线符号"|"表示或操作,感叹号"!"表示非操作
2)非操作优先级最高,与操作次之,或操作优先级最低
3)支持括号(),括号内部操作先进行
4)"!"后面必须紧跟一个查询词,之间不能有空格,否则报错
5)括号,"!","|"与查询词之间必须有空格,以空格为切分符号进行查询词和操作符的截取
6)括号必须匹配,否则报错
7)查询会被转为小写格式
3、完成查询合并优化。多个查询词进行与操作合并、或操作合并时,较短的倒排链先合并,节省时间开销。
4、查询返回符合要求的文档名,其结果按照文档包含查询词个数和由多到小排列,即相关度以查询中所有查询词频次之和来衡量。


==assignment 2
完成情况:
1、完成对Shakespeare文档集以文档为单位构建倒排索引。对文档内容,全部转为小写,用空格、"\t"作为词项切分符。
2、使用网络上他人提供的一个用于词干还原的库进行stemming处理,源文件在source/stem/目录下。
3、完成布尔检索模型支持布尔查询。我定义的布尔查询规则如下:
1)默认空格表示与操作,"/n"表示在位置距离绝对值在n以内的与操作,竖线符号"|"表示或操作,感叹号"!"表示非操作,引号""表示词组查询。
2)词组查询是特殊的与操作:"A B"表示B在A后面一个位置出现的与操作
3)非操作优先级最高,词组查询次之,与操作再次之,或操作优先级最低
4)支持括号(),括号内部操作先进行
5)"!"后面必须紧跟一个查询词,之间不能有空格,否则报错
6)括号必须匹配,引号必须匹配,否则报错
7)不支持单纯的与操作和非操作的结果进一步进行位置信息相关查询
8)多个带位置的与操作严格按照从左到右顺序,不支持使用括号改变多个带位置的与操作的顺序。
9)查询会被转为小写格式
4、完成查询合并优化。多个查询词进行或操作合并时,较短的倒排链先合并,节省时间开销。

使用方法:
1、make:编译生成buildIndex和searchQuery两个可执行文件置于该目录下。
2、./buildIndex your_doc_input_directory:对your_doc_input_directory目录下文档集进行索引构建,结果会生成index目录存放倒排索引文件和文档对应id文件。
3、./searchQuery:执行searchQuery进行布尔查询。可不断输入查询。输入/q退出程序。
4、make clean:清除index文件夹、buildIndex和searchQuery。
5、查询示例:
1)包含词组friend to并且包含词组to friend:"friend to" "to friend"
2)friend和caesar位置距离绝对值在3以内并且caesar和brutus位置距离绝对值在3以内:friend /3 caesar /3 brutus
3)包含词组friend to或者包含friend和to位置距离绝对值在1以内:"friend to" | friend /1 to
4)包含hamlet或者caesar并且包含词组friend to:(hamlet | caesar) "friend to"


==assignment 3
完成情况:
1、在作业2的基础上,增加拼写错误检查。若一个查询词在索引中找不到,则会根据编辑距离以及jaccard系数推荐三个最相近的词项。
2、完成布尔检索模型支持布尔查询。我定义的布尔查询规则如下:
1)默认空格表示与操作,"/n"表示在位置距离绝对值在n以内的与操作,竖线符号"|"表示或操作,感叹号"!"表示非操作,引号""表示词组查询。
2)词组查询是特殊的与操作:"A B"表示B在A后面一个位置出现的与操作
3)非操作优先级最高,词组查询次之,与操作再次之,或操作优先级最低
4)支持括号(),括号内部操作先进行
5)"!"后面必须紧跟一个查询词,之间不能有空格,否则报错
6)括号必须匹配,引号必须匹配,否则报错
7)不支持单纯的与操作和非操作的结果进一步进行位置信息相关查询
8)多个带位置的与操作严格按照从左到右顺序,不支持使用括号改变多个带位置的与操作的顺序。
9)查询会被转为小写格式
5、查询示例:
1)若搜索you错误输入为yuo,则会显示
For yuo do you mean: quo you your
2)若搜索like friend错误输入为likk friemd,则会显示
For likk do you mean: link lick like
For friemd do you mean: friend friends field

环境:
操作系统 linux
boost库 1.43

使用方法:
1、make:编译生成buildIndex和searchQuery两个可执行文件置于该目录下。
2、./buildIndex your_doc_input_directory:对your_doc_input_directory目录下文档集进行索引构建,结果会生成index目录存放倒排索引文件和文档对应id文件。
3、./searchQuery:执行searchQuery进行布尔查询。可不断输入查询。输入/q退出程序。
4、make clean:清除index文件夹、buildIndex和searchQuery。


CS41013-Assign1-1201214035.zip
CS41013-Assign2-1201214035.zip
CS41013-Assign3-1201214035.zip
Reply all
Reply to author
Forward
0 new messages