클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

텍스트 마이닝 1 - 텍스트 마이닝의 개념과 분석할 자료 가져오기(한국어 혐호 표현 데이터) 본문

인공지능/머신러닝

텍스트 마이닝 1 - 텍스트 마이닝의 개념과 분석할 자료 가져오기(한국어 혐호 표현 데이터)

huenuri 2024. 9. 19. 12:26

머신러닝에서 이 단원만 학습하면 이제 끝이 날 것 같다. 오늘과 내일 이틀에 걸쳐 머신러닝을 모두 마치고 주말에는 딥러닝을 공부해볼 예정이다.

이제 거의 끝이 보이는 것 같아 무척 만족스럽다. 처음 이 공부를 시작했을 때 얼마나 두렵고 걱정이 되었는지 모른다. 하지만 파이썬을 공부해놓으니 데이터 분석도 머신러닝도 모두 할만해졌다. 이 모든 것은 그동안 포기하지 않고 공부한 결과이다. 6월부터 난 나름 목표를 정해 단계와 분야로 개발 공부에 집중했다. 아마도 7월에 공부했던 정보처리기사 필기와 데터베이스도 지금의 공부에 많은 도움이 되었다.

 

이제 텍스트 마이닝 공부를 본격적으로 시작해보자. 아직 쉬는 시간을 갖지 못했지만 조금만 하고 쉬어볼 것이다.


 

 

 

텍스트 마이닝의 개념

 

텍스트 마이닝은 글자와 캐다라는 의미를 갖고 있다. 텍스트에서 의미를 추출하는 과정을 말한다. 텍스트 데이터는 비정형 데이터인데 형태가 정해져 있지 않은 것이다. 이전에 학습했던 직원 이직률은 정형 데이터에 속한다. 어느 정도 데이터가 규격화 되어 있다. 가장 대표적인 비정형 데이터는 텍스트 데이터이다.

뉴스나 댓글을 생각하면 된다. 이런 것을 보면 글이 짧기도 하고 길기도 하며, 단어의 종류도 다양하다. 

 

텍스트 마이닝은 인공지능 분야에서도 각광을 받고 있다. 그 이유는 실용성이 높기 때문이다. 사용자 맞춤형 추천을 할 때 고객의 마음에 맞는 추천을 하려면 텍스트 마이닝을 적용하는 편이다. 단순하게 정형화된 데이터를 추천하면 자신을 위한 추천이라고 볼 수 없다. 개인 맞춤형 추천이 되려면 그 사람에 대한 개인 정보를 더 많이 알고 있어야 한다. 이럴 때 자신이 쓰는 글을 통해 알아낼 수 있다.

SNS에 쓴 글을 보면 그 사람이 어떤 생각과 감정을 갖고 있는지 파악이 가능하다. 이렇게 개인 한 명에게 맞춰진 정보를 추천하는 방식이 텍스트 마이닝이다. 고객을 상대하는 곳에서는 여기에 관심을 갖게 되어 있다. 고객을 분석하려면 그들이 쓴 리뷰를 통해 보게 된다.


 

분석의 목적을 정하고 텍스트를 수집한다. 전처리에서는 cleansing 작업이 필요하다. 오타나 띄어쓰기 같은 것들을 교정한다. 이모지를 제거하거나 분석에 활용하도록 바꾸어준다. 이와 함께 형태소 분석을 한다. 문장의 품사를 분류하고 쓸 것인지 아닌지 분석하는 것이다.

토큰화는 잘게 잘게 쪼개는 작업이다. 문장을 잘게 쪼개서 개별적으로 분리한다. 학습을 하기 위해 필요한 숫자형 등으로 바꾸는 작업을 하는데 이를 특징 추출이라고 한다. 텍스트 마이닝에서는 전처리에서 특징 추출까지가 머신러닝과 조금 다르고 나머지 부분은 비슷하다.


 

 

 

 

 

스마일 게이트라는 게임 회사에서 AI 팀이 있는데 unsmile이라는 데이터셋을 공개하고 발표도 한다. 요즘에는 가상인간을 만드는 일을 많이 하는 편이다.

게임을 할 때 욕설은 걸러내지만 그 사람을 비하하고 혐오하는 표현을 쓰는 경우에는 걸러내기가 어렵다. 이것을 학습해서 인공지능이 걸러낼 수 있게 만든 것이 unsmile 데이터셋이다. 예를 들어, 댓글에서 "틀리 끼고 싶냐?"라는 말을 썼을 때 문장 자체에서는 비하가 없지만 문맥상 비하의 의도가 있다.

 

총 10가지의 종류로 되어 있다. clean은 욕설을 하지 않는 부류일 것이다.


 

 

 

한국어 혐오 표현 텍스트 마이닝 실습해보기

 

개인 지칭은 댓글 내에서 특정인을 거론했는지를 파악하는 것이다. 하지만 이것은 사용하지 않을 것이고 나머지 10개의 클래스로 분석을 진행할 것이다.

댓글이 너무 적나라하기 때문에 적당히 필터링하며 보는 것이 좋다.

 

그리고 여기 있는 파일을 다운 받아서 압축을 풀어준다.

 

tsv는 무엇일까? csv는 컴마로 구분한 데이터셋이고, tsv는 탭으로 구분한 데이터셋을 말한다. 여기있는 tsv 파일을 데이터 파일에 넣어준다.

 

 

 

문자열 중에서 역슬레시는 특수 기호로 많이 사용된다. r은 진짜 역슬레시의 의미라는 것을 표현하기 위해 써주는 것이다.


 

 

 

 

 

멀티 레이블 문제가 있는데 6번 인덱스에 보면 4개가 표시되어 있다. 이것은 4가지를 다 포함해서 욕설을 하는 것이다. 정말 욕설이 적나라해서 가능하면 읽지 않고 넘기는 게 좋을 것 같다.


 

 

 

 

결측치는 따로 없이 모두 가득 차 있다. train, test 모두 결측치가 없이 다 잘 나오고 있다.


 

 

 

학습을 마치고

이 수업도 모두 듣지 않은 수업이었지만 따라가는데 별로 어렵지 않았다. 아마도 더 어려운 머신러닝 수업을 다 듣고 학습했기 때문인 것 같다. 오히려 더 쉽고 재미있게 느껴졌다. 다음 포스트에서는 이제 문장을 토큰화하는 작업을 진행해볼 것이다. 혐오 표현이라 보기만 해도 끔찍하고 정말 지저분한 단어들이 너무나 많다.

난 이런 말을 쓰는 사람들을 대체 이해할 수가 없다. 대체 그 사람들의 머릿속에는 뭐가 들어있길래 상대방을 이런 식으로 비하하고 외설적인 표현을 서슴치 않는지 모르겠다. 그들은 이런 말을 할수록 자기 입만 더러워진다는 걸 모르는 모양이다.

 

예쁘고 아름답고 감사한 것만 보아도 짧은 이 세상의 삶이다. 아마도 내가 어렸을 때 초등학교 때만 게임을 하고 중학교 들어서는 게임과는 완전 거리가 먼 일상을 살았던 이렇게 게임을 하면서 사람들이 남기는 혐오스러운 댓글 때문인 것 같다. 오히려 청소년 시기에 이런 것과 담을 쌓고 살았기에 나의 정신 세계가 맑고 건강할 수 있었지 않을까 생각했다. 모든 것이 감사하게 느껴진다.