(2강) 자연어의 전처리

1. 자연어 전처리

전처리

  • 원시 데이터(rawdata)를 기계 학습 모델이 학습하는데 적합하게 만드는 프로세스

  • 학습에 사용될 데이터를 수집&가공하는 모든 프로세스

전처리가 필요한 이유

Task의 성능을 가장 확실하게 올릴 수 있는 방법! 모델을 아무리 바꾸고, 튜닝하더라도, 데이터 자체가 문제가 있다면 성능이 나올 수 없다. 가장 중요한 것은 데이터이다.

1.1 자연어처리의 단계

1.2 Python string 관련 함수

2. 한국어 토큰화

자연어를 어떤 단위로 관찰할 것인지

2.1 한국어 토큰화

토큰화(Tokenizing)

  • 주어진 데이터를 토큰(Token)이라 불리는 단위로 나누는 작업

  • 토큰이 되는 기준은 다를 수 있음(어절,단어,형태소,음절,자소 등)

문장 토큰화(SentenceTokenizing)

  • 문장 분리

단어 토큰화(WordTokenizing)

  • 구두점 분리,단어 분리 “Hello, World!”->“Hello”,“,”,“World”,“!”

실습

전처리를 위한 코퍼스 수집

  • newspaper3k는 url을 입력하면 뉴스기사의 제목과 컨텐츠를 자동으로 분류해서 크롤링 할 수 있다.

  • 한국어를 제공하는 것을 알 수 있다.

뉴스기사는 재배포 역시 저작권에 위배되기 때문에 매우 주의해야한다. 그래서 보통 실습에서는 저작권에서 비교적 자유로운 위키트리 뉴스 데이터를 사용한다.

추가적인 전처리 실습을 위해 뉴스에서 많이 포함되는 예제 텍스트를 추가한다.

보통은 이렇게 HTML 태그가 무분별하게 부착되어 있게된다. 이는 re 라이브러리를 이용해 제거할 수 있다.

  • html 태그가 사라진 모습

문장 분리

한국어 문장분리기에서 가장 성능이 우수한 것으로 알려진 kss 라이브러리를 사용해서 문장 단위로 모델이 학습할 수 있도록 해준다.

  • 잘 보면 이전의 10문장에서 16문장으로 그 수가 증가했지만 완벽하게 문장분리가 이루어지지 않았다.

  • 7번 문장을 보면 사람도 문장 분리하기 애매한 문장이있다.

  • 또, 특정 링크가 포함되어 있거나 0번과 1번처럼 중복적인 데이터도 존재한다.

  • 기자 이름이나 ㅋㅋㅋ 같은 어구도 불필요한 정보이다. 또 이메일 같은 개인정보를 제거해야한다.

Normalizing

  • 이메일이 사라진 모습

  • 해시태그로 구성된 부분이 사라졌다.

또, @로 이루어진 부분도 인스타그램이나 이메일등을 태그할 수 있는 부분이라서 이 부분도 제거한다. url 역시 제거한다.

문제를 일으킬 수 있는 문자들도 제거한다. 한국어를 크롤링하게되면 이상한 문자들이 같이 크롤링하게 되기 때문에 이러한 문자를 제거한다.

그리고, 기자정보와 언론사정보를 제거한다.

그 외에도 다음을 제거한다.

  • 뉴스 내 포함된 이미제 정보

  • 위키피디아 전처리를 위한 함수

    • 수학(math,) => 수학(math)

    • 수학() => 수학

어느 정도 따라하면서 공부하려고 했는데, 방대한 양의 여기까지만 작성합니다...

Last updated

Was this helpful?