반응형
카카오에서 공개한 khaiii의 경우 뛰어난 성능을 보이지만 띄어쓰기가 잘 되어있지 않으면 성능이 좋지 않습니다. 그래서 lovit님이 공개한 soynlp의 soyspacing을 wikipedia 문서를 통해 학습하려고 합니다.
데이터셋은 한국어임베딩 github에서 다운받았습니다.
Library¶
In [91]:
!pip install soyspacing
In [93]:
from tqdm import tqdm_notebook
import pandas as pd
from soyspacing.countbase import CountSpace
Data Load¶
In [54]:
wiki= []
with open("/home/ubuntu/dataset/processed/processed_wiki_ko.txt", 'r') as f:
for s in tqdm_notebook(f):
wiki.append(s)
wiki = pd.Series(wiki).map(lambda x: x.replace("\\n", " "))
Data Write¶
In [55]:
# 50000건의 wiki 데이터를 text파일로 저장
with open("wiki.txt", 'w') as output:
for row in wiki:
output.write(str(row) )
Train¶
In [56]:
# soyspacing 학습(wiki문서 약31만건)
from soyspacing.countbase import CountSpace
corpus_fname = 'wiki.txt'
model = CountSpace()
model.train(corpus_fname)
Model Save and Load¶
In [ ]:
#Model save
model_fname = 'space-correct_wiki.model'
model.save_model(model_fname, json_format=False)
#model Loac
model_fname = 'space-correct_wiki.model'
model = CountSpace()
model.load_model(model_fname, json_format=False)
Evaluate¶
In [107]:
text = ['아버지가방에들어가신다', '고양이가죽을먹는다', '문재인대통령이연설을시작했다', '현대자동차투싼슈퍼카닷컴']
for n in text:
print(model.correct(n)[0])
In [111]:
text = ['철구가의자에앉았다', '손나은은청순가련멋쟁이', '오늘저녁은뼈숯불구이다!']
for n in text:
print(model.correct(n)[0])
- 아래 문장은 일부로 어려운 문장을 넣어봤습니다.
- 모든 모델이 완벽하지는 않다고 생각하며, khaiii와 함께 사용시 좋아지지않을까? 하는 생각입니다.
In [115]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
반응형
'데이터분석 > NLP' 카테고리의 다른 글
[NLP] Python WordCloud 그리기 (0) | 2021.11.21 |
---|---|
[Keras] RNN 내부동작 알아보기 (0) | 2021.08.05 |
[Keras] Embedding에 대해 알아보자. (3) | 2021.08.05 |