思路:
从DBpedia下载实体数据、含歧义的实体数据。
使用python对下载的数据做一些预处理,主要是提取实体、提取有歧义的实体的映射关系、提取有歧义的实体的上下文。
long_abstracts_preprocessing_entity(file_contents_examples)如下:
Animalia (book)
long_abstracts_preprocessing(file_contents_examples)如下:
Animalia (software)=>atlas:1 rand:1 shrugged:1 list:1 characters:1
Animalia (book)=>gold:1 copies:1 illustrated:1 edition:3 tenth:1 children:1 special:1 1986:1 anniversary:3 graeme:1 book:1 embossed:1 25th:1 2012:1 animalia:1 sold:1 base:1 numbered:1 1996:2 originally:1 signed:1 jacket:1 published:2
disambiguations_preprocessing(file_contents_examples)如下:
Animalia=>Animalia (law)<=Animalia (software)
使用LingPipe做实体识别。
使用Lucene对所有有歧义的实体的映射关系建立索引(index1)。
使用Lucene对所有有歧义的实体的上下文建立索引(index2)。
构建网页,获取用户输入,并传入后台处理。处理思路:
使用LingPipe识别出输入中的所有实体(比如,Alien),对每一个实体作如下处理:
从index1中查询该实体是否属于有歧义的实体,如果不是,则直接作为返回结果;如果是:
将index1中提供的所有可能的有歧义的实体(比如,Alien (law)、Alien (software))提取出来,对每一个这样的有歧义的实体:
从index2中查询出该实体的上下文信息(比如,Alien (law)=>gold:1 copies:1 illustrated:1 edition:3 tenth:1):
判断该有歧义的实体的上下文和用户输入的内容(即,LingPipe识别出的实体的上下文)进行比较,计算相似度,返回得分