Machine learning/NLP

[annotation]. 텍스트 데이터 라벨링 꿀팁(1)

Acdong 2021. 11. 12. 11:27
728x90

어노테이션은 머신러닝개발자에게는 숙명과도 같은 일이다.

가장 단순하지만 가장 중요한 작업

하지만 너무나도 지루한 건 사실이지만 정신줄을 놓으면 안된다.

 

그래서 텍스트 데이터를 라벨링할때

항상 효과적인 방법을 머리속으로 생각했다. (지루하니까 최대한 정확하고 빨리하는 방법 )

 

나는 공격적인 단어를 필터링하는 검수작업을 맡게 되었는데.

먼저 키위드를 수집했다.

 


키워드 수집

키워드는 기존 딥러닝 모델의 예측 결과로 나온 것들 중 경계선에 있는 데이터들을 통해 수집했다.

이걸 Active Learning 이라고 한다.

 

active Learning

위에서 경계선이 있는 데이터들은 즉 , 모델이 해깔려하는 데이터를 사용했다는 것이다.

경계선 라벨링 -> 데이터 추가  -> 학습 -> 예측 -> 경계선 라벨링 

 

여기서 경계선 라벨링은 하지않고 경계선을 통해서 모델이 애매하게 판단한 키워드들을 수집한다.

 : 모델 예측이 50%를 웃도는 데이터들을 1만개 추출하여 키워드 수집

 

현재 필터링이 가능한 키워드들은 제외하고 수집된다.( 씨X , 병X ...등은 이미 모델이 알고있기 때문에 확률이 90% 이상임)

 

수집한 키워드 예시) 

개 같 , 개 고생 , 개 많 , 개 좋 , 개무시 , 개나 줘 , 개뿔 , 노답 , 뒈지 , 뒤지 등등

 

그래서 이런 키워드들을 포함하고 있는 지를 판단하기 위해 코드를 작성했다.

def include_words(input_text,words_list):
    result = []
    temp = [input_text.find(x) for x in words_list]
    word_idx = [i for i, value in enumerate(temp) if value != -1]
    
    for idx in word_idx:
        result.append(words_list[idx])
        
    if result:
        return " ".join(result)
    else:
        return "not exist"

함수를 사용하여 칼럼을 새로 만들면 키워드들을 엑셀에서 필터링하여 확인할 수 있다.

 

이렇게 해서 라벨링 한다면 처음부터 끝까지 보는 것 보다 훨씬더 수월하고 빠르게 라벨링 할 수 있을 것이다.

반응형