wan500kim / kickWorks

2022 산학 프로젝트 bananakick
MIT License
0 stars 0 forks source link

bug: Trigram화 중 인덱스 에러 #43

Closed adap8709 closed 1 year ago

adap8709 commented 1 year ago

잘 작동했었는데 갑작스럽게 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

adap8709 commented 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]
adap8709 commented 1 year ago

해결했습니다. 정규 표현식으로 compile한 pattern에 문제가 있었습니다.