딥러닝 기반 한글 자동 띄어쓰기 API 공개

형태소 분석 이전에 문자열의 정상 유무는 이후 분석 품질에 지대한 영향을 미친다. 최근 음성인식 정확도가 높아짐에 따라 많은 음성데이터가 Text로 변환되고 분석되기 시작했는데, 이를 위해 잘 동작하는 띄어쓰기 엔진은 텍스트 분석에서 거의 필수적인게 되어 버렸다. 또한 트위터나 페이스북의 사용자 생성 데이터를 분석하기 위해서 일종의 정규화 작업이 필수이며 양질의 띄어쓰기 엔진 확보가 점차 중요해지고 있다.

개인적으로 이런 저런 시도를 해오면서 큰 진전이 없다가 작년부터 어떻게 하면 딥러닝으로 한글 자동 띄어쓰기를 잘 해볼까 라는 고민을 하기 시작했고 이번 추석 연휴를 기회로 쓸만한 띄어쓰기 엔진이 만들어져 간단한 API로 공개해본다. 세종 코퍼스 1만 문장 기준 94.8% 그리고 최근 뉴스 기사 기준 95.3%의 띄어쓰기 정확도를 가지는 엔진으로 박찬엽씨가 수집/공유해준 2017년도 뉴스 기사 중 1억 문장으로 학습되었다.

딥러닝 기반의 첫 시도는 KoWordSpacing Git에 공개되어 있으나 현재 이 방식하고는 상당부분 달라졌고, 그렇게 개선된 딥러닝 아키텍처 덕분에 성능향상이 두드러졌다고 판단하고 있다. 관련 아키텍처는 별도 기회(논문이나 기고)를 통해 공유를 할 생각이다.

아래와 같은 방식으로 API를 사용할 수 있으며, 호출 건수에 대해서 별도의 제한은 없으나, 1회 호출에 200글자로 글자수를 제한하고 있어 문장단위로 입력을 하면 띄어쓰기가 된 문장을 리턴받을 수 있다.

Python기반 (>= 3.3)

from requests import put

spaced_sent = put('http://35.201.156.140:8080/spacing', 
      data={'sent':"최근음성인식정확도가높아짐에따라많은음성데이터가Text로변환되고분석되기시작했는데,이를위해잘동작하는띄어쓰기엔진은거의필수적인게되어버렸다."}).json() 

print(spaced_sent['sent'])

## 최근 음성인식 정확도가 높아짐에 따라 많은 음성데이터가 Text로 변환되고 분석되기 시작했는데, 이를 위해 잘 동작하는 띄어쓰기엔진은 거의 필수적인 게 되어버렸다.

R기반

library(reticulate)

requests <- import('requests')

spaced_sent <- requests$put('http://35.201.156.140:8080/spacing', 
      data=list(sent="아래와같은방식으로API를사용할수있으며,호출건수에대해서별도의제한은없으나,1회 호출에200글자로글자수를제한하고있다."))$json() 


print(spaced_sent$sent)
## [1] "아래와 같은 방식으로 API를 사용할 수 있으며, 호출 건수에 대해서 별도의 제한은 없으나, 1회 호출에 200글자로 글자수를 제한하고 있다. "

CC BY-NC 4.0 딥러닝 기반 한글 자동 띄어쓰기 API 공개 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

This entry was posted in Machine Learning, 개발

  • K.B. Park

    항상 감사드립니다!^^

  • 콜이다

    소스 감사합니다.

    그런데 이 에러는 왜인지 모르겠네요..

    > requests <- import('requests')
    Error in py_module_import(module, convert = convert) :
    ModuleNotFoundError: No module named 'requests'

  • https://github.com/youngwoos/kospacing

    위 API를 호출하는 패키지 입니다. ^^

  • Sang Hyuen Lee

    통틀어 프로그램 왕초보입니다. 그런데 수업때문에 ‘R’을 이용하여 페이스북의 패이지를 크롤링하고 가독성있게 시각화 해야합니다.
    install.packages(‘Rfacebook’)
    library(Rfacebook)
    fb_oauth=fbOAuth(app_id=’ ‘,app_secret = ‘ ‘,extended_permissions = FALSE)
    getUsers(‘me’,token=fb_oauth)
    getPage(page=’bisang2016′,token=fb_oauth,n=30)

    구글링해서 어찌어찌 위 수식데로 페이스북의 특정url을 불러오는데 까진 성공했는데…이후 view등으로 간단하게 나마 시각화(가독성 있게)하는 방법이 안됩니다.
    예) view(facebook.data)는 에러가 발생 합니다.
    이후 할수있는 방법 좀 부탁 드립니다.

  • Pingback: 딥러닝 한글 자동띄어쓰기 모형 성능 향상 및 API 업데이트 | from __future__ import dream()

  • hellosemo

    안녕하세요. 좋은 라이브러리 감사합니다! 근데 글자수 제한이 있는 것 같네요ㅠ

  • 200글자 제한이 있습니다. 제한을 둔건 로직상 200글자 이상 들어올 경우 잘라서 프로세싱해야 되는데, 어떠한 기준으로 자를 것인지가 매우 자의적일 것이기 때문에 이 부분을 사용자들이 판단하게 하기 위함입니다. 제한을 하기 위한 제한이 아닙니다. ^^;