作用
倒排索引是为了加速搜索过程。例如做问答系统的问题匹配时,数据库过大,用传统方法将所有问题与用户输入的问题一一做相似度匹配耗时很多。而倒排索引可以直接定位到与用户输入有相同词汇的问题,甚至可以简单地将词语的重合度当成相似度来抽取对应答案,大大提高了效率。
例如,我有10万条问答对,问句中只出现了100次“篮球”这个词语,而用户输入中有“篮球”这个词语,传统方法需要一一匹配相似度10万次,而倒排索引后的相似度匹配只需要100次。(细节方面还可以深究,例如缺词匹配,近义词匹配等,以后有时间再补上)
理论
这篇博客详细地介绍了倒排索引的主要理论:http://blog.csdn.net/hguisu/article/details/7962350
代码
下面给出了倒排索引的生成代码,至于相似度匹配,方法太多,有时间再补。
gensim中的corpora能生成倒排索引
from gensim import corpora
dictionary = corpora.Dictionary(corpus)
其中corpus为一个list,corpus中的每一个元素为该文章单词所组成的list。
若不想安装gensim库,以下提供一段不包含频率的倒排索引生成代码
import jieba
import jieba.posseg as pseg
listInvertedIndex = []