PyCon Korea 2019 키노트 발표 자료입니다.
슬라이드쉐어 아직도 이러네요 ㅠㅠ 아래 스피커덱 링크로 가주시거나 다운로드 받으시면 잘 보여요 ㅠㅠhttps://speakerdeck.com/e9t/paisseongwa-keomyunitiwa-hangugeo-opeundeiteo
2. 박은정 a.k.a. lucypark, echojuliett, e9t
• 기계번역을 하는 머신러닝 엔지니어
• 데이터로 지식의 장벽을 낮추고 싶은 사람
• Yak shaver
2
3. 때는 2019년 5월
• 기회가 된다면 하고 싶은 말이 있었어!
• "제안해주셔서 감사합니다! 어떤 얘기를 해야할지 확신이 들지는 않지만 유
익한 얘기를 할 수 있도록 준비해볼게요."
• 발표까지 3개월이나 있으니 준비할 시간도 충분하다!
3
4. 꼼꼼한 계획
• 한국어 NLP의 오픈소스/데이터에 대한 서베이를 해서, 현황을 공유하고
다 같이 발전시켜나가자고 제안해야겠어!
• 키노트라면 정보를 전달하기보다는 포용inclusion, 다양성diversity, 커뮤니티와
같은 가치를 부각하는 발표면 좋을 것 같아
• 그런데 또 파이콘이니까 파이썬에 대한 얘기도 해야지
• 그렇다면 3년만에 konlpy도 좀 업데이트 해볼까? 각종 데이터셋을
konlpy.download에 포함해서 사람들이 쉽게 다운로드 받게 하면 좋을 것
같다!
4
5. 그리고 2019년 8월
• konlpy는 고칠게 너무 많다... 같이 만들어가요!
• 아직 발표자료도 없네... ㅠㅠ
• 다행히 이른 아침의 첫 발표니까 사람이 별로 안올거야...
5
6. 오늘 할 이야기
• 문제 의식 공유
• 커뮤니티에 작게나마 기여할 수 있었던 개인적인 경험 공유 옛날 얘기
• 한국어 오픈데이터 이야기도 조금 주변 사람들은 맨날 들었던 얘기
Image source: Sandra and Woo, Richard's guide to software development, 2012. 6
19. 팀포퐁 http://popong.com
• 예비 디자이너, 개발자, 기획자 등으로 구성된 학생 10여 명
• 기술로써 대한민국 정치를 뒤흔드는게 목표
• 직접 서비스를 만들어보면서 우리가 성장하는 것은 덤! (또는 더 큰 목적)
POPONG = "Public Open POlitical engineeriNG" 19
20. 서비스 프로토타이핑을 하고
당시 핫했던 프로토타이핑 툴 Balsamiq
!
프로토타이핑 과정이 궁금하면 여기로 가주세요. 20
22. 매주 토요일마다 모여 기획과 토론과 스터디
대다수가 입법과정 대해 아는게 하나도 없었거든요
그렇게 2번의 크리스마스를 함께 맞이한 후...
22
23. 웹서비스 "대한민국 정치의 모든 것" 탄생 이것 때문에 크롤링도 열심히 하고
아쉽게도 지금은 효용 대비 비용이 많이 지출된다고 판단해서 2018년 12월부터 out of service 하지만 팀포퐁 3기가 다시 심폐소생 중이라 다시 세상에 나올 수도 있어요! 23
28. 국회의원/의안 데이터 REST API
• 사실 웹서비스는 쇼케이스
• 이게 원래 진행하려던 프로젝트
• 더 많은 사람들이 정치 데이터를 분석하거나
활용해서 서비스를 만들기를 바랬음
아쉽게도 지금은 이것도 out of service고 코드만 남아있지만, 이제는 국회에서 직접 데이터를 제공합니다!
(회의록, 의안, 의원) 28
30. 대한민국 정치를 뒤흔들겠다고 생각한 패기 넘치는 청년들은
• 한편으로는 주변의 작은 사회로부터 인정을 받기도 했지만
• 세상은 그렇게 쉽게 변하는게 아니라는 것을 배웠고 서버 비용이 비싸다는것도 알게 되고
• 무엇보다도 소중한 좋은 친구를 얻고
30
31. 그 어떤 경험보다 값진 좋은 개발 문화를 배웠습니다
• 문서화 해주세요. 팀 내외와 소통하는 방법
• Git의 좋은 프랙티스는 이거래요. 팀 내외와 소통할 때 지키면 좋은 매너
• 새 프로젝트에서는 Flask라는 프레임워크를 써볼까요? 새로운 도구를 익히는 방법
• 아이디어는 working prototype으로 보여주세요. 탁상공론을 벗어나 팀을 움직이는 방법
• 그 코드/데이터 라이센스가 뭐에요? 타인의 저작물을 존중하는 자세
31
36. 때는 2014년
• 제 전공이 원래 텍스트랑은 상관없고 숫자를 분석하는 데이터마이닝
• 학교 프로젝트를 수행하던 중 한국어 분석을 편리하게 하기 위해 시작
• 한국어 분석을 하려면 일단 토크나이징을 해야하는데 어떻게 하지?
• 형태소 분석을 하면 된다는데 오픈소스는 있나?
• 몇 가지가 있는 것 같은데 성능은 어떻게 다르지?
36
37. Enter KoNLPy
>>> from konlpy.tag import Okt
>>> okt = Okt()
>>> okt.pos('만나서 반가워요!')
[('만나서', 'Verb'), ('반가워요', 'Adjective'), ('!', 'Punctuation')]
• 각종 오픈소스 형태소 분석기를 모음
• nltk 등 다른 라이브러리와 같이 편리하게 쓸 수 있게 인터페이스를 통일
• 한글을 다룰 때 필요한 각종 util을 추가함
37
38. KoNLPy와 첫번째 PyCon KR
• 당시 파이썬 스승: "파이콘이 한국에서 처음 열린대!"
• 나: "나와 비슷한 불편함을 겪고 있는 사람이 많지 않을까?"
• 만들던 걸 잘 패키징해서 공개해보자!
38
40. 사람들은 왜 KoNLPy를 사용했을까?
• 초보자: 사용법이 쉬워서? 더 쉬우면 좋겠네요
• 학생: 보고 따라할 예시가 있어서?
• 실무자: 다양한 구현체 간 성능 비교가 편해서?
• 외국인: 문서가 영어로도 쓰여 있어서?
• 환경적 요인: 이후 파이썬이 국내외에서 한창 인기몰이를 해서?
40
41. 내가 필요한 도구는
내가 만들어 공유한다
그러면 생각지도 못한 도움을 주고 받을 수 있다!
41
42. 이듬해에 두번째 PyCon KR
• 개인적 동기: 첫 파이콘 경험이 너무 좋았다
• 당시 학계에서는 representation learning이 핫해진 시점
• word2vec, doc2vec을 국내의 파이썬 커뮤니티에 소개해볼까?
• 작년에 오픈소스로 KoNLPy를 공개했지만 막상 토이데이터가 별로 없다.
일단 한국어로 된 데이터셋을 만들어보자!
42
43. 한국어 영화평 데이터 nsmc
$ head ratings_train.txt
id document label
9976970 아 더빙.. 진짜 짜증나네요 목소리 0
3819312 흠...포스터보고 초딩영화줄....오버연기조차 가볍지 않구나 1
10265843 너무재밓었다그래서보는것을추천한다 0
9045019 교도소 이야기구먼 ..솔직히 재미는 없다..평점 조정 0
6483659 사이몬페그의 익살스런 연기가 돋보였던 영화!스파이더맨에서 늙어보이기만 했던 커스틴 던스트가 너무나도 이뻐보였다 1
5403919 막 걸음마 뗀 3세부터 초등학교 1학년생인 8살용영화.ㅋㅋㅋ...별반개도 아까움. 0
7797314 원작의 긴장감을 제대로 살려내지못했다. 0
9443947 별 반개도 아깝다 욕나온다 이응경 길용우 연기생활이몇년인지..정말 발로해도 그것보단 낫겟다 납치.감금만반복반복.. 0
7156791 액션이 없는데도 재미 있는 몇안되는 영화 1
• 주어진 영화평을 긍정 또는 부정으로 분류하는 데이터셋
• Maas et al. 2011의 IMDB 데이터셋(영어)을 벤치마크
43
44. 내가 가진 기술이 대단하지 않아도
커뮤니티에 기여할 수 있다
누구나 무엇이든!
44
49. 한국어 오픈데이터 현황: Sequence classification / labeling
공개시기 이름 목적 크기 라이센스
2007 세종코퍼스 품사태깅 838k sentences CC BY-NC-ND 4.0
2012 KOSAC 감성분류
(감성어 사전도 배포)
7.7k sentences Custom
2015 nsmc 감성 분류 200k sentences
(Train: 150k, Test: 50k)
CC0
(Public Domain)
2016 KoreanNERCorpus NER 3.5k sentences -
2018 nlp-challenge NER 90k sentences -
2018 nlp-challenge SRL 35k sentences -
2018 Question pair Paraphrase detection 7k sentence pairs -
라이센스가 안 적혀 있는 줄은 라이센스가 명시되어 있지 않거나 제가 못 찾은 경우입니다. 49
50. 한국어 오픈데이터 현황: Sequence generation
공개시기 이름 목적 크기 라이센스
2015 JPO patent corpus 기계번역
ja-ko, 특허 도메인
257k
sentence pairs
Custom
(상업적 이용 불가)
2017 Korean parallel corpora 기계번역
ko-{en, fr, ja}
각 언어쌍별
0.7k, 95k, 0.2k
sentence pairs
CC BY-NC-ND 3.0
(상업적 사용 불가)
2018 KSS 음성 합성/인식 12.9k pairs CC BY-NC-SA 4.0
(상업적 이용 불가)
2018 Chatbot data 대화 12k pairs -
2018 OpenSubtitles2018 기계번역
ko-*
1.3m sentence pairs
(For ko-en only)
-
2019 AIHub 한국어-영어 번역 병렬
말뭉치
기계번역
ko-en
16k sentence pairs
(To be 1.6m within 2019)
-
라이센스가 안 적혀 있는 줄은 라이센스가 명시되어 있지 않거나 제가 못 찾은 경우입니다.
AIHub의 경우 라이센스가 명시되어 있지 않지만, "중소기업, 벤처기업, 스타트업, 개인개발자, 연구자" 등이 타겟유저인 정부 사업이므로 CC0 또는 CC BY이지 않을까 추측해봅니다.
또, 제가 기계번역에 관심이 있어서 다른 분야에 비해 상대적으로 더 나열할 수 있는 것 같은데 놓친 좋은 데이터셋이 있다면 awesome-korean-nlp 같은 리스트에 공유해주세요 50
51. 한국어 오픈데이터 현황: Others
공개시기 이름 목적 크기 라이센스
2018 KorQUAD MRC 66k Q/A pairs -
2019? AIHub 기계독해 MRC 450k Q/A pairs -
2019 cc-kedict 한영 사전 13.7k entries CC BY-SA 3.0
2019 kosentences Self-supervised
learning
31m sentences MIT
+ GNU Free
Documentation
+ CC BY-NC-SA
라이센스가 안 적혀 있는 줄은 라이센스가 명시되어 있지 않거나 제가 못 찾은 경우입니다.
이 중 몇 가지는 제가 직접 이용해보지 못했습니다. 51
53. 좋은 사례 1: KorQUAD https://korquad.github.io/
• 충분한 양의 데이터 공개
• 심지어 리더보드까지 공유!
53
54. 좋은 사례 2: KSS https://kaggle.com/bryanpark/korean-single-speaker-speech-...
• 국내 최초의 음성 오픈데이터
• 제법 많은 분량
• 라이센스가 뚜렷하게 명시되어 있어서 무엇을 할 수 있고 없는지가 명확함
54
55. 왜 오픈데이터가 중요한가요?
1. 벤치마크가 될 수 있기 때문!
• ML 모델들은 데이터와 지표가 같아야 모델 간 서로 비교가 가능
• 비교가 가능해지면 기술 발전이 온다
2. 누구나 바로 분석이나 모델링을 시작할 수 있기 때문!
• 프로그래밍에서 reinventing the wheel이 종종 경계의 대상이 되듯
• 모두가 데이터 취득과 정제를 할 필요는 없잖아요
55
56. 데이터를 공개할 때 확인하면 좋은 점
1. 사용자가 바로 다운로드해서 사용할 수 있는가?
• 가급적이면 회원가입, 이용동의 절차 없이 바로 사용할 수 있게 함
2. 원문에 개인정보/저작권 문제는 없는가?
• 오픈데이터는 기술 발전을 위해 매우 중요하지만 개인정보와 저작권도
존중받고 지켜져야 함!
3. 가급적이면 라이센스를 꼭 명시해주세요!
• 이용자의 별도의 문의없이 가능한 것, 불가능한 것을 알리기 위함
56
57. 오픈데이터를 사용할 때 확인하면 좋은 점
1. 데이터가 충분히 큰가? 충분히 의미있는 결과를 낼 수 있는 정도로 충분한가?
2. 라이센스가 무엇인가? 재배포가 가능한가? 상업용으로 이용해도 되는가?
57
58. Call for partipation
• 한국어 NLP 같이 발전시켜요!
• 오픈소스로도, 오픈데이터로도 기여할 수 있습니다
• 오픈소스는 파이썬이어도 좋지만 꼭 파이썬은 아니어도 됩니다
• 오픈데이터는 정부, 기업, 학교 모두 함께해요 물론 개인 개발자도
• 한국어 NLP 말고 다른 재밌는 분야도 많이 기여하고 서로 공유해요!
58