3. 토큰화
: 주어진 코퍼스에서 토큰으로 불리는 단위로 나누는 작업
토큰은 상황에 따라 다르게, 의미 있는 단위로 정의함
- 단어 토큰화
토큰화의 기준을 단어로 하는 경우
(이 때 단어는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주됨)
일반적으로 구두점이나 특수 문자 등을 제거하는 정제 과정 후 띄어쓰기를 기준으로 문장을 자른다 (다만 한국어의 경우, 띄어쓰기만으로는 단어 토큰을 구분하는 경우가 많음)
하지만 토큰화를 단순하게 생각할 수 없는건, 구두점이나 특수 문자를 단순히 모두 제외해버리면 원래의 의미를 잃어버릴 수 있기 때문임
단어 자체에 & 혹은 /를 갖고 있거나, . 을 통해 문장의 경계를 알 수도 있고, 숫자 사이에 , 이 들어가는 경우도 있기 때문임
- 문장 토큰화
토큰화의 기준을 문장으로 하는 경우
? . , ! 등을 기준으로 분류할 수 있을 것이라 생각할 수 있지만 . 같은 경우 문장의 마침에만 나타나는 것이 아닐 수 있음
한국어 문장 토큰화의 경우, KSS(korean sentence splitter)가 좋음
pip install kss
한국어에서의 토큰화의 어려움
- 한국어는 교착어임
한국어는 단어에 조사, 어미 등을 붙여서 어절 단위로 띄어쓰기가 수행되기 때문에 띄어쓰기를 단위로 하여 단위를 토큰화하면 제대로 단어만 분리할 수 없게 됨
⇒ 어절 안에서 단어와 조사나 어미를 분리할 필요가 있음
그러기 위해서는 형태소를 단위로 분리하는 형태소 토큰화를 수행해야 함
형태소는 자립하여 사용할 수 있는 형태소인 자립 형태소와 다른 형태소와 결합하여 사용되는 의존 형태소로 분리할 수 있음
- 띄어쓰기가 잘 이루어지지 않음
한국어는 띄어쓰기가 잘 지켜지지 않아도 쉽게 이해할 수 있는 언어이기 떄문에 띄어쓰기가 잘 이루어지지 않는 경우가 많음
품사 태깅
단어의 표기는 같지만 품사에 따라서 단어의 의미가 달라지는 경우를 파악하기 위해 단어 토큰화 과정에서 각 단어가 어떤 품사로 쓰였는지 구분하는 것
from konlpy.tag import Okt
from konlpy.tag import Kkma
okt = Okt()
kkma = Kkma()
print('OKT 형태소 분석 :',okt.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 품사 태깅 :',okt.pos("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 명사 추출 :',okt.nouns("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
OKT 형태소 분석 : ['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요']
OKT 품사 태깅 : [('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb')]
OKT 명사 추출 : ['코딩', '당신', '연휴', '여행']
4. 불용어
: 갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위한 작업
실제 의미 분석을 하는 것에 있어서 거의 기여하는 바가 없는 토큰을 제거하는 작업을 의미한다
https://www.ranks.nl/stopwords/korean
4. 정수 인코딩
: 단어 혹은 텍스트를 숫자로 바꾸는 기법 (컴퓨터는 텍스트보다는 숫자를 잘 처리한다)
일반적으로 토큰을 빈도수 순으로 정렬하여 단어 집합을 만들고, 빈도수가 높은 순서대로 차례로 낮은 숫자부터 정수를 부여하는 방법
5. 패딩
: 서로 다른 길이의 문장을 패딩을 채워줌으로써 길이를 동일하게 맞추어 컴퓨터로 하여금 이를 하나의 행렬로 보고 한꺼번에 묶어서 병렬 연산할 수 있도록 하기 위한 작업
전처리 방법이 정말 많아서 험난한 것 같다. 자유 분방하게 작성된 온갖 한국어를 최대한 정규화하려는 과정이 흥미로웠다.
불용어 필터링 과정처럼 미리 단어 사전을 만들어 준비해야하는 과정이 막막해보이기도 했지만, 찾아보니 다른 좋은 분들이 만들어둔 좋은 단어 사진들이 있어 다행이라고 생각했다.
'모각코 > 2024 하계 모각코' 카테고리의 다른 글
[진저비어] 하계 모각코 6주차 회고 (0) | 2024.08.16 |
---|---|
[진저비어] 하계 모각코 6주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 5주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 3주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 2주차 계획 (0) | 2024.07.21 |
3. 토큰화
: 주어진 코퍼스에서 토큰으로 불리는 단위로 나누는 작업
토큰은 상황에 따라 다르게, 의미 있는 단위로 정의함
- 단어 토큰화
토큰화의 기준을 단어로 하는 경우
(이 때 단어는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주됨)
일반적으로 구두점이나 특수 문자 등을 제거하는 정제 과정 후 띄어쓰기를 기준으로 문장을 자른다 (다만 한국어의 경우, 띄어쓰기만으로는 단어 토큰을 구분하는 경우가 많음)
하지만 토큰화를 단순하게 생각할 수 없는건, 구두점이나 특수 문자를 단순히 모두 제외해버리면 원래의 의미를 잃어버릴 수 있기 때문임
단어 자체에 & 혹은 /를 갖고 있거나, . 을 통해 문장의 경계를 알 수도 있고, 숫자 사이에 , 이 들어가는 경우도 있기 때문임
- 문장 토큰화
토큰화의 기준을 문장으로 하는 경우
? . , ! 등을 기준으로 분류할 수 있을 것이라 생각할 수 있지만 . 같은 경우 문장의 마침에만 나타나는 것이 아닐 수 있음
한국어 문장 토큰화의 경우, KSS(korean sentence splitter)가 좋음
pip install kss
한국어에서의 토큰화의 어려움
- 한국어는 교착어임
한국어는 단어에 조사, 어미 등을 붙여서 어절 단위로 띄어쓰기가 수행되기 때문에 띄어쓰기를 단위로 하여 단위를 토큰화하면 제대로 단어만 분리할 수 없게 됨
⇒ 어절 안에서 단어와 조사나 어미를 분리할 필요가 있음
그러기 위해서는 형태소를 단위로 분리하는 형태소 토큰화를 수행해야 함
형태소는 자립하여 사용할 수 있는 형태소인 자립 형태소와 다른 형태소와 결합하여 사용되는 의존 형태소로 분리할 수 있음
- 띄어쓰기가 잘 이루어지지 않음
한국어는 띄어쓰기가 잘 지켜지지 않아도 쉽게 이해할 수 있는 언어이기 떄문에 띄어쓰기가 잘 이루어지지 않는 경우가 많음
품사 태깅
단어의 표기는 같지만 품사에 따라서 단어의 의미가 달라지는 경우를 파악하기 위해 단어 토큰화 과정에서 각 단어가 어떤 품사로 쓰였는지 구분하는 것
from konlpy.tag import Okt
from konlpy.tag import Kkma
okt = Okt()
kkma = Kkma()
print('OKT 형태소 분석 :',okt.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 품사 태깅 :',okt.pos("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 명사 추출 :',okt.nouns("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
OKT 형태소 분석 : ['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요']
OKT 품사 태깅 : [('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb')]
OKT 명사 추출 : ['코딩', '당신', '연휴', '여행']
4. 불용어
: 갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위한 작업
실제 의미 분석을 하는 것에 있어서 거의 기여하는 바가 없는 토큰을 제거하는 작업을 의미한다
https://www.ranks.nl/stopwords/korean
4. 정수 인코딩
: 단어 혹은 텍스트를 숫자로 바꾸는 기법 (컴퓨터는 텍스트보다는 숫자를 잘 처리한다)
일반적으로 토큰을 빈도수 순으로 정렬하여 단어 집합을 만들고, 빈도수가 높은 순서대로 차례로 낮은 숫자부터 정수를 부여하는 방법
5. 패딩
: 서로 다른 길이의 문장을 패딩을 채워줌으로써 길이를 동일하게 맞추어 컴퓨터로 하여금 이를 하나의 행렬로 보고 한꺼번에 묶어서 병렬 연산할 수 있도록 하기 위한 작업
전처리 방법이 정말 많아서 험난한 것 같다. 자유 분방하게 작성된 온갖 한국어를 최대한 정규화하려는 과정이 흥미로웠다.
불용어 필터링 과정처럼 미리 단어 사전을 만들어 준비해야하는 과정이 막막해보이기도 했지만, 찾아보니 다른 좋은 분들이 만들어둔 좋은 단어 사진들이 있어 다행이라고 생각했다.
'모각코 > 2024 하계 모각코' 카테고리의 다른 글
[진저비어] 하계 모각코 6주차 회고 (0) | 2024.08.16 |
---|---|
[진저비어] 하계 모각코 6주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 5주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 3주차 계획 (0) | 2024.08.16 |
[진저비어] 하계 모각코 2주차 계획 (0) | 2024.07.21 |