ir homework 1: 构建布尔检索系统
思路
语料库预处理
- 去除非中文汉字符号,包括:标点符号、英文、数字等等
- 分词
- 去停用词
建表
- 获取语料库的词汇表
- 获取各个文档的词汇表
- 建表,用dict类型word2docs保存,word对应包含该word的文档编号
查询文档
- 解析用户表达式
- 合法性检查
- 计算符合条件的文档集合
- 打印结果
待解决的问题
- 查询表达式,其中一个运算项经过预处理后为空,怎么办
- 空集合&其他集合=空集合
资源
停用词表
https://github.com/dongxiexidian/Chinese
结巴分词
https://github.com/fxsjy/jieba
有用的代码块
逐行读文件
with open(file_name, 'r') as f1:
for line in f1.readlines():
pass # do something
如何只保留中文汉字
去掉标点符号,英文,数字等。
def chinese_word_extraction(content_raw):
'''只保留中文汉字
'''
chinese_pattern = u"([\u4e00-\u9fa5]+)"
chi_pattern = re.compile(chinese_pattern)
re_data = chi_pattern.findall(content_raw)
content_clean = ' '.join(re_data)
return content_clean
如何进行中文分词
word_list = list(jieba.cut_for_search(line))
如何检查一个表达式是否合法
def check_syntax(expression, **variables):
"""检查表达式合法性
"""
try:
eval(expression, variables)
except (SyntaxError, NameError, ZeroDivisionError):
return False
else:
return True
网友评论