형태소 분석

이 페이지에서는 말뭉치를 형태소 분석하는 방법을 안내합니다. /notebooks/embedding 위치에서 다음을 실행하면 각 데이터를 형태소 분석할 수 있습니다. 입력 파일은 한 라인이 한 문서인 형태여야 합니다.

1. supervised tokenizer

은전한닢 등 5개의 한국어 형태소 분석기를 지원합니다. 사용법은 다음과 같습니다.

형태소 분석기 명령
은전한닢 python preprocess/supervised_nlputils.py –tokenizer mecab –input_path input_file_path –output_path output_file_path
코모란 python preprocess/supervised_nlputils.py –tokenizer komoran –input_path input_file_path –output_path output_file_path
Okt python preprocess/supervised_nlputils.py –tokenizer okt –input_path input_file_path –output_path output_file_path
한나눔 python preprocess/supervised_nlputils.py –tokenizer hannanum –input_path input_file_path –output_path output_file_path
Khaiii python preprocess/supervised_nlputils.py –tokenizer khaiii –input_path input_file_path –output_path output_file_path

2. unsupervised tokenizer

soynlp와 구글 SentencePiece 두 가지 분석기를 지원합니다. supervised tokenizer들과 달리 말뭉치의 통계량을 확인한 뒤 토크나이즈를 하기 때문에 토크나이즈 적용 전 모델 학습이 필요합니다. 말뭉치 데이터가 필요하다면 이곳에 방문하셔서 필요한 데이터를 내려 받으세요.

2.1. soynlp

soynlp 형태소 분석 모델을 학습합니다. input_path는 학습데이터의 위치, model_path는 학습된 모델을 저장할 위치를 가리킵니다.

# train
python preprocess/unsupervised_nlputils.py --preprocess_mode compute_soy_word_score \
	--input_path /notebooks/embedding/data/processed/corrected_ratings_corpus.txt \
	--model_path /notebooks/embedding/data/processed/soyword.model

형태소를 분석합니다. input_path는 형태소 분석할 말뭉치의 위치, model_path는 학습 완료된 형태소 분석 모델의 저장 위치, output_path 는 형태소 분석이 완료된 말뭉치가 저장될 위치를 의미합니다.

# tokenize
python preprocess/unsupervised_nlputils.py --preprocess_mode soy_tokenize \
	--input_path /notebooks/embedding/data/processed/corrected_ratings_corpus.txt \
	--model_path /notebooks/embedding/data/processed/soyword.model \
	--output_path /notebooks/embedding/data/tokenized/ratings_soynlp.txt

2.2. sentencepiece

구글 sentencepiece 패키지를 활용해 Byte Pair Encoding 기법으로 단어 사전(vocabulary)을 만들고, 이를 BERT 모델에 맞도록 후처리합니다. input_path는 BPE 학습데이터 위치, vocab_path는 이 모듈의 최종 처리 결과인 BERT 모델에 쓸 단어 사전이 저장될 위치입니다.

python preprocess/unsupervised_nlputils.py --preprocess_mode make_bert_vocab \
	--input_path /notebooks/embedding/data/processed/corrected_ratings_corpus.txt \
	--vocab_path /notebooks/embedding/data/processed/bert.vocab

위에서 만든 사전으로 input_path에 있는 말뭉치를 토크나이즈한 후 output_path에 저장합니다.

python preprocess/unsupervised_nlputils.py --preprocess_mode bert_tokenize \
	--vocab_path /notebooks/embedding/data/processed/bert.vocab \
	--input_path /notebooks/embedding/data/processed/corrected_ratings_corpus.txt \
	--output_path /notebooks/embedding/data/tokenized/ratings_sentpiece.txt

3. 띄어쓰기 교정

supervised tokenizer이든, unsupervised tokenizer이든 띄어쓰기가 잘 되어 있을 수록 형태소 분석 품질이 좋아집니다. soynlp의 띄어쓰기 교정 모델을 학습하는 코드는 다음과 같습니다.

python preprocess/unsupervised_nlputils.py --preprocess_mode train_space \
	--input_path /notebooks/embedding/data/processed/processed_ratings.txt \
	--model_path /notebooks/embedding/data/trained-models/space-correct.model

학습된 띄어쓰기 모델로 말뭉치를 교정하는 과정은 다음과 같습니다.

python preprocess/unsupervised_nlputils.py --preprocess_mode apply_space_correct \
	--input_path /notebooks/embedding/data/processed/processed_ratings.txt \
	--model_path /notebooks/embedding/data/trained-models/space-correct.model \
	--output_path /notebooks/embedding/data/processed/corrected_ratings_corpus.txt \
	--with_label False

4. 형태소 분석 완료된 데이터 다운로드

형태소 분석에 시간을 투자하고 싶지 않은 분들은 아래를 실행하면 형태소 분석이 모두 완료된 데이터들을 한꺼번에 다운로드할 수 있습니다. 이밖에 다른 데이터를 내려받고 싶다면 이 글을 참고하세요.

bash preprocess.sh dump-tokenized