【信息检索】索引构建和压缩的实验

该博客探讨了使用jieba分词工具对600个文档进行分词,统计了token和term总数,并构建了倒排索引。此外,还详细介绍了VB编码和解码过程,以及Gamma编码和解码的实现,通过三个数字(113,309,720)验证了算法的正确性。

(1). 针对附件“HW3.txt”中的600个文档(每行表示一个document,文档ID为1至600)

(i)使用jieba中文分词(https://pypi.org/project/jieba/)或其他中文分词工具进行分词;
(ii)统计600个文档中的token的总数和term的总数;
(iii)构建倒排索引,并输出以下七组查询的文档ID:“迁移”,“迁移学习”,“推荐”,“深度学习”,“隐私”,“跨领域”,“跨域”。

代码截图和详细的文字说明:

  1. 读取文档
# 读取文档,并按行分隔
doc = open('HW3.txt', 'r', encoding='gbk').read().splitlines()
  1. 计算token,term
# 添加自定义词库(可选)
for path in os.listdir('dictionary'):
    jieba.load_userdict('dictionary/' + path)

# 计算token,term数量
# token使用list存储,term使用set存储(可去重)
token, term = list(), set()
for sentence in doc:
    # 利用jieba进行分词 返回分词后的结果
    seg_list = list(jieba.cut(sentence, cut_all=False))
    token.extend(seg_list)
    term.update(seg_list)
print('len(token) =', len(token))
print('len(term) =', len(term))
  1. 建立倒排索引
hashtable = {
   
   }
for index, sentence in enumerate(doc):
    # 利用jieba进行分词 返回分词后的结果
    # 使用精确模式
    for word in jieba.cut(sentence, cut_all=False):
        if word in hashtable:
            hashtable[word].append(index+1)
            hashtable[word][0] += 1
        else:
            hashtable[word] = [1, index+1]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_SCY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值