전체 글(137)
-
Pytorch로 시작하는 딥러닝 입문(09-06. 한국어 전처리 패키지)
앞서 소개한 형태소와 문장 토크나이징 도구들인 KoNLPy와 KSS(Korean Sentence Splitter)와 함께 유용하게 사용할 수 있는 한국어 전처리 패키지를 정리해보자 ♣ PyKoSpacing PyKoSpacing 은 띄어쓰기가 되어 있지 않은 문장을 띄어쓰기한 문장으로 변환하는 패키지이다. 대용량 코퍼스를 학습하여 만들어진 띄어쓰기 딥러닝 모델로, 준수한 성능을 가진다. ♣ Py-Hanspell Py-Hanspell은 네이버 한글 맞춤법 검사기를 바탕으로 만들어진 패키지이다. 이 패키지는 맞춤법만이 아니라 띄어쓰기도 보정한다. https://github.com/ssut/py-hanspell/issues/41 py-hanspell spell_checker.check 사용 시 KeyError:..
2024.03.30 -
백트래킹(백준 알고리즘 1987)
♣ 백트래킹 알고리즘 현재 상태에서 가능한 모든 경로를 따라 들어가서 탐색하다가 원하는 값과 불일치하는 부분이 발생하면 더 이상 탐색을 진행하지 않고 전 단계로 돌아가는 알고리즘이다(방금 왔던 길을 되돌아간다는 의미). 즉 모든 가능성을 시도하는 것이 아니라 해결책에 대한 후보군을 구성하고 그 후보군이 문제의 조건을 만족하는지의 여부를 검사하며 해답을 찾는 것이다. 백트래킹은 보통 재귀함수를 이용하여 구현된다. DFS와 혼동하기 쉬운데, 백트래킹은 불필요한 탐색을 하지 않는다. 하지만 DFS는 모든 경우의 수를 자식 노드가 끝날 때까지 탐색한다. 백트래킹의 특징 어떤 노드에서 출발하는 경로가 그 해결책으로 이어질 것 같지 않으면 더 이상 경로를 탐색하지 않음으로써 시도 횟수 감소 불필요한 경로의 조기 차..
2024.03.29 -
Pytorch로 시작하는 딥러닝 입문(09-05. 딥 러닝을 위한 자연어 처리 전처리 실습)
자연어 처리는 일반적으로 토큰화, 단어 집합 생성, 정수 인코딩, 패딩, 벡터화의 과정을 거친다. 여기서는 이러한 전반적인 과정에 대해 이해한다. ♣ 토큰화(Tokenization)주어진 텍스트를 단어 또는 문자 단위로 자르는 것을 토큰화라고 한다. 영어의 경우, 토큰화를 사용하는 도구로서 대표적으로 spaCy와 NLTK가 있다. 우선 영어에 대해 토큰화 실습을 해보자. 1. spaCy 사용하기 2. NLTK 사용하기 3. 띄어쓰기로 토큰화 영어의 경우, 띄어쓰기 단위로 토큰화를 해도 단어들 간 구분이 상당히 명확하기 때문에 토큰화 작업이 수월하다. 하지만 한국어의 경우에는 토큰화 작업이 훨씬 까다롭다. 한국어는 조사, 접사 등으로 인해 단순 띄어쓰기 단위로 나누면 같은 단어가 다른 단어..
2024.03.28 -
Pytorch로 시작하는 딥러닝 입문(09-03. 정규 표현식)
텍스트 전처리에서 정규 표현식은 아주 유용한 도구이다. 파이썬에서 지원하는 정규 표현식 모듈 re의 사용방법과 NLTK를 통한 정규 표현식을 이용한 토큰화에 대해 알아보자. ♣ 정규 표현식 문법과 모듈 함수1. 정규 표현식 문법 정규 표현식을 위해 사용되는 문법 중 특수 문자들은 아래와 같다. 정규 표현식 문법에는 역 슬래쉬(|)를 이용하여 자주 쓰이는 문자 규칙들이 있다. 2. 정규 표현식 모듈 함수정규 표현식 모듈에서 지원하는 함수는 아래와 같다. 앞으로 진행될 실습에서는 re.compile( )에 정규 표현식을 컴파일하고, re.search( )를 통해서 해당 정규 표현식이 입력 텍스트와 매치되는지를 확인하면서 각 정규 표현식에 대해 이해한다. re.search( )는 매치된다면 Match ..
2024.03.28 -
Pytorch로 시작하는 딥러닝 입문(09-02. 불용어)
갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요하다. 큰 의미가 없는 단어 토큰이란 자주 등장하지만 분석을 함에 있어서는 큰 도움이 되지 않는 단어들을 의미한다. 예를 들면 I, my, me, over, 조사, 접미사 같은 단어들은 문장에서는 자주 등장하지만 실제 의미 분석을 하는 데는 거의 기여하는 바가 없다. 이런 단어들을 불용어(stopword)라고 하며, NLTK에서는 위와 같은 100여개 이상의 영어 단어들을 패키지 내에서 불용어로 미리 정의한다. 불용어를 개발자가 직접 정의할 수도 있다. 영어 문장에서 NLTK가 정의한 영어 불용어를 제거하는 실습을 해보자. ♣ NLTK에서 불용어 확인하기 ♣ NLTK를 통해서 불용어 제거하..
2024.03.27 -
Pytorch로 시작하는 딥러닝 입문(09-02. 텍스트 데이터의 정제와 정규화)
코퍼스에서 용도에 맞게 토큰을 분류하는 작업을 토큰화(tokenization)이라고 하며, 토큰화 작업 전, 후에는 텍스트 데이터를 용도에 맞게 정제(cleaning) 및 정규화(normalization)하는 일이 함께한다. 정제 및 정규화의 목적은 다음과 같다. 1. 정제(cleaning): 갖고 있는 코퍼스로부터 노이즈 데이터를 제거한다. 2. 정규화(normalization): 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만든다. 정제 작업은 토큰화 작업에 방해가 되는 부분들을 배제시키고 토큰화 작업을 수행하기 위해서 토큰화 작업보다 앞서 이루어지기도 하지만, 토큰화 작업 이후에도 여전히 남아있는 노이즈들을 제거하기위해 지속적으로 이루어지기도 한다. ♣ 규칙에 기반한 표기가 다른 단어들의..
2024.03.26