自然语言处理基于java实现(4) 之 基于VSM模型的信息检索程序

本文介绍了如何基于VSM模型实现一个信息检索程序。首先,根据实验3的索引文件,通过构造数据结构和算法来设计程序。接着,详细阐述了实现步骤,包括构建数据结构、实现检索算法。最后,提供了源代码进行测试验证。
摘要由CSDN通过智能技术生成

一. 题目如下:
依据实验3建立的索引文件,实现一个基于VSM模型的信息检索程序。

解释下,如何实现一个基于VSM模型的信息检索程序?

                //      段落序号,词条, tf-idf值   的二维空间表
    private final Table<Integer,String,Double> vectorTable = HashBasedTable.create();

没错,简单无脑的理解,就是给个检索的句子,从这一张二维空间表中找出最佳匹配的段落,这个检索算法模型叫VSM模型

二. 实现步骤
1. 构造数据结构
2. 实现算法
3. 没了,做个测试吧

三. 源代码
1.二维空间表数据结构(准确的讲,它已经实现了检索算法)

package experiment4;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

public class VectorSpace {
   
    //      段落序号,    词条,    tf-idf值   的二维空间表
    private final Table<Integer,String,Double> vectorTable = HashBasedTable.create();

    protected VectorSpace(){

    }

    //VMS检索
    public int VSM(Map<String,Double> words){
        int index = 0;
        double max = 0;
        for(int rkey:vectorTable.rowKeySet()){
            Map<String,Double> map = vectorTable.row(rkey);
            double cos = cos(map,words);
            if(cos>max){
                max = cos;
                index = rkey;
            }
        }
        return index;
    }

    /**
     * 求两个句子的余弦相似度
     * @param map1
     *
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值