clulab / processors

Natural Language Processors
https://clulab.github.io/processors/
Apache License 2.0
418 stars 101 forks source link

Date rule doesn't match well with action #776

Open kwalcock opened 8 months ago

kwalcock commented 8 months ago

The rule

- name: date-range-10
  priority: ${rulepriority}
  label: DateRange
  type: token
  example: "First two weeks of May"
  action: mkDateRangeMentionWithWeek
  pattern: |
    (?<week> /(?i)(first|second|last)/ /(?i)two/ /(?i)weeks/) /(?i)of/ @month:PossibleMonth

gets processed by

  private def getWeekRange(weekNormalizer: WeekNormalizer)(argName: String, m:Mention): Option[WeekRange] = {
    val wordsOpt = getArgWords(argName, m)

    if (wordsOpt.isEmpty) None
    else if (wordsOpt.get.mkString(" ").toLowerCase().equals("last week")) {getLastWeekRange(m)}
    else if (wordsOpt.get.mkString(" ").toLowerCase().equals("last two weeks")) {getLastTwoWeeksRange(m)}
    else weekNormalizer.norm(wordsOpt.get)
  }

and doesn't take the possibility of "last weeks [of June]" into account. An internal exception is eventually thrown and also swallowed. weekNormalizer.norm doesn't take care of it, either, because WeekNormalizer.normMapper doesn't have third weeks.

The code should account for any match of the rule and vice versa.

MihaiSurdeanu commented 8 months ago

Thanks @kwalcock ! I will handle this.

kwalcock commented 8 months ago

The text seems to come from this conversation, which is surprisingly even grammatical. Perhaps third can be added as well.

And that's a good point. I think I missed sorghum planting. When are you guys trying to get that in \n\nRight <laugh>? Um, it looks like between the second and third weeks of June.

MihaiSurdeanu commented 8 months ago

Addressed in PR #777