今天看啥  ›  专栏  ›  cuizixin

IR homework 1: 构建布尔检索系统

cuizixin  · 简书  ·  · 2018-09-22 23:08

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



原文地址:访问原文地址
快照地址: 访问文章快照