def getStocks(self, relation): stocks = [] stocks_phrases = relation.getSecondLevelRoles('<actor_stock:1>') # collect all stock phrases from given relation for candidate in stocks_phrases: if candidate.coreferent != None and Utils.isNamedEntity(candidate.coreferent) and not candidate.coreferent in stocks_phrases: # get named entities from given phrase for entity_str in Utils.getNamedEntities(candidate.coreferent): if not entity_str.replace('_', ' ') in stocks: stocks.append(entity_str.replace('_', ' ')) return stocks
def getAgencies(self, relation): agencies = [] agencies_phrases = relation.getSecondLevelRoles('<actor_agency:1>') # collect all agency phrases from given relation for candidate in agencies_phrases: if candidate.coreferent != None and Utils.isNamedEntity(candidate.coreferent) and not candidate.coreferent in agencies_phrases: # get named entities from given phrase for entity_str in Utils.getNamedEntities(candidate.coreferent): # is it relevant agency string? Dfens against bugs and wrong parses if RoleResolver.isRelevantAgencyEntity(entity_str) and not entity_str.replace('_', ' ') in agencies: agencies.append(entity_str.replace('_', ' ')) return agencies