def get_links(self, text: str, kg='wikidata', mode='long') -> List[Pair]: db = kg.lower().strip() if kg.lower().strip() in [ 'wikidata', 'dbpedia' ] else 'wikidata' mode = mode.lower().strip() if mode.lower().strip() in [ 'long', 'short' ] else 'long' params = {"mode": mode} if db == 'dbpedia': params['db'] = 1 try: result = self.client.POST(json={ "text": text }, params=params).json() ent_key = f'entities_{kg}' rel_key = f'relations_{kg}' entities = [ Pair(entity[0], entity[1], 'entity') for entity in result[ent_key] ] if ent_key in result else [] relations = [ Pair(relation[0], relation[1], 'relation') for relation in result[rel_key] ] if rel_key in result else [] return entities + relations except JSONDecodeError as ex: print(ex) return []
def get_links(self, text: str) -> List[Pair]: self.check_execution_safety() from_ner = self.linker.get_links(text=text) ents, preds = self.strip_to_ner(from_ner) linked_entities = [ Pair(ent[0], ent[1], 'entity') for ent in self.search_in_es(self.entity_es_index_name, ents) ] linked_relations = [ Pair(rel[0], rel[1], 'relation') for rel in self.search_in_es(self.relation_es_index_name, preds) ] return linked_entities + linked_relations
def get_links(self, text: str) -> List[Pair]: topics_response = meaningcloud.TopicsResponse( meaningcloud.TopicsRequest(MEANING_CLOUD_KEYS[randint( 0, len(MEANING_CLOUD_KEYS) - 1)], txt=text, lang='en', topicType='e').sendReq()) if topics_response.isSuccessful(): entities = topics_response.getEntities() links = [] for entity in entities: if 'semld_list' not in entity: continue found = list( filter(lambda x: x[:23] == 'http://en.wikipedia.org', entity['semld_list'])) if len(found) > 0: links.append( Pair( f"http://dbpedia.org/resource/{found[0][found[0].rfind('/') + 1:]}", entity['form'], 'entity')) return links else: if topics_response.getResponse() is None: print("\nOh no! The request sent did not return a Json\n") else: print("\nOh no! There was the following error: " + topics_response.getStatusMsg() + "\n") return []
def get_links(self, text: str) -> List[Pair]: payload = self.prepare_json_request({'query': text}) result = self.client.POST(data=payload).json() return [ Pair(f"http://www.wikidata.org/entity/{entity['best_qid']}", text[entity['start']:entity['end']], 'entity') for entity in result['annotations'] if entity['best_qid'] is not None] \ if 'annotations' in result else []
def get_links(self, text: str) -> List[Pair]: annotations = tagme.annotate(text) return [ Pair( f'http://dbpedia.org/resource/{ann.entity_title.replace(" ", "_")}', ann.mention, 'entity') for ann in annotations.get_annotations(0.1) ]
def get_links(self, text: str) -> List[Pair]: result = self.client.link.POST(json={"text": text}).json() links = [] for entry in result: if entry['type'] in self.allowed_relation_types: link_type = 'relation' else: link_type = 'entity' links.append(Pair(entry['uri'], entry['text'], link_type)) return links
def get_links(self, text: str) -> List[Pair]: result = self.client.link.POST(json={"text": text}).json() links = [] for entry in result: if entry['uri'] is None or len(entry['uri']) == 0: continue if re.search(r"R\d+", entry['uri']) is not None: link_type = 'entity' uri = f"https://www.orkg.org/orkg/resource/{entry['uri']}" else: link_type = 'relation' uri = f"https://www.orkg.org/orkg/predicate/{entry['uri']}" links.append(Pair(uri, entry['text'], link_type)) return links
def get_links(self, text: str, kg='wikidata') -> List[Pair]: graph = kg.lower().strip() if kg.lower().strip() in [ 'wikidata', 'dbpedia' ] else 'wikidata' client = TextRazor(self.get_api_key(), extractors=['entities']) links = [] response = client.analyze(text) for entity in response.entities(): link = None if graph == 'wikidata': link = f'http://www.wikidata.org/entity/{entity.wikidata_id}' else: link = f'http://dbpedia.org/resource/{entity.wikipedia_link[entity.wikipedia_link.rfind("/")+1:]}' span = entity.matched_text links.append(Pair(link, span, 'entity')) return links
def get_links(self, text: str) -> List[Pair]: payload = self.prepare_json_request({ "docId": "doc1", "text": text, "extractConcepts": True, "language": "en" }) # payload = "{\"docId\": \"doc1\", \"text\": \""+text+"\", \"extractConcepts\": \"true\", \"language\": \"en\" }" headers = { 'accept': 'application/json', 'content-type': 'application/json' } response = requests.request("POST", AMBIVERSE_URL, headers=headers, data=payload.encode('utf-8')) try: return [ Pair(ent['entity']['id'], ent['text'], 'entity') for ent in response.json()["matches"] if 'id' in ent['entity'] ] except Exception as e: return []
def get_links(self, text: str) -> List[Pair]: result = self.client.GET(params={'text': text}, verify=False, headers={"accept": "application/json"}).json() if 'Resources' in result: return [Pair(entity['@URI'], entity['@surfaceForm'], 'entity') for entity in result['Resources']] else: return []