class SynsetLinker(Linker): def __init__(self): self.links = FileIO.read_json_file("db/type-linkings.txt") self.links = {data['offset']:data for data in self.links} self.query_processor = Query() self.expander = SynsetExpansion(0.95, 'wup') def offset(self, synset): return str(synset.offset() + 100000000) def link_append(self, synset, lst): if self.links.get(self.offset(synset)): typeLinks = self.links.get(self.offset(synset)) if typeLinks.get('dbpedia'): lst.append(typeLinks['dbpedia']) if typeLinks.get('yago_dbpedia'): lst.append(typeLinks['yago_dbpedia']) return True else: return False def searching(self, query, sim, th): self.expander.sim = sim self.expander.th = th synsets_lst, synsets_tuple = self.expander.synsets_exapnsion(query) results = [] for synset, score in synsets_tuple: syn_obj = {} syn_obj['synset'] = synset.__str__() syn_obj['lemmas'] = ' '.join(synset._lemma_names) syn_obj['definition'] = synset._definition syn_obj['sim'] = score link_lst = [] self.link_append(synset,link_lst) syn_obj['LOD'] = link_lst results.append(syn_obj) return results def linking(self, query): tokens = self.query_processor.tokenization(query) pos = self.query_processor.pos(tokens) types = [x for (x,y) in pos if y == 'NN' or y == 'NNS'] links = [] for t in types: synsets_lst, synsets_score_tuple = self.expander.synsets_exapnsion(t) for s in synsets_lst: self.link_append(s,links) return links
def __init__(self): self.links = FileIO.read_json_file("db/type-linkings.txt") self.links = {data['offset']:data for data in self.links} self.query_processor = Query() self.expander = SynsetExpansion(0.95, 'wup')