Exemplo n.º 1
0
def evaluate_extraction(input_file, output_file):
    logger = logging.getLogger()
    parser_server = 'http://localhost:8084'
    count = 0

    f_in = codecs.open(input_file, encoding='utf-8')
    f_out = open(output_file, 'w')
    writer = unicodecsv.writer(f_out)
    for line in f_in:
        line = line.strip()
        if line:
            logger.debug(line)
            try:
                extractor = RelationExtractor(line, parser_server, logger, entity_linking_flag=False)
            except:
                logger.error(u'Failed to parse the sentence', exc_info=True)
            else:
                count += 1
                extractor.extract_spo()
                for relation in extractor.relations:
                    logger.debug(relation.lemma)
                    row = [''] * 5
                    row[0], row[1] = count, line
                    row[2:5] = relation.lemma
                    writer.writerow(row)
    f_in.close()
    f_out.close()
Exemplo n.º 2
0
def process_file(filename, parser_server):
    logger = logging.getLogger('single_relation_extraction')

    parser = SafeConfigParser()
    parser.read('config/mysql_config.ini')
    mysql_config = {
        'host': parser.get('MySQL', 'host'),
        'user': parser.get('MySQL', 'user'),
        'passwd': parser.get('MySQL', 'passwd'),
        'db': 'bio-kb'
    }

    db = MySQLdb.connect(**mysql_config)
    cur = db.cursor()

    f_in = codecs.open(filename, encoding='utf-8')
    for line in f_in:
        sent = line.strip()
        if sent:
            logger.info(u'{}: {}'.format(filename, sent))
            try:
                extractor = RelationExtractor(sent, parser_server, logger)
            except:
                logger.error(u'Failed to extract relations.', exc_info=True)
            else:
                extractor.extract_spo()
                for relation in extractor.relations:
                    logger.info(u'RELATION: {}'.format(relation))
                    try:
                        cur.execute(insert_relation_sql(sent, relation))
                        db.commit()
                    except MySQLdb.Error, e:
                        try:
                            logger.error(u'MySQL Error [{}]: {}'.format(e.args[0], e.args[1]),
                                         exc_info=True)
                        except IndexError:
                            logger.error(u'MySQL Error: {}'.format(str(e)), exc_info=True)