斯坦福NLP笔记72 —— The Inverted Index

Inverted Index是信息抽取里最常用的数据结构,来看看他长啥样:

斯坦福NLP笔记72 —— The Inverted Index_第1张图片

Brutus指向数字X则代表X号文档中包含了Brutus这个词。

左边的索引词称为Dictionary,右边的文档ID称为Posting,是排好序的。


存储

Dictionary相对体积较小,一般存在内存(memory)中,而Posting比较大,一般存在硬盘中(disk)。


构建Inverted Index

斯坦福NLP笔记72 —— The Inverted Index_第2张图片

假设documents长这样:Friends,Romans,Countrymen.

经过token stream处理以后,变成这样:Friends Romans Countrymen.

tokenizer的作用在于把字符串割成一个个单个的term。

然后再经过一个语言模型,变成这样:friend roman countryman

大小写变了、单复数变了等

所以语言模型的作用在于标准化,canonical form

接下来就可以进行index操作了


上述文本处理的一些细节

斯坦福NLP笔记72 —— The Inverted Index_第3张图片

  • Tokenize的时候,possessives和hyphenated term应该作何处理?(视情况而定)

  • 规则化的时候,如何把“U.S.A”和"USA"match起来

  • Stemming的时候,是否应该把相同stem的词等效起来?

  • “the\a\to”这些词是否应该扔掉?有时候他们不能扔,譬如:“To be ,or not be ?”


indexer的细节:

斯坦福NLP笔记72 —— The Inverted Index_第4张图片

遍历所有doc,得到右表。

斯坦福NLP笔记72 —— The Inverted Index_第5张图片

以term为关键字排序,term相同的时候按docID排序。

斯坦福NLP笔记72 —— The Inverted Index_第6张图片

  1. 相同的项合并(但词频不增加,仅仅是合并成一项而已)

  2. 分离后term后面紧接着存储该term一共在多少个doc里出现过


占用的空间

斯坦福NLP笔记72 —— The Inverted Index_第7张图片

  • 存储terms和他们对应的count

  • 存指针

  • 存docID的list


最后看看今天的练习题:

斯坦福NLP笔记72 —— The Inverted Index_第8张图片

正确答案是第一个。

你可能感兴趣的:(斯坦福NLP笔记72 —— The Inverted Index)