Google怎么做(1.相关提示)

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/

GOOGLE 的相关提示功能

 

中科院软件所 张俊林

    2006年3月

 

在我以前发的帖子里面讲过百度的相关提示功能是如何实现的,下面说说GOOGLE(http://googlechinablog.com/2006/04/blog-post_10.html)的相关提示如何实现的,你使用两个搜索引擎并观察一下两个系统的相关提示就会发现,GOOGLE的技术含量比百度高出很多.比如输入查询刘翔”,GOOGLE的相关提示足球”/”罗雪绢”/”姚明”/”田径等等,而百度的相关提示是:”刘翔图片”/”刘翔简介等等.最大的区别是:百度的相关提示一定包含查询本身,GOOGLE的相关提示视野要开阔很多.那么GOOGLE是如何做的?

GOOGLE有计算用户相似需求的算法,并且依据这个算法来对用户进行相关提示.基本步骤如下:

(1)   得到用户查询LOG文件作为输入,其中包含大量不同用户提交给搜索引擎的查询;

(2)   首先将用户查询进行分类,假设LOG文件由以下三个域构成

          QUERY   USERID  TIMESTAMP

         QUERY:用户提交的查询

         USERID:用户ID信息

          TMESTAMP:用户提交查询的时间信息  

 

(3)   对于用户查询进行排序,排序原则是首先按照用户ID进行排序,对于同一用户,将查询按照时间进行排序;

(4)   在排好序列的LOG里面寻找满足下列特征的集合:a.如果两个查询属于同一用户发出,b.而且两个查询在排序的LOG文件里面紧密相邻,c.同时两个查询有部分词汇相同;

(5)   此时,可以将两个查询中不同的词汇看作可能的候选同义词,这些同义词用不同词汇表达相似的信息需求;

(6)   统计这两个候选同义词在语料库文件里面共现次数,如果出现次数足够大,则认为是属于表达相似用户需求的同义词,否则认为不是同义词;具体计算应该采用的是互信息的方法,也就是说首先计算两个候选同义词同时在语料库里面出现次数,然后计算每个候选词汇单独出现在语料库里面面的次数,然后计算互信息来确定;

(7)   将统计得出的同义词作为用户查询相关信息提示的依据;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
<!DOCTYPE html> <html> <head> <title>Login/Register Page</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> </head> <body> <div class="container pt-5"> <div class="row justify-content-center"> <div class="col-md-6"> <div class="card"> <div class="card-header"> <ul class="nav nav-tabs card-header-tabs"> <li class="nav-item"> <a class="nav-link active" id="login-tab" data-toggle="tab" href="#login" role="tab" aria-controls="login" aria-selected="true">Login</a> </li> <li class="nav-item"> <a class="nav-link" id="register-tab" data-toggle="tab" href="#register" role="tab" aria-controls="register" aria-selected="false">Register</a> </li> </ul> </div> <div class="card-body"> <div class="tab-content"> <div class="tab-pane fade show active" id="login" role="tabpanel" aria-labelledby="login-tab"> <form> <div class="form-group"> <label for="username">Username</label> <input type="text" class="form-control" id="username" placeholder="Enter username"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" class="form-control" id="password" placeholder="Enter password"> </div> <button type="submit" class="btn btn-primary">Login</button> </form> </div> <div class="tab-pane fade" id="register" role="tabpanel" aria-labelledby="register-tab"> <form> <div class="form-group"> <label for="new-username">Username</label> <input type="text" class="form-control" id="new-username" placeholder="Enter new username"> </div> <div class="form-group"> <label for="new-password">Password</label> <input type="password" class="form-control" id="new-password" placeholder="Enter new password"> </div> <div class="form-group"> <label for="confirm-password">Confirm Password</label> <input type="password" class="form-control" id="confirm-password" placeholder="Confirm new password"> </div> <button type="submit" class="btn btn-primary">Register</button> </form> </div> </div> </div> </div> </div> </div> </div> <script> $(document).ready(function(){ $('#register-tab').click(function(){ $('#login-tab').removeClass('active'); $('#login').removeClass('show active'); $('#register-tab').addClass('active'); $('#register').addClass('show active'); }); $('#login-tab').click(function(){ $('#register-tab').removeClass('active'); $('#register').removeClass('show active'); $('#login-tab').addClass('active'); $('#login').addClass('show active'); }); $('form').submit(function(e){ e.preventDefault(); if($(this).attr('id') === 'register-form'){ var username = $('#new-username').val(); var password = $('#new-password').val(); var confirm_password = $('#confirm-password').val(); if(password !== confirm_password){ alert('Passwords do not match'); }else{ $.ajax({ url: 'register.php', method: 'POST', data: { username: username, password: password }, success: function(response){ if(response === 'success'){ alert('Registration successful. Please login'); $('#register-tab').removeClass('active'); $('#register').removeClass('show active'); $('#login-tab').addClass('active'); $('#login').addClass('show active'); }else{ alert(response); } } }); } }else{ var username = $('#username').val(); var password = $('#password').val(); $.ajax({ url: 'login.php', method: 'POST', data: { username: username, password: password }, success: function(response){ if(response === 'success'){ window.location.href = 'dashboard.php'; }else{ alert(response); } } }); } }); }); </script> </body> </html> Note: The above code is just an example and will not work until you create the necessary PHP files for login and registration and reference them in the AJAX calls.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值