diff --git a/itn/chinese/data/number/repeat_digit.tsv b/itn/chinese/data/number/repeat_digit.tsv new file mode 100644 index 00000000..f09e10ee --- /dev/null +++ b/itn/chinese/data/number/repeat_digit.tsv @@ -0,0 +1,322 @@ +七个一 1111111 +七个七 7777777 +七个三 3333333 +七个两 2222222 +七个九 9999999 +七个二 2222222 +七个五 5555555 +七个伍 5555555 +七个八 8888888 +七个六 6666666 +七个叁 3333333 +七个四 4444444 +七个壹 1111111 +七个幺 1111111 +七个拐 7777777 +七个捌 8888888 +七个柒 7777777 +七个洞 0000000 +七个玖 9999999 +七个肆 4444444 +七个贰 2222222 +七个陆 6666666 +七个零 0000000 +三个一 111 +三个七 777 +三个三 333 +三个两 222 +三个九 999 +三个二 222 +三个五 555 +三个伍 555 +三个八 888 +三个六 666 +三个叁 333 +三个四 444 +三个壹 111 +三个幺 111 +三个拐 777 +三个捌 888 +三个柒 777 +三个洞 000 +三个玖 999 +三个肆 444 +三个贰 222 +三个陆 666 +三个零 000 +九个一 111111111 +九个七 777777777 +九个三 333333333 +九个两 222222222 +九个九 999999999 +九个二 222222222 +九个五 555555555 +九个伍 555555555 +九个八 888888888 +九个六 666666666 +九个叁 333333333 +九个四 444444444 +九个壹 111111111 +九个幺 111111111 +九个拐 777777777 +九个捌 888888888 +九个柒 777777777 +九个洞 000000000 +九个玖 999999999 +九个肆 444444444 +九个贰 222222222 +九个陆 666666666 +九个零 000000000 +五个一 11111 +五个七 77777 +五个三 33333 +五个两 22222 +五个九 99999 +五个二 22222 +五个五 55555 +五个伍 55555 +五个八 88888 +五个六 66666 +五个叁 33333 +五个四 44444 +五个壹 11111 +五个幺 11111 +五个拐 77777 +五个捌 88888 +五个柒 77777 +五个洞 00000 +五个玖 99999 +五个肆 44444 +五个贰 22222 +五个陆 66666 +五个零 00000 +伍个一 11111 +伍个七 77777 +伍个三 33333 +伍个两 22222 +伍个九 99999 +伍个二 22222 +伍个五 55555 +伍个伍 55555 +伍个八 88888 +伍个六 66666 +伍个叁 33333 +伍个四 44444 +伍个壹 11111 +伍个幺 11111 +伍个拐 77777 +伍个捌 88888 +伍个柒 77777 +伍个洞 00000 +伍个玖 99999 +伍个肆 44444 +伍个贰 22222 +伍个陆 66666 +伍个零 00000 +八个一 11111111 +八个七 77777777 +八个三 33333333 +八个两 22222222 +八个九 99999999 +八个二 22222222 +八个五 55555555 +八个伍 55555555 +八个八 88888888 +八个六 66666666 +八个叁 33333333 +八个四 44444444 +八个壹 11111111 +八个幺 11111111 +八个拐 77777777 +八个捌 88888888 +八个柒 77777777 +八个洞 00000000 +八个玖 99999999 +八个肆 44444444 +八个贰 22222222 +八个陆 66666666 +八个零 00000000 +六个一 111111 +六个七 777777 +六个三 333333 +六个两 222222 +六个九 999999 +六个二 222222 +六个五 555555 +六个伍 555555 +六个八 888888 +六个六 666666 +六个叁 333333 +六个四 444444 +六个壹 111111 +六个幺 111111 +六个拐 777777 +六个捌 888888 +六个柒 777777 +六个洞 000000 +六个玖 999999 +六个肆 444444 +六个贰 222222 +六个陆 666666 +六个零 000000 +叁个一 111 +叁个七 777 +叁个三 333 +叁个两 222 +叁个九 999 +叁个二 222 +叁个五 555 +叁个伍 555 +叁个八 888 +叁个六 666 +叁个叁 333 +叁个四 444 +叁个壹 111 +叁个幺 111 +叁个拐 777 +叁个捌 888 +叁个柒 777 +叁个洞 000 +叁个玖 999 +叁个肆 444 +叁个贰 222 +叁个陆 666 +叁个零 000 +四个一 1111 +四个七 7777 +四个三 3333 +四个两 2222 +四个九 9999 +四个二 2222 +四个五 5555 +四个伍 5555 +四个八 8888 +四个六 6666 +四个叁 3333 +四个四 4444 +四个壹 1111 +四个幺 1111 +四个拐 7777 +四个捌 8888 +四个柒 7777 +四个洞 0000 +四个玖 9999 +四个肆 4444 +四个贰 2222 +四个陆 6666 +四个零 0000 +捌个一 11111111 +捌个七 77777777 +捌个三 33333333 +捌个两 22222222 +捌个九 99999999 +捌个二 22222222 +捌个五 55555555 +捌个伍 55555555 +捌个八 88888888 +捌个六 66666666 +捌个叁 33333333 +捌个四 44444444 +捌个壹 11111111 +捌个幺 11111111 +捌个拐 77777777 +捌个捌 88888888 +捌个柒 77777777 +捌个洞 00000000 +捌个玖 99999999 +捌个肆 44444444 +捌个贰 22222222 +捌个陆 66666666 +捌个零 00000000 +柒个一 1111111 +柒个七 7777777 +柒个三 3333333 +柒个两 2222222 +柒个九 9999999 +柒个二 2222222 +柒个五 5555555 +柒个伍 5555555 +柒个八 8888888 +柒个六 6666666 +柒个叁 3333333 +柒个四 4444444 +柒个壹 1111111 +柒个幺 1111111 +柒个拐 7777777 +柒个捌 8888888 +柒个柒 7777777 +柒个洞 0000000 +柒个玖 9999999 +柒个肆 4444444 +柒个贰 2222222 +柒个陆 6666666 +柒个零 0000000 +玖个一 111111111 +玖个七 777777777 +玖个三 333333333 +玖个两 222222222 +玖个九 999999999 +玖个二 222222222 +玖个五 555555555 +玖个伍 555555555 +玖个八 888888888 +玖个六 666666666 +玖个叁 333333333 +玖个四 444444444 +玖个壹 111111111 +玖个幺 111111111 +玖个拐 777777777 +玖个捌 888888888 +玖个柒 777777777 +玖个洞 000000000 +玖个玖 999999999 +玖个肆 444444444 +玖个贰 222222222 +玖个陆 666666666 +玖个零 000000000 +肆个一 1111 +肆个七 7777 +肆个三 3333 +肆个两 2222 +肆个九 9999 +肆个二 2222 +肆个五 5555 +肆个伍 5555 +肆个八 8888 +肆个六 6666 +肆个叁 3333 +肆个四 4444 +肆个壹 1111 +肆个幺 1111 +肆个拐 7777 +肆个捌 8888 +肆个柒 7777 +肆个洞 0000 +肆个玖 9999 +肆个肆 4444 +肆个贰 2222 +肆个陆 6666 +肆个零 0000 +陆个一 111111 +陆个七 777777 +陆个三 333333 +陆个两 222222 +陆个九 999999 +陆个二 222222 +陆个五 555555 +陆个伍 555555 +陆个八 888888 +陆个六 666666 +陆个叁 333333 +陆个四 444444 +陆个壹 111111 +陆个幺 111111 +陆个拐 777777 +陆个捌 888888 +陆个柒 777777 +陆个洞 000000 +陆个玖 999999 +陆个肆 444444 +陆个贰 222222 +陆个陆 666666 +陆个零 000000 diff --git a/itn/chinese/rules/cardinal.py b/itn/chinese/rules/cardinal.py index 4893cfa1..8e7399eb 100644 --- a/itn/chinese/rules/cardinal.py +++ b/itn/chinese/rules/cardinal.py @@ -149,6 +149,10 @@ def build_tagger(self): self.number_exclude_0_to_9 = (sign.ques + number_exclude_0_to_9).optimize() # 3. 特殊格式的数字 + # "N个X" repeat pattern for digit sequences, e.g. 四个八 => 8888 + repeat_digit = string_file(get_abs_path("../itn/chinese/data/number/repeat_digit.tsv")) + digit_token = digits | repeat_digit + # cardinal string like 127.0.0.1, used in ID, IP, etc. cardinal = digits.plus + (dot + digits.plus).plus # float number like 1.11 @@ -157,6 +161,9 @@ def build_tagger(self): # 340621199806051223, used in ID card idcard_last_char = digits | "X" | "x" cardinal |= digits**3 | digits**4 | digits**5 | digits**11 | (digits**17 + idcard_last_char) | digits**18 + # digit sequences with "N个X" repeat, e.g. 幺三八四个八 => 1388888 + # requires at least one normal digit before repeat_digit + cardinal |= digits.plus + repeat_digit + digits.star # 4. 特殊格式的数字 + 标准数字 # cardinal string like 23