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
4. 한글 처리의 특수성
• 자연어 처리는 대상어에 따라 분석 방식이 상당히 달라진다.
• 한국어
• 1개 이상의 형태소가 한 어절을 이루고 있다.
• 형태소(morpheme) : 더 이상 분석하면 의미를 잃어버리는 말의 단위
예) 마을(village) -> 마 + 을 (더 이상 의미가 없어진다.)
• 형태소 분석의 모호성
• 감기는: (N 감기)+(J 는), (V 감)+(E 기)+(J 는), (V 감기)+(E 는), ...
• 형태소 분석의 필요성
• 최소 어절의 정규화
• 감기는, 감기고, 감기어…. -> 감기 로 정규화
• 검색 서비스, 기계번역, 스팸필터 등 텍스트 기반의 모든 서비스에는
반드시 필요한 과정
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. KoNLP
KoNLP 구조
한나눔 형태소 분석
라이브러리 for KoNLP
한글 코퍼스 분석 도구
• KoNLP에 최적화 시킨 한나눔 형태소 분석기
• 문장 분리기, 부적합 어절 필터 등
• 대용량 사전 로딩 가능
• Concordance, Mutual Information 등
System 사전
Sejong NIADic
Dictionary Interface tools
From : 한나눔 형태소 분석기 사용자 매뉴얼
7. KoNLP : Korean NLP Package
• R 패키지로는 유일한 한글 텍스트 전처리 도구
• openNLP, RKEA, Snowball 등 영문 전용 텍스트 전처리 도구 위주
• 라이브러리로 제공하는 기존 형태소 분석기와는 다르게 ….
• 한글 텍스트 분석에 자주 쓰이는 기능 위주 인터페이스 제공
• 한글 분석에 대해 특별한 배경 지식 없이 간단한 함수로
사용가능
• 형태소 분석 및 POS Tagging 결과를 튜닝할 수 있는 사용자 사전
입력 인터페이스 제공
• 연구 분야별 사전 적용 가능, 연구자들의 활용도 높음
• 현재 시스템사전(28만) , 세종사전(8만), NIADic(93만) 사전을
제공하고 있음.
8. KoNLP v.0.80.0 개선 포인트
기존의 버그 수정/개선
빈번한 사전 데이터 호출로 인한 out of memory
대기큐로 인한 Infinite loop 현상
대용량(100만 이상 형태소) 사전 적용
메모리 사용 효율 고도화
저사양 유저들도 고품질의 사전을 활용할 수 있게
유연한 사전 활용 기반 제공
텍스트 전처리 플러그인 개발
문장 경계 인식
비정상 어절 필터
띄어쓰기 플러그인
9. OutofMemory!
• 비효율적인 메모리 관리로 인한 OutofMemory 빈번
• 100만 단어 이상의 사전을 로딩하기 위해서 해결해야 되는 문제
• 개선을 통해 저사양 PC에서도 전체 130만 단어를 모두 로딩 후 분석 가능
Total: 344.3 MB Total: 176.6 MB
갤럭시S5
CPU
10. Slow?!
느림
SimplePos09() -> SimplePos22() -> extractNoun()
빠름
extractNoun() -> extractNoun() -> extractNoun()
동일 함수를 여러 번 구동하는 사용패턴에 최적화
11. More dictionary and Category!
NIADic을 통한 36만 -> 130만 형태소 사전 보강
우리말샘 사전(58만), 인사이터 사전(35만)
17. Etc
useNIAdic()
Support Scala plugins
SQLite based dictionary management
Solving infinite wait of results with abnormal sentence.
Adding Hangul vignette
18. Schedule
~ 11.20
KoNLP v.0.80.0 CRAN 등록
패키지 용량 이슈, vignette 한글 이슈 등등
~ 12.05
자동 띄어쓰기 교정 플러그인 구현/적용
사용자 정의 사전 강제 적용 옵션 구현
~
RNN POS Tagger plugins
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”)