이번 시리즈에서는 NLP에 대해 알아볼 것입니다. NLP란 Natural Language Processing의 약자로, 한국어로 번역하면 자연어처리라는 뜻입니다. 즉, 자연어를 컴퓨터에 이해시키는 분야인 것이죠. 우리가 일상적으로 사용하는 언어로 한국어, 영어 등이 이
NLP는 크게 NLU와 NLG, 이 두 가지로 구분됩니다. 이 시리즈에서는 주로 NLU를 다룰 예정입니다.NLU란 Natural Langauge Understanding의 약자로, 컴퓨터가 자연어를 이해하는 과정에 초점을 맞춥니다. 우리는 한국어로 된 문장을 들었을 때
수집된 언어 데이터를 사용하기 위해서는 용도에 맞게 전처리할 필요가 있습니다. 전처리를 통해 언어 데이터를 컴퓨터가 이해할 수 있겠끔 바꾸는거죠. 이번 시간은 그 중에서도 토큰화에 대해 알아보겠습니다. 🤔 토큰화란? 토큰화(tokenization)는 텍스트를 토큰이
품사 태깅이란? 품사 태깅(Pos Tagging)은 형태소 분석을 하기 위한 방법으로, 형태소의 품사를 지정해줍니다. 때문에 품사 태깅을 사용하기 위해서는 토큰화가 우선되어야하죠. 위의 코드를 보면 NLTK의 pos_tag 함수는 ('hey', 'NN')과 같이 각
🤔 어간 추출이란? 어간 추출은 단어에서 접사를 제거하여 어간을 추출하는 기능을 수행합니다. 이를 통해서 코퍼스에 있는 다른 형태의 여러 단어들을 대폭 줄일 수 있죠. 만약, 코퍼스에 connection, connected, connecting이라는 단어가 들어있다
🤔 표제어 추출이란? 표제어 추출(Lemmatization)은 어간 추출과 같이 코퍼스 내의 단어 수를 줄이는데 사용되는 방법입니다. 어간 추출이 규칙을 기반으로 접사들을 잘라냈다고 하면, 표제어 추출은 사전을 이용하여 단어의 원형을 찾는 작업이라 볼 수 있습니다.
코퍼스의 방대한 언어 데이터에는 유의미한 단어와 유의미하지 않은 단어가 섞여있습니다. 가령, a나 the같은 단어들은 자주 사용되나 관사이기 때문에 특별한 의미를 가지는 것은 아니죠. 때문에 효율적인 처리를 위해선 코퍼스 내에서 이들을 제거해줄 필요가 있습니다. 🤔
코퍼스 데이터를 처리하다보면 빈도수를 활용하는 경우가 많습니다. 자주 사용되는 단어가 무엇인지 알면 해당 데이터의 경향성을 파악할 수 있기 때문이죠. 단어의 빈도수를 측정하는 대표적인 방법으로는 count() 메소드를 사용하는 경우와 NLTK의 FreqDist를 사용
지금까지는 영어를 대상으로 한 자연어 처리에 대해서 알아봤습니다. 하지만 한국어는 영어와 언어적인 성격이나 문법 구조 등에서 차이를 보이기 때문에 별도의 처리 방식이 필요합니다. 이번 시간에는 파이썬 라이브러리인 KoNLPy를 활용한 한국어 처리에 대해 알아보겠습니다.
컴퓨터가 텍스트를 효율적으로 처리하는 방법에는 무엇이 있을까요? 컴퓨터는 텍스트보다 숫자를 효율적으로 처리합니다. 텍스트도 인코딩되어 인식되기 때문이죠. 그렇기에 자연어 처리에서는 텍스트를 숫자와 대응시켜 컴퓨터가 쉽게 처리할 수 있겠끔 변환하는 과정이 필요합니다. 이
저번 시간에 정수 인코딩을 통해서 텍스트를 컴퓨터가 처리하기 쉬운 숫자로 바꿨습니다. 이번 시간에는 정수 인코딩과 같이 대표적인 변환 기법 중 하나인 원-핫 인코딩에 대해 알아보겠습니다. 🤔 원-핫 인코딩이란? 원-핫 인코딩은 단어 집합의 크기만큼 벡터 차원을 가지
🤔 BoW란? BoW란 Bag of Words의 약자로, 단어 가방을 활용하여 텍스트를 벡터화하는 방식입니다. 즉, 여러 단어들이 담긴 단어 가방(Bag of Words)에서 임의로 단어를 꺼내어 텍스트에 해당되는 단어가 몇 개 있는 지 그 빈도를 세는 방식이죠.
지난 시간에 배운 BoW(Bag of Words), 그리고 BoW를 기반으로 하는 DTM(Document Term Matrix)의 경우, 단순 빈도수를 기반으로 하기 때문에 불용어와 같은 단어들이 있으면 유의미한 결과를 얻지 못할 수도 있다고 배웠습니다. 때문에 각 단