티스토리 뷰
프로젝트를 진행하면서 해본 실험들에 대해서 정리해보려 한다.
이번 포스트는 텍스트 전처리 및 정제의 첫 번째 실험 파트인 띄어쓰기 교정이다.
이번 프로젝트를 진행하면서 'Garbage in, garbage out' 이라는 말이 괜히 있는게 아니란걸 뼈저리게 느끼고 있다.. ㅋㅋ
데이터를 전부 수집한 후 첫 베이스라인 코드로 Bi-LSTM을 사용하여 학습시켰고, 테스트 셋 평가 성능은 처참했다
(raw 데이터는 불균형이 심했기에 F1 score로 평가했고, 0.5도 나오지 않는 성능이었다)
예상은 했지만 이 정도로 안좋을거라곤 생각을 안했기에 빠르게 실험할 목록과 성능을 높일 수 있는 방법을 고민했고, 가장 먼저 필요한 것은 대화체 혹은 인터넷 은어들이 가득한 댓글을 정제하는 것이었다.
그래서 가장 먼저 적용시킨 것이 띄어쓰기 교정이다.
많은 분들이 개인적으로 공부할 때, 혹은 프로젝트를 진행할 때 가장 먼저 접하는 것은 역시 'soyspace'가 아닐까 싶다.
나도 나름 텍스트에 대한 공부를 오래(하지만 적게..^^) 해왔지만 soyspace외에 띄어쓰기를 교정할 수 있는 라이브러리나 기법이 있다는 것을 이번에 처음 알게 되었다.
역시나 가장 먼저 'soyspace'를 사용하였고, 대화체라는 특징 때문에 학습을 시킬 적합한 데이터가 없었다. 어떤 데이터를 가져와서 학습을 시키더라도 제대로 띄어쓰기가 이루어지지 않았다.
그래서 찾아보던 중 '대화체에 유연한 띄어쓰기 모델 만들기'라는 블로그 글을 보았다.
(핑퐁블로그...좋은 정보들이 너무 많은 블로그이다! 특히 자연어 관련)
아래의 블로그를 참고하여, 띄어쓰기 모델을 적용시켜보았다.
모델에 대한 자세한 내용과 어떻게 이런 모델을 만들게 되었고, 어떤식으로 만들었는지는 블로그를 통해 확인하길 바라며, 스포일러 분류기 프로젝트에 어떻게 활용했는지 간단하게 짚고 넘어가도록 하겠다.
(코랩 기준의 코드입니다.)
!pip install chatspace
친절하게도....pip install로 설치가 가능하다. chatspace 라이브러리를 설치해준다.
from chatspace import ChatSpace
space_model = ChatSpace()
설치한 chatspace를 import 해주고, 인스턴스를 정의해준다. 정말 간단하다. 감동적이다.
for i in tqdm(range(len(train))):
train['리뷰'][i] = space_model.space(train['리뷰'][i])
이 코드는 train 전체 데이터를 교정해주기 위한 코드이다. chatspace가 어떻게 띄어쓰기를 교정해주는지 테스트한 내용을 확인해보자.
진짜 완벽한 성능이라고 생각한다... ㅋㅋㅋ 이렇게 간단한 코드와 따로 학습시켜야하는 번거로움 없이 이런 성능을 보이는 띄어쓰기 교정 모델이 있을까 싶다 ㅎ
어찌됐든 ... 댓글 텍스트를 사용하는 우리 프로젝트에 굉장히 도움이 많이 되는 교정 모델이었고, 실제로 띄어쓰기 교정을 통해 성능도 높아짐을 확인했다.
아직 전처리할게 산더미지만 이런 좋은 성능을 내는 모델을 찾아서 다행이고, 만들어주신 분들께 정말 감사하다고 말씀드리고 싶다...:)
'ACTIVITY STORY > BOAZ' 카테고리의 다른 글
[ADV 프로젝트] 텍스트 불균형 해소 Part2. EDA (Easy Data Augmentation) (0) | 2021.02.14 |
---|---|
[ADV 프로젝트] 텍스트 불균형 해소 Part1. Text Augmentation (번역 후 재번역, Back Translation) (0) | 2020.12.12 |
[ADV 프로젝트] 텍스트 전처리 Part2. 맞춤법 교정 (부산대 맞춤법 교정기, py-hanspell) (5) | 2020.11.25 |
[ADV 프로젝트] 스포일러 댓글 분류기 SpoilerNet by BOAZ (5) | 2020.11.04 |
[미니 프로젝트] BERT를 이용한 진보/보수 언론사 기사 성향 분류 (3) | 2020.08.04 |