자연어처리 4

머신 러닝 + 자연어 처리

오늘은 특정한 기술이나 알리고즘이 아니라 머신 러닝을 사용해서 자연어처리 문제를 푸는 일반적인 과정에 대해서 이야기를 해보려고합니다. 다르게 말하면, 자연어처리 문제를 어떻게 일반적인 머신 러닝 문제 형태로 바꾸느냐에 대한 이야기입니다. 머신 러닝 문제 형태? 머신 러닝 문제 형태라는 것이 무엇일까요? 우리가 흔히 머신 러닝이라고 부르는 것은 실제로는 다양한 알고리즘의 집합니다. 대표적인 머신 러닝 알고리즘들은 아래와 같은 분류에 속합니다 (이 외에 다른 분류도 있습니다). Clustering Regression Classification Clustering은 비슷한 데이터들끼리 분류하고 모으는 작업입니다. 예를 들어 쇼핑몰의 고객 데이터를 주고, 고객들을 몇가지 부류로 나누는 작업이 있을 수 있습니다...

Deep Learning 2022.03.26

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리 아름다운별지구에오신여러분을환영합니다 딥러닝도 좀 배웠고, 자연어처리도 좀 배웠고, pytorch도 좀 배웠는데 막상 뭔가를 만들어 보려면 막막할 수 있습니다. 오늘은 pytorch를 이용해서 한국어 띄어쓰기 모듈을 바닥부터 만들어보고, 이 과정에서 실제로 어떻게 간단하 자연어처리기를 개발하는지 살펴보려고 합니다. "아름다운별지구에오신여러분을환영합니다"를 입력으로 주면 "아름다운 별 지구에 오신 여러분을 환영합니다"로 바꿔주는 것이 오늘의 목표입니다. 딥러닝과 Pytorch에 대해서 기본적인 부분을 습득하고 있다고 가정하겠습니다. 특히 Pytorch에 대한 사용법은 설명하지 않으니 참고 부탁드립니다. 문제 정의, 발상의 전환 머신러닝 문제를 풀 때..

Deep Learning 2021.05.26

Word Vector 훈련 데이터를 키우면 얼마나 도움이 될까?

지난 테스트(Tensorflow의 Embedding Layer vs fastText)에서 Tensorflow의 자체 임베딩보다는 아무래도 대용량의 데이터를 사용해서 훈련시킨 fastText가 성능 개선에 도움이 된다는 사실을 확인하고 또 궁금한 점이 생겼습니다. 그렇다면 fastText를 훈련시키는 데이터를 키우면 어떨까요? 한국어 위키피디아도 크기는 하지만 실제로 더 큰 데이터는 나무 위키입니다. 콘텐츠 품질에 대해 논란이 있지만 방대한 텍스트 데이터이기는 하죠. 그리고 다소 심한 구어체와 비속어들이 있지만 어떻게 보면 위키피디아보다 요즘 인터넷 상의 언어 형태를 더 잘 보여준다고 볼 수도 있고요. 그리하여 기존 위키피디아 + 네이버 영화 데이터에 나무위키 데이터까지 더해서 fastText를 훈련시켜보..

Deep Learning 2020.05.01

한국어 토큰의 단위는 뭐가 좋을까?

한국어 자연어 처리를 하다 보면 토큰의 단위를 뭐로 할지 고민이 될 때가 있습니다. 토큰을 어떻게 잡느냐에 따라 데이터의 크기도 달라지고, 아마도(?) 최종 시스템의 성능도 달라질 거고요. 그래서 이 아마도를 한번 확인해보기로 했습니다. 토큰에 따라 성능이 달라질까요? 결론은 네 그렇습니다. 두 줄 요약. 어절을 통으로 쓰는 것보다는 형태소나 Subword와 같은 작은 단위가 좋다. 글자를 쓰느냐, 자소를 쓰느냐는 (특히 형태소 단위 토큰에서) 크게 유의미하지 않다. 이번 글의 또다른 목적은 간단한 한국어 자연어 처리기를 나름 최신의 기술들을 사용해서 처음부터 끝까지 만드는 법을 보여드리는 겁니다. 그래서 전체 데이터와 코드를 포함했습니다. 시작하기 전에 이 글은 읽으시는 분께서 Tensorflow, M..

Deep Learning 2020.04.28