def test_elmo_offline(): mentions = get_embedd_mentions() embeder = ElmoEmbedding() for mention in mentions: embeder.get_head_feature_vector(mention) elmo_embeddings = WordEmbeddingRelationExtraction(EmbeddingMethod.ELMO_OFFLINE, elmo_file=None) elmo_embeddings.embedding.embeder = embeder.cache assert ( elmo_embeddings.extract_all_relations(mentions[0], mentions[0]).pop() == RelationType.WORD_EMBEDDING_MATCH ) assert ( elmo_embeddings.extract_all_relations(mentions[0], mentions[1]).pop() == RelationType.WORD_EMBEDDING_MATCH ) assert ( elmo_embeddings.extract_all_relations(mentions[0], mentions[2]).pop() == RelationType.NO_RELATION_FOUND ) assert ( elmo_embeddings.extract_all_relations(mentions[0], mentions[3]).pop() == RelationType.WORD_EMBEDDING_MATCH )
def test_elmo_online(): mentions = get_embedd_mentions() elmo_embeddings = WordEmbeddingRelationExtraction(EmbeddingMethod.ELMO) assert elmo_embeddings.extract_all_relations( mentions[0], mentions[0]).pop() == RelationType.WORD_EMBEDDING_MATCH assert elmo_embeddings.extract_all_relations( mentions[0], mentions[1]).pop() == RelationType.WORD_EMBEDDING_MATCH assert elmo_embeddings.extract_all_relations( mentions[0], mentions[2]).pop() == RelationType.NO_RELATION_FOUND assert elmo_embeddings.extract_all_relations( mentions[0], mentions[3]).pop() == RelationType.WORD_EMBEDDING_MATCH
def run_example(): logger.info("Running relation extraction example......") computed = ComputedRelationExtraction() ref_dict = ReferentDictRelationExtraction( ref_dict=str(LIBRARY_ROOT / "datasets" / "coref.dict1.tsv")) vo = VerboceanRelationExtraction( vo_file=str(LIBRARY_ROOT / "datasets" / "verbocean.unrefined.2004-05-20.txt")) wiki = WikipediaRelationExtraction() wn = WordnetRelationExtraction() embed = WordEmbeddingRelationExtraction(method=EmbeddingMethod.ELMO) mention_x1 = MentionDataLight( "IBM", mention_context= "IBM manufactures and markets computer hardware, middleware and software", ) mention_y1 = MentionDataLight( "International Business Machines", mention_context="International Business Machines Corporation is an " "American multinational information technology company", ) computed_relations = computed.extract_all_relations(mention_x1, mention_y1) ref_dict_relations = ref_dict.extract_all_relations(mention_x1, mention_y1) vo_relations = vo.extract_all_relations(mention_x1, mention_y1) wiki_relations = wiki.extract_all_relations(mention_x1, mention_y1) embed_relations = embed.extract_all_relations(mention_x1, mention_y1) wn_relaions = wn.extract_all_relations(mention_x1, mention_y1) if RelationType.NO_RELATION_FOUND in computed_relations: logger.info("No Computed relation found") else: logger.info("Found Computed relations-%s", str(list(computed_relations))) if RelationType.NO_RELATION_FOUND in ref_dict_relations: logger.info("No Referent-Dict relation found") else: logger.info("Found Referent-Dict relations-%s", str(list(ref_dict_relations))) if RelationType.NO_RELATION_FOUND in vo_relations: logger.info("No Verb-Ocean relation found") else: logger.info("Found Verb-Ocean relations-%s", str(list(vo_relations))) if RelationType.NO_RELATION_FOUND in wiki_relations: logger.info("No Wikipedia relation found") else: logger.info("Found Wikipedia relations-%s", str(wiki_relations)) if RelationType.NO_RELATION_FOUND in embed_relations: logger.info("No Embedded relation found") else: logger.info("Found Embedded relations-%s", str(list(embed_relations))) if RelationType.NO_RELATION_FOUND in wn_relaions: logger.info("No Wordnet relation found") else: logger.info("Found Wordnet relations-%s", str(wn_relaions))
def run_example(): logger.info('Running relation extraction example......') computed = ComputedRelationExtraction() ref_dict = ReferentDictRelationExtraction(OnlineOROfflineMethod.ONLINE, LIBRARY_ROOT + '/datasets/ref.dict1.tsv') vo = VerboceanRelationExtraction(OnlineOROfflineMethod.ONLINE, LIBRARY_ROOT + '/datasets/verbocean.unrefined.2004-05-20.txt') wiki = WikipediaRelationExtraction(WikipediaSearchMethod.ONLINE) wn = WordnetRelationExtraction(OnlineOROfflineMethod.ONLINE) mention_x1 = MentionDataLight( 'IBM', mention_context='IBM manufactures and markets computer hardware, middleware and software') mention_y1 = MentionDataLight( 'International Business Machines', mention_context='International Business Machines Corporation is an ' 'American multinational information technology company') computed_relations = computed.extract_all_relations(mention_x1, mention_y1) ref_dict_relations = ref_dict.extract_all_relations(mention_x1, mention_y1) vo_relations = vo.extract_all_relations(mention_x1, mention_y1) wiki_relations = wiki.extract_sub_relations(mention_x1, mention_y1, RelationType.WIKIPEDIA_REDIRECT_LINK) embed = WordEmbeddingRelationExtraction( EmbeddingMethod.ELMO) embed_relations = embed.extract_all_relations(mention_x1, mention_y1) wn_relaions = wn.extract_sub_relations(mention_x1, mention_y1, RelationType.WORDNET_DERIVATIONALLY) if RelationType.NO_RELATION_FOUND in computed_relations: logger.info('No Computed relation found') else: logger.info('Found Computed relations-%s', str(list(computed_relations))) if RelationType.NO_RELATION_FOUND in ref_dict_relations: logger.info('No Referent-Dict relation found') else: logger.info('Found Referent-Dict relations-%s', str(list(ref_dict_relations))) if RelationType.NO_RELATION_FOUND in vo_relations: logger.info('No Verb-Ocean relation found') else: logger.info('Found Verb-Ocean relations-%s', str(list(vo_relations))) if RelationType.NO_RELATION_FOUND in wiki_relations: logger.info('No Wikipedia relation found') else: logger.info('Found Wikipedia relations-%s', str(list(wiki_relations))) if RelationType.NO_RELATION_FOUND in embed_relations: logger.info('No Embedded relation found') else: logger.info('Found Embedded relations-%s', str(list(embed_relations))) if RelationType.NO_RELATION_FOUND in wn_relaions: logger.info('No Wordnet relation found') else: logger.info('Found Wordnet relations-%s', str(list(wn_relaions)))