搜索引擎开发实践01.pptVIP

  • 0
  • 0
  • 约4.85千字
  • 约 42页
  • 2017-03-03 发布于湖北
  • 举报
概 述 前导知识 搜索引擎的查询语法 搜索引擎的总体架构 用户界面布局 网站搜索的常用功能 准备开发环境 JDK1.6 增加虚拟内存到800M -Xmx800m Eclipse /babel/downloads.php 支持中文的语言包 Lucene /java/docs/index.html Resin /download 准备开发环境(续) TortoiseSVN Ant Maven Linux CentOS() SecureCRT登录 词法分析(Lexical analysis) 例如分析输入的用户查询串,输出该字符串中出现的所有的合法的单词(Token)。例如对查询串“NBA AND 比赛”的词法分析: Token NBA AND 比赛 Type TERM AND TERM Lucene中采用JavaCC实现词法分析。 JavaCC有个Eclipse插件(/) 词法分析的原理 生成词法分析器 词法分析器如何工作? 把用户输入定义的Token转换成为正规文法等价的形式 把正规文法转换成NFA 把NFA转换成DFA 生成代码模拟DFA 语法分析 词法分析-JavaCC JavaCC(Java Compiler Compiler)可以同时完成对文本的词法分析和语法分析的工作。 jj文件的结构 一个JavaCC文件由三部分组成: Options 类的声明 词法分析的声明(tokens),和语法分析的声明 options { STATIC=false; … } PARSER_BEGIN(StandardSyntaxParser) … PARSER_END(StandardSyntaxParser) /* Token Definitions */ 选项(options) STATIC是一个布尔选项,缺省值是真。 如果是真,在生成出的解析器和token管理器中,所有的方法和类变量都声明成静态的。 这样仅仅允许一个解析对象存在,但是查询分析器应该有很多个,所以这个值应该设成假。 词法分析-JavaCC lucene-3.0.0\contrib\queryparser\src\java\org\apache\lucene\queryParser\standard\parser\StandardSyntaxParser.jj parse方法定义了对用户查询串的词法分析功能,并完成初步的语法分析 public QueryNode parse(CharSequence query, CharSequence field) QueryNode对象包含了分析出来的语法树 概率 一本词典,从词典翻页看到的词是一个动词的概率? 如何计算: 全部的词 = 对词典中所有的词计数 # 得到一个动词的方法: 是动词的单词数量 如果一个词典有50,000项, 10,000 是动词,则 P(V) = 10000/50000 = 1/5 = 0.2 计算P(W) 如何计算联合概率: P(“the”,”other”,”day”,”I”,”was”,”walking”,”along”,”and”,”saw”,”a”,”lizard”) 构想: 根据概率的链规则 概率的链规则 根据条件概率的定义 重写: 更通用的公式 P(A,B,C,D) = P(A)P(B|A)P(C|A,B)P(D|A,B,C) 一般化 P(x1,x2,x3,…xn) = P(x1)P(x2|x1)P(x3|x1,x2)…P(xn|x1…xn-1) 链规则应用到句子中的单词的联合概率 P(“the big red dog was”)= P(the)*P(big|the)*P(red|the big)*P(dog|the big red)*P(was|the big red dog) 很容易估计: 如何估计? P(the|its water is so transparent that) P(the|its water is so transparent that) = C(its water is so transparent that the) _______________________________ C(its water is so transparent that) 但是 有很多可能的句子 没法得到足够的数据为这些长的前缀计算统计值 P(lizard|the,other,day,I,was,walking,along,and,saw,a) 或者 P(the

文档评论(0)

1亿VIP精品文档

相关文档