iceshirley的专栏

千里之行,始于足下

原创 加入网页评估算法收藏

面向主题的爬虫设计,很重要的一步就是评估算法.   对于给定的关键字集合及其权重,考虑某个网页的相关度可以使用向量空间模型来分析。

关键字权值的集合,我们用向量a来表示,其中 a=(a1,a2,...an) n为关键字个数

对于每个关键字,统计其在一个网页中出现的次数,向量x=(x1,x2,...,xn)来代表频率比,如果关键字i出现的次数最高,则将起频率比xi设为1,对于其它的关键字j,j不等于i,其频率比为关键字j出现的次数/关键字i出现的个数。构造向量b=(a1*x1,a2*x2,...,an*xn),在计算它们的余弦值p,这个余弦值便是网页的相关度。

仅仅考虑网页相关度是不严谨的,比如说一个你想查询“电脑销售”,而电脑销售的权威网页不一定有这个词,比如 联想。方正,如果仅仅考虑关键字出现的次数,这样的权威网页很可能被舍弃。这样,可以引入网页的pagerank值,使最终网页评估值为 p=w1*p+w2*pr,pr为这个网页的pagerank值,w1+w2=1;

中文分词 使用的是中科院免费的分词工具,实现语言java

自己写一个中文分词类class ChineseAnalyzer extends Analyzer{
 private Set stopwords;
 
 ChineseAnalyzer(){
  this.stopwords=StopFilter.makeStopSet(StopAnalyzer.ENGLISH_STOP_WORDS);
 }
 ChineseAnalyzer(String[] stopword){
  this.stopwords=StopFilter.makeStopSet(stopword);
 }
 public TokenStream tokenStream(String fieldName, Reader reader){
  TokenStream result=null;
  char[] temp =new char[50];/
  ICTCLAS splitword=new ICTCLAS();
  try{
   reader.read(temp);
   String resultString=splitword.paragraphProcess(new String(temp));
   result=new WhitespaceTokenizer(new StringReader(resultString));
   result=new LowerCaseFilter(result);//小写化
   result=new StopFilter(result,this.stopwords);//去掉stopword
   result=new PorterStemFilter(result);//去掉后缀
  }
  catch(IOException e){
   e.printStackTrace();
  }
  return result;
 }
 
}

发表于 @ 2006年12月08日 14:19:00|评论(loading...)

新一篇: utf8网页的问题 | 旧一篇: 增强bot.jar包中htmlpage类

Csdn Blog version 3.1a
Copyright © iceshirley