fix _merge_yi crash (#2432)

* fix _merge_yi crash

* fix _merge_yi crash

---------

Co-authored-by: wangzeyuan <wangzeyuan@agora.io>
main
wzy3650 2 months ago committed by GitHub
parent d8124612fe
commit ab53062bdd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -650,32 +650,29 @@ 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]
merged = False
if (
i - 1 >= 0
and word == ""
and i + 1 < len(seg)
and seg[i - 1][0] == seg[i + 1][0]
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]
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])
last = new_seg[-1] if new_seg else seg[i - 1]
if last[0] == seg[i + 1][0] and last[1] == "v" and seg[i + 1][1] == "v":
combined = last[0] + "" + seg[i + 1][0]
new_seg[-1] = [combined, last[1]]
i += 2
merged = True
if not merged:
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:

Loading…
Cancel
Save