위키백과 : 누구나 자유롭게 수정, 편집할 수 있는 인터넷 백과사전
한국어 위키백과의 원 데이터(raw data)를 다운로드 하는 방법
위키백과 XML 문서상의 문학 항목
KorQuAD : 한국어 기계 독해를 위한 데이터셋
감성 분석이나 문서 분류 태스크 수행에 제격인 데이터 셋
문장이나 단어의 경계를 컴퓨터에 알려주지 않으면 어휘 집합에 속한 단어 수가 기하급수적으로 늘어나서 연산의 비효율이 발생
특히 한국어는 조사와 어미가 발달한 교착어이기 때문에 섬세한 처리 필요
형태소 분석 기법을 사용하면 어휘 집합을 줄일 수 있다.
태깅 : 모델 입력과 출력 쌍을 만드는 작업
은전한닢(Mecab), 꼬꼬마(Kkma), 한나눔(Hannanum), Okt, 코모란(Komoran) 등 5개 오픈소스 형태소 분석기를 파이썬 환경에서 사용할 수 있도록 인터페이스를 통일한 한국어 자연어 처리 패키지
https://tech.kakao.com/2018/12/13/khaiii/
Kakao Hangul Anlyzer Ⅲ, 카카오가 공개한 오픈소스 한국어 형태소 분석기
CNN 모델 적용
데이터의 패턴을 모델 스스로 학습하게 함으로써 형태소를 분석하는 방법
형태소 분석, 품사 판별 등을 지원하는 파이썬 기반 한국어 자연어 처리 패키지
하나의 문장 혹은 문서에서보다는 어느 정도 규모가 있으면서 동질적인 문서 집합에서 잘 작동한다.
# pip install soynlp
from soynlp.word import WordExtractor
import math
from soynlp.tokenizer import LTokenizer
corpus_fname = 'processed_ratings.txt'
model_fname = 'soyword.model'
# 예제 파일 문장 리스트로 저장
sentences = [sent.strip() for sent in open(corpus_fname, 'r', encoding='UTF8').readlines()]
# 객체 선언
word_extractor = WordExtractor(min_frequency=100,
min_cohesion_forward=0.05,
min_right_branching_entropy=0.0)
word_extractor.train(sentences) # 모델 학습
word_extractor.save(model_fname) # 모델 저장
scores = word_extractor.word_scores()
scores = {key:(scores[key].cohesion_forward * math.exp(scores[key].right_branching_entropy)) for key in scores.keys()}
tokenizer = LTokenizer(scores=scores)
tokens = tokenizer.tokenize("애비는 종이었다")
print(tokens)
바이트 페어 인코딩(BPE) 기법 등을 지원
# pip install soyspacing
from soyspacing.countbase import CountSpace
corpus_fname = 'processed_ratings.txt'
model = CountSpace()
model.train(corpus_fname)
# model.save_model('space-correct.model', json_format=False)
# model.load_model('space-correct.model', json_format=False)
model.correct("어릴때보고 지금다시봐도 재밌어요")
한국어 임베딩 - 이기창 지음