nltk
정수 인코딩 (Integer Encoding)
컴퓨터는 텍스트보다는 숫자를 더 잘 처리할 수 있다. 이를 위해 자연어 처리에서는 텍스트를 숫자로 바꾸는 여러 가지 기법들이 있다. 그리고 그러한 기법들을 본격적으로 적용시키기 위한 첫 단계로 각 단어를 고유한 숫자에 맵핑(Mapping)시키는 전처리 작업이 필요할 때가 있다. 예를 들어 갖고 있는 텍스트에 단어가 5,000개 있다면, 5,000개의 단어들 각각에 0번부터 4,999번까지 단어와 맵핑되는 고유한 숫자, 다른 말로는 인덱스를 부여한다. 인덱스를 부여하는 방법은 여러 가지가 있을 수 있는데, 랜덤으로 부여하기도 하지만 보통은 전처리도 같이 겸하기 위해 단어에 대한 빈도수로 정렬한 뒤에 부여한다. 정수 인코딩 (Integer Encoding) 1. dictionary 사용하기 from nltk..
어간 추출(Stemming)과 표제어 추출(Lemmatization)
택스트 전처리의 목적은 말뭉치(Corpus)로부터 복잡성을 줄이는 것이다. 어간 추출(Stemming)과 표제어 추출(Lemmatization) 역시 말뭉치의 복잡성을 줄여주는 텍스트 정규화 기법이다. 어간 추출과 표제어 추출은 단어의 원형을 찾는것을 말한다. 예를들어 played, plays, playing으로부터 play를 찾는 것이다. 표제어 추출(Lemmatization) 표제어 추출은 단어들이 다른 형태를 가지더라도, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단한다. 예를 들어서 am, are, is는 서로 다른 스펠링이지만 그 뿌리 단어는 be라고 볼 수 있고, 이 단어들의 표제어는 be이다. 형태소는 두 가지 종류가 있다. 1) 어간(stem) : 단어의 의미를 담고 있는 단..
토큰화 Tokenization
말뭉치 또는 코퍼스(Corpus)는 자연언어 연구를 위해 특정한 목적을 가지고 언어의 표본을 추출한 집합이다. 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 부릅니다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의합니다. 토큰화는 문장 형태의 데이터를 처리하기 위해 제일 처음 수행해야 하는 기본적인 작업이며, 주로 텍스트 전처리 과정에서 사용된다. 토큰화를 어떻게 하느냐에 따라 성능에 차이가 난다. 예를들어 "This is a pen" 이라는 말뭉치(Corpus)가 있을 때 토큰화를 하면 "this", "is", "a", "pen"으로 나뉜다. 한국어 문장을 예를 들면, "아버지가 방에 들어가신다" 를 토큰화..
불용어(Stop word) 제거
갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요하다. 불용어(Stop word)는 분석에 큰 의미가 없는 단어를 지칭한다. 큰 의미가 없다라는 것은 자주 등장하지만 분석을 하는 것에 있어서는 큰 도움이 되지 않는 단어들을 말한다. 예를 들면, I, my, me, over, 조사, 접미사 같은 단어들은 문장에서는 자주 등장하지만 실제 의미 분석을 하는데는 의미가 없는 경우가 있다. 이런 불용어는 텍스트에 빈번하게 나타나기 때문에 중요한 단어로 인지될 수 있다. 하지만 실질적으로는 중요한 단어가 아니므로 사전에 제거하는 과정을 거쳐야 한다. 불용어 확인하기 - NLTK 모듈 활용 import nltk nltk.download('stopwords..