Machine learning/NLP
[annotation]. 텍스트 데이터 라벨링 꿀팁(1)
Acdong
2021. 11. 12. 11:27
728x90
어노테이션은 머신러닝개발자에게는 숙명과도 같은 일이다.
가장 단순하지만 가장 중요한 작업
하지만 너무나도 지루한 건 사실이지만 정신줄을 놓으면 안된다.
그래서 텍스트 데이터를 라벨링할때
항상 효과적인 방법을 머리속으로 생각했다. (지루하니까 최대한 정확하고 빨리하는 방법 )
나는 공격적인 단어를 필터링하는 검수작업을 맡게 되었는데.
먼저 키위드를 수집했다.
키워드 수집
키워드는 기존 딥러닝 모델의 예측 결과로 나온 것들 중 경계선에 있는 데이터들을 통해 수집했다.
이걸 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"
함수를 사용하여 칼럼을 새로 만들면 키워드들을 엑셀에서 필터링하여 확인할 수 있다.
이렇게 해서 라벨링 한다면 처음부터 끝까지 보는 것 보다 훨씬더 수월하고 빠르게 라벨링 할 수 있을 것이다.
반응형