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"
함수를 사용하여 칼럼을 새로 만들면 키워드들을 엑셀에서 필터링하여 확인할 수 있다.
이렇게 해서 라벨링 한다면 처음부터 끝까지 보는 것 보다 훨씬더 수월하고 빠르게 라벨링 할 수 있을 것이다.
반응형
'Machine learning > NLP' 카테고리의 다른 글
[NLP] Fine-tuning(파인튜닝)과 in-context learning(인컨텍스트 러닝) (0) | 2021.12.14 |
---|---|
[annotation]. 텍스트 데이터 라벨링 꿀팁(2) (0) | 2021.11.12 |
[NLP]. 한국어 맞춤법 검사기 사용하기 (feat. hanspell ) (0) | 2021.10.27 |
[전처리]. 핸드폰 번호 , 계좌번호 , 주소 필터링(Python 정규표현식) (0) | 2021.10.14 |
[전처리]. 한국어 존댓말과 반말을 구별하는 방법(feat. komoran) (0) | 2021.10.14 |