Closed adap8709 closed 1 year ago
함수는 다음과 같습니다.
def make_trigram(content):
word_position = []
word_index = 0
for char in content:
word_position.append(word_index)
if char == " ":
word_index += 1
# 비속어 위치 찾기
badwords = []
for pattern in patternList:
matchObjs = re.finditer(pattern, content)
badwords += [word_position[obj.span()[0]] for obj in matchObjs] # 해당 단어가 속한 어절의 위치
content = [" "] + content.split(" ") + [" "] # 맨 앞, 맨 뒤 padding
badwords = list(set(badwords))
return [(content[index], content[index+1], content[index+2], index) for index in badwords]
해결했습니다. 정규 표현식으로 compile한 pattern에 문제가 있었습니다.
잘 작동했었는데 갑작스럽게 IndexError가 생겼습니다. 문법이 잘못된 걸까요?
Cell In [18], line 26, in make_trigram(content) 24 for pattern in patternList: 25 matchObjs = re.finditer(pattern, content) ---> 26 badwords += [word_position[obj.span()[0]] for obj in matchObjs] # 해당 단어가 속한 어절의 위치 28 content = [" "] + content.split(" ") + [" "] # 맨 앞, 맨 뒤 padding 29 badwords = list(set(badwords))
IndexError: list index out of range