728x90
반응형
시소러스와 WordNet
https://seokii.tistory.com/89?category=1037863
지난 글에서 컴퓨터에게 단어를 가르치기 위해서 시소러스와 WordNet을 정리했습니다.
이번에는 통계 기반 기법으로 단어를 가르치기 전에 말뭉치와 말뭉치를 전처리하는 것에 대해 정리하겠습니다.
말뭉치(Corpus)란?
말뭉치는 자연어처리 작업에서 의미하는 텍스트 데이터입니다.
일반적으로 원시 텍스트와 함께 연관된 메타데이터를 포함합니다.
간단하게 말하자면, 대량의 텍스트 데이터 혹은 자연어 처리를 진행하기 위해 수집된 텍스트 데이터라고 쉽게 이해할 수 있습니다.
말뭉치 전처리하기
text = 'You say goodbye and I say hello.'
text = text.lower()
text = text.replace('.', ' .')
print(text)
words = text.split(' ')
print(words)
you say goodbye and i say hello .
['you', 'say', 'goodbye', 'and', 'i', 'say', 'hello', '.']
.lower() 함수를 사용해 모든 문자를 소문자 처리를 진행했습니다.
.replace()로 구두점 앞에 공백을 추가했습니다.
그 이후 .split() 함수를 사용해 공백을 기준으로 모든 단어들을 분할했습니다.
이 작업을 토크나이징(tokenizing)이라하며 자연어 처리에서 이 작업을 편하게 도와주는 라이브러리들이 존재합니다. 한국어의 경우에는 KoNLPy를 활용해 쉽게 작업을 진행할 수 있습니다.
word_to_id = {}
id_to_word = {}
for word in words:
if word not in word_to_id:
new_id = len(word_to_id)
word_to_id[word] = new_id
id_to_word[new_id] = word
print(id_to_word)
print(word_to_id)
print(id_to_word[1])
print(word_to_id['hello'])
{0: 'you', 1: 'say', 2: 'goodbye', 3: 'and', 4: 'i', 5: 'hello', 6: '.'}
{'you': 0, 'say': 1, 'goodbye': 2, 'and': 3, 'i': 4, 'hello': 5, '.': 6}
say
5
다음으로, 딕셔너리를 선언해 id와 word를 정의해주었습니다.
문장의 순서대로 0: 'you', 1: 'say' ... 6: '.' 와 같은 형식입니다.
이 딕셔너리를 사용해 단어를 가지고 id를 검색하거나, 반대의 경우에도 검색할 수 있습니다.
말뭉치를 가지고 기본적인 전처리를 해봤는데,
다음 글에서는 이 말뭉치를 더 활용해 통계 기반 기법으로 단어를 학습시켜보도록 하겠습니다.
728x90
반응형
'머신러닝 & 딥러닝 > 자연어처리' 카테고리의 다른 글
[자연어 처리/NLP기초] 5. 통계 기반 기법: 동시발생 행렬 (0) | 2022.02.21 |
---|---|
[자연어 처리/NLP기초] 4. 단어의 분산 표현과 분포 가설 (2) | 2022.02.21 |
[자연어 처리/NLP기초] 2. 단어 이해시키기(1) - 시소러스와 WordNet (0) | 2022.02.19 |
[자연어 처리/NLP기초] 1. 자연어 처리란? (0) | 2022.02.14 |
NLP 기초 - KoNLPy를 활용한 한국어 형태소 토크나이징(Komoran, Kkma, Okt) (0) | 2021.12.03 |
댓글