分词组件(Tokenizer)会做以下几件事情(此过程称为Tokenize):1. 将文档分成一个一个单独的单词。2. 去除标点符号。3. 去除停词(Stop word)。
经过分词组件处理得到的结果叫:词元 (Token) 。
2、将得到的词元(Token)传给语言处理组件(Linguistic Processor)。
对于英语,语言处理组件(Linguistic Processor)一般做以下几点:1. 变为小写(Lowercase)。2. 将单词缩减为词根形式,如“cars”到“car”等。这种操作称为:stemming。3. 将单词转变为词根形式,如“drove”到“drive”等。这种操作称为:lemmatization。
经过语言处理组件(linguistic processor)的结果称为 :词(Term)。
3、将得到的词(Term)传给索引组件(Indexer)
索引组件(Indexer)主要做以下几件事情:1. 利用得到的词(Term)创建一个字典。2. 对字典按字母顺序进行排序。3. 合并相同的词(Term)成为文档倒排(Posting List)链表。
文件一:Students should be allowed to go out with their friends, but not allowed to drink beer.文件二:My friend Jerry went to school to see his students but found them drunk which is not allowed.
Term DocumentID
student 1allow 1go 1Their 1friend 1Allow 1Drink 1beer 1
my 2friend 2jerry 2go 2school 2see 2his 2student 2find 2them 2drink 2allow 2
Term DocumentID
allow 1allow 1allow 2beer 1drink 1drink 2find 2friend 1friend 2go 1go 2his 2jerry 2my 2school 2see 2student 1student 2their 1them 2
影响一个词(Term)在一篇文档中的重要性主要有两个因素:• Term Frequency (tf):即此Term在此文档中出现了多少次。tf 越大说明越重要。• Document Frequency (df):即有多少文档包含次Term。df 越大说明越不重要。
我们把所有此文档中词(term)的权重(term weight) 看作一个向量。
Document = {term1, term2, …… ,term N}Document Vector = {weight1, weight2, …… ,weight N}
同样我们把查询语句看作一个简单的文档,也用向量来表示。
Query = {term1, term 2, …… , term N}Query Vector = {weight1, weight2, …… , weight N}
我们把所有搜索出的文档向量及查询向量放到一个N维空间中,每个词(term)是一维。
2012年9月1日15:03:17