code: def _read_reach_rule_regexps():
      
      reach_rule_filename = \
          os.path.join(os.path.dirname(os.path.abspath(__file__)),
                       'reach_rule_regexps.txt')
      with open(reach_rule_filename, 'r') as f:
          reach_rule_regexp = []
          for line in f:
              reach_rule_regexp.append(line.rstrip())
      return reach_rule_regexp
docs: Load in a file with the regular expressions corresponding to each
      reach rule. Why regular expression matching?
      The rule name in found_by has instances of some reach rules for each
      possible event type
      (activation, binding, etc). This makes for too many different types of
      rules for practical curation of examples.
      We use regular expressions to only match the rule used for extraction,
      independently of what the event is.