Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

한글 언어 자원과 R: KoNLP 개선과 활용

6,948 views

Published on

RUCK 2016 District Jeju - 전희원(SK 텔레콤)

Published in: Data & Analytics

한글 언어 자원과 R: KoNLP 개선과 활용

  1. 1. KoNLP 개선과 활용 SKT 데이터 분석가/KoNLP 개발자 전희원
  2. 2. 이들의 공통점? • 워드 클라우드 예제 • 안철수 교수 대선 출마 선언문 텍스트 요약 • 국정원 의심 계정 트윗 분석 • 단어간의 연관 관계 분석 • 북한 신년사 비교 예제를 통한 텍스트 분석의 이해 • 대하드라마 정도전 분석 사례 • 한국사회의 성별갈등을 데이터로 알아보았다. • 학술 연구(교육, 사회, 정치학 관련 ) • https://scholar.google.co.kr/scholar?q=KoNLP • 책 • 데이터 시각화 (허명회 저) • R로하는 데이터 시각화 (전희원 저) • R까기, R라뷰(서진수 저) • 신입 탐정의 데이터 분석 입문 (이시다 모토히로 저) • 소프트웨어 • KoNLPy • http://konlpy-ko.readthedocs.io/ko/v0.4.3/ • Rtextrankr • https://cran.r-project.org/web/packages/Rtextrankr/index.html
  3. 3. KoNLP : Korean NLP Package
  4. 4. 한글 처리의 특수성 • 자연어 처리는 대상어에 따라 분석 방식이 상당히 달라진다. • 한국어 • 1개 이상의 형태소가 한 어절을 이루고 있다. • 형태소(morpheme) : 더 이상 분석하면 의미를 잃어버리는 말의 단위 예) 마을(village) -> 마 + 을 (더 이상 의미가 없어진다.) • 형태소 분석의 모호성 • 감기는: (N 감기)+(J 는), (V 감)+(E 기)+(J 는), (V 감기)+(E 는), ... • 형태소 분석의 필요성 • 최소 어절의 정규화 • 감기는, 감기고, 감기어…. -> 감기 로 정규화 • 검색 서비스, 기계번역, 스팸필터 등 텍스트 기반의 모든 서비스에는 반드시 필요한 과정
  5. 5.  통계적 품사 태깅  한 문장을 이루는 어절열 w1,n이 주어졌을 때, 가장 확률이 높은 태그열 t1,n을 구 함  일반적인 통계 기반 모델에서 tag의 확률  이전의 history에 대한 조건부 확률로 구함  현실적으로는 전체 history에 대해 조건부확률을 구하는 것이 불가능 ∴ n-gram 모델을 도입하여 국부적인 문맥(local context)을 이용  HMM ),(maxarg )( ),( maxarg )|(maxarg)( ,1,1 ,1 ,1,1 ,1,1,1 ,1,1 ,1 nn tn nn t nn t n wtP wP wtP wtPwT nn n   ),|( 1,1,1 qqq twtP
  6. 6. KoNLP KoNLP 구조 한나눔 형태소 분석 라이브러리 for KoNLP 한글 코퍼스 분석 도구 • KoNLP에 최적화 시킨 한나눔 형태소 분석기 • 문장 분리기, 부적합 어절 필터 등 • 대용량 사전 로딩 가능 • Concordance, Mutual Information 등 System 사전 Sejong NIADic Dictionary Interface tools From : 한나눔 형태소 분석기 사용자 매뉴얼
  7. 7. KoNLP : Korean NLP Package • R 패키지로는 유일한 한글 텍스트 전처리 도구 • openNLP, RKEA, Snowball 등 영문 전용 텍스트 전처리 도구 위주 • 라이브러리로 제공하는 기존 형태소 분석기와는 다르게 …. • 한글 텍스트 분석에 자주 쓰이는 기능 위주 인터페이스 제공 • 한글 분석에 대해 특별한 배경 지식 없이 간단한 함수로 사용가능 • 형태소 분석 및 POS Tagging 결과를 튜닝할 수 있는 사용자 사전 입력 인터페이스 제공 • 연구 분야별 사전 적용 가능, 연구자들의 활용도 높음 • 현재 시스템사전(28만) , 세종사전(8만), NIADic(93만) 사전을 제공하고 있음.
  8. 8. KoNLP v.0.80.0 개선 포인트 기존의 버그 수정/개선 빈번한 사전 데이터 호출로 인한 out of memory 대기큐로 인한 Infinite loop 현상 대용량(100만 이상 형태소) 사전 적용 메모리 사용 효율 고도화 저사양 유저들도 고품질의 사전을 활용할 수 있게 유연한 사전 활용 기반 제공 텍스트 전처리 플러그인 개발 문장 경계 인식 비정상 어절 필터 띄어쓰기 플러그인
  9. 9. OutofMemory! • 비효율적인 메모리 관리로 인한 OutofMemory 빈번 • 100만 단어 이상의 사전을 로딩하기 위해서 해결해야 되는 문제 • 개선을 통해 저사양 PC에서도 전체 130만 단어를 모두 로딩 후 분석 가능 Total: 344.3 MB Total: 176.6 MB 갤럭시S5 CPU
  10. 10. Slow?!  느림 SimplePos09() -> SimplePos22() -> extractNoun()  빠름 extractNoun() -> extractNoun() -> extractNoun()  동일 함수를 여러 번 구동하는 사용패턴에 최적화
  11. 11. More dictionary and Category!  NIADic을 통한 36만 -> 130만 형태소 사전 보강  우리말샘 사전(58만), 인사이터 사전(35만)
  12. 12. 우리말샘 인사이터
  13. 13. • 40개 -> 82개 어절 단위 형태소 • 기존 2배 이상의 형태소 후보군 도출
  14. 14. Exporting Dictionary • 형태소 사전의 txt 파일 다운로드 인터페이스 제공 • 타 형태소 분석기에 사전 데이터 활용 가능
  15. 15. 문장 경계 인식 플러그인
  16. 16. 자동 띄어쓰기(개발중) 75만 문장을 기반으로 학습된 띄어쓰기 엔 진 (한국일보 코퍼스, 세종 코퍼스..) 유니그램, 바이그램 HMM
  17. 17. Etc  useNIAdic()  Support Scala plugins  SQLite based dictionary management  Solving infinite wait of results with abnormal sentence.  Adding Hangul vignette
  18. 18. Schedule ~ 11.20 KoNLP v.0.80.0 CRAN 등록 패키지 용량 이슈, vignette 한글 이슈 등등 ~ 12.05 자동 띄어쓰기 교정 플러그인 구현/적용 사용자 정의 사전 강제 적용 옵션 구현 ~ RNN POS Tagger plugins
  19. 19. How to use KoNLP • How to Install • To install from CRAN • Install.package(“KoNLP”) • To install from github • Install.package(“devtools”) • devtools::install_github(“haven-jeon/KoNLP”) • Functions • vignette(“KoNLP-API”)
  20. 20. KoNLP v0.80.0 Tutorial
  21. 21. Q&A • https://github.com/haven-jeon/KoNLP • https://github.com/haven-jeon/Sejong • https://github.com/haven-jeon/NIADic

×