iepy_rules_runner.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """
  2. Run IEPY rule-based extractor
  3. Usage:
  4. iepy_rules_runner.py
  5. iepy_rules_runner.py -h | --help | --version
  6. Picks from rules.py the relation to work with, and the rules definitions and
  7. proceeds with the extraction.
  8. Options:
  9. -h --help Show this screen
  10. --version Version number
  11. """
  12. import sys
  13. import logging
  14. from django.core.exceptions import ObjectDoesNotExist
  15. import iepy
  16. iepy.setup(__file__)
  17. from iepy.extraction.rules import load_rules
  18. from iepy.extraction.rules_core import RuleBasedCore
  19. from iepy.data import models, output
  20. from iepy.data.db import CandidateEvidenceManager
  21. def run_from_command_line():
  22. logging.basicConfig(level=logging.INFO, format='%(message)s')
  23. try:
  24. relation_name = iepy.instance.rules.RELATION
  25. except AttributeError:
  26. logging.error("RELATION not defined in rules file")
  27. sys.exit(1)
  28. try:
  29. relation = models.Relation.objects.get(name=relation_name)
  30. except ObjectDoesNotExist:
  31. logging.error("Relation {!r} not found".format(relation_name))
  32. sys.exit(1)
  33. # Load rules
  34. rules = load_rules()
  35. # Load evidences
  36. evidences = CandidateEvidenceManager.candidates_for_relation(relation)
  37. # Run the pipeline
  38. iextractor = RuleBasedCore(relation, rules)
  39. iextractor.start()
  40. iextractor.process()
  41. predictions = iextractor.predict(evidences)
  42. output.dump_output_loop(predictions)
  43. if __name__ == u'__main__':
  44. run_from_command_line()