Repository: yagays/ja-timex (language: python)

Issue:
[Bug] "毎年6月"が"年6月"と判定される
# 🐛 Bug
## 説明
"毎年6月"が"年6月"と判定される

## 現状挙動

```
In []: timex_parser.parse("毎年6月")
Out[]: [<TIMEX3 tid="t0" type="SET" value="P1Y" freq="P6M" text="年6月">]
```

## 理想の挙動
`毎年`と`6月`で読み取られる

## 再現方法やエラー内容
"毎年6月"を解析する

## 実行環境
- **ja-timexのバージョン** :0.1.3
- **Pythonのバージョン** : 3.8.3
- **OSの情報**:  macOS Big Sur 11.3

## 追加/補足情報
<!-- 補足説明があれば記載してください -->


Discussion / hints:

Fix patch:
diff --git a/ja_timex/pattern/set.py b/ja_timex/pattern/set.py
index 41f7e87..80e633f 100644
--- a/ja_timex/pattern/set.py
+++ b/ja_timex/pattern/set.py
@@ -256,7 +256,7 @@ def parse_quant(re_match: re.Match, pattern: Pattern) -> TIMEX:
 # # 「年1回」「週1日」とは言うが、「2年1回」や「3週1日」とは言わない
 patterns += [
     Pattern(
-        re_pattern=f"年に?{p.count}[ヶ|か|カ|ケ|箇]?月",
+        re_pattern=f"年に?{p.count}[ヶ|か|カ|ケ|箇]月",
         parse_func=parse_count_range,
         option={"value_template": "P{}Y", "freq_template": "P{}M"},
     ),


Test patch:
diff --git a/tests/test_set_tagger.py b/tests/test_set_tagger.py
index e01ba0d..faa797c 100644
--- a/tests/test_set_tagger.py
+++ b/tests/test_set_tagger.py
@@ -19,6 +19,11 @@ def test_count(t):
     assert t.parse("年に1時間").value == "P1Y"
     assert t.parse("年に1時間").freq == "PT1H"
 
+    # 年に1月は取得するが年1月は取得しない
+    # 毎年1月といった表現で誤検出するため
+    assert t.parse("年に1月").value == "P1Y"
+    assert t.parse("年1月") is None
+
 
 def test_count_without_number_and_ni(t):
     # 年次有給休暇の時季指定義務 https://www.mhlw.go.jp/content/000350327.pdf
diff --git a/tests/test_timex.py b/tests/test_timex.py
index b4518cb..279e3c2 100644
--- a/tests/test_timex.py
+++ b/tests/test_timex.py
@@ -50,3 +50,15 @@ def test_ignore_number_normalize(p):
     assert len(timexes) == 2
     assert timexes[0].value == "P3D"
     assert timexes[1].value == "P3D"
+
+
+def test_every_year_and_month(p):
+    timexes = p.parse("毎年6月から8月にかけて")
+
+    assert len(timexes) == 3
+    assert timexes[0].value == "P1Y"
+    assert timexes[0].type == "SET"
+    assert timexes[1].value == "XXXX-06-XX"
+    assert timexes[1].type == "DATE"
+    assert timexes[2].value == "XXXX-08-XX"
+    assert timexes[2].type == "DATE"