fix _merge_yi crash

This commit is contained in:
wangzeyuan 2025-06-05 17:57:39 +08:00
parent dbf7702b54
commit 62431b1eae

View File

@ -650,8 +650,10 @@ class ToneSandhi:
# output seg: [['听一听', 'v']]
def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
new_seg = []
i = 0
# function 1
for i, (word, pos) in enumerate(seg):
while i < len(seg):
word, pos = seg[i]
if (
i - 1 >= 0
and word == ""
@ -660,22 +662,16 @@ class ToneSandhi:
and seg[i - 1][1] == "v"
and seg[i + 1][1] == "v"
):
new_seg[i - 1][0] = new_seg[i - 1][0] + "" + new_seg[i - 1][0]
merged = seg[i - 1][0] + "" + seg[i + 1][0]
new_seg[-1] = [merged, seg[i - 1][1]]
i += 2
else:
if (
i - 2 >= 0
and seg[i - 1][0] == ""
and seg[i - 2][0] == word
and pos == "v"
and seg[i - 2][1] == "v"
):
continue
else:
new_seg.append([word, pos])
new_seg.append([word, pos])
i += 1
seg = new_seg
new_seg = []
# function 2
for i, (word, pos) in enumerate(seg):
for word, pos in seg:
if new_seg and new_seg[-1][0] == "":
new_seg[-1][0] = new_seg[-1][0] + word
else: