@PyCon Korea 2014
NLTK 덕에 파이썬으로 자연어처리를 하는 것이 편리해졌다. 단, 한국어만 분석하려하지 않는다면. 파이썬으로 한국어를 분석할 수는 없을까? 국문, 영문, 중문 등 다양한 문자가 섞여 있는 문서는 어떻게 분석을 할 수 있을까?
이 발표에서는 자연어처리의 기초적인 개념을 다룬 후, NLTK 등의 자연어처리 라이브러리와 한국어 분석을 위해 개발중인 KoNLPy를 소개한다. 또, 파이썬으로 한국어를 분석할 때 유용한 몇 가지 트릭을 공유한다.
http://konlpy.readthedocs.org
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
도입
AI Chatbot 소개
Chatbot Ecosystem
Closed vs Open Domain
Rule Based vs AI
Chat IF Flow and Story Slot
AI기반의 학습을 위한 Data 구성 방법
Data를 구하는 법 / Train을 위한 Word Representation
Data의 구성 / Data Augmentation(Intent, NER)
자연어처리 위한 AI 적용 방안
Intent (Char-CNN) / QnA (Seq2Seq)
Named Entity Recognition (Bi-LSTM CRF) / Ontology (Graph DB)
Chatbot Service를 위한 Architecture 구성
Chatbot Architecture
NLP Architecture
Web Service Architecture
Bot builder / Chatbot API
Test Codes for Chatbot
실무에서 발생하는 문제와 해결 Tips
Ensemble and voting / Trigger / Synonym(N-Gram)
Tone Generator / Parallel processing / Response Speed
마무리
[설명 코드]
Text Augmentation / Slot Bot / QA Bot / Graph DB / Response Generator
RoFormer: Enhanced Transformer with Rotary Position Embeddingtaeseon ryu
안녕하세요 딥러닝 논문읽기 모임입니다 오늘 업로드된 논문 리뷰 영상은 올해 발표된, RoFormer: Enhanced Transformer with Rotary Position Embedding 라는 제목의 논문입니다.
해당 논문은 Rotary Position Embedding을 이용하여 Transformer를 개선 시킨 논문입니다. Position embedding은 Self attention의 포지션에 대한 위치를 기억 시키기 위해 사용이 되는 중요한 요소중 하나 인대요, Rotary Position Embedding은 선형대수학 시간때 배우는 회전행렬을 사용하여 위치에 대한 정보를 인코딩 하는 방식으로 대체하여 모델의 성능을 끌어 올렸습니다.
논문에 대한 백그라운드 부터, 수식에 대한 디테일한 리뷰까지,
논문 리뷰를 자연어 처리 진명훈님이 디테일한 논문 리뷰 도와주셨습니다!
ChatGPT is a natural language processing technology developed by OpenAI. This model is based on the GPT-3 architecture and can be applied to various language tasks by training on large-scale datasets. When applied to a search engine, ChatGPT enables the implementation of an AI-based conversational system that understands user questions or queries and provides relevant information.
ChatGPT takes user questions as input and generates appropriate responses based on them. Since this model considers the context of previous conversations, it can provide more natural dialogue. Moreover, ChatGPT has been trained on diverse information from the internet, allowing it to provide practical and accurate answers to user questions.
When applying ChatGPT to a search engine, the system searches for relevant information based on the user's search query and uses ChatGPT to generate answers to present along with the search results. To do this, the search engine provides an interface that connects with ChatGPT, allowing the user's questions to be passed to the model and the answers generated by the model to be presented alongside the search results.
RLKorea의 프로젝트인 피지여행에서 진행한 내용을 정리한 것입니다. 피지여행은 DeepRL에서 중요한 Policy Gradient를 쭉 정리해보는 프로젝트입니다. PG의 처음 시작인 REINFORCE 부터 현재 새로운 baseline이 된 PPO까지 이론과 코드를 함께 살펴봅니다.
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
도입
AI Chatbot 소개
Chatbot Ecosystem
Closed vs Open Domain
Rule Based vs AI
Chat IF Flow and Story Slot
AI기반의 학습을 위한 Data 구성 방법
Data를 구하는 법 / Train을 위한 Word Representation
Data의 구성 / Data Augmentation(Intent, NER)
자연어처리 위한 AI 적용 방안
Intent (Char-CNN) / QnA (Seq2Seq)
Named Entity Recognition (Bi-LSTM CRF) / Ontology (Graph DB)
Chatbot Service를 위한 Architecture 구성
Chatbot Architecture
NLP Architecture
Web Service Architecture
Bot builder / Chatbot API
Test Codes for Chatbot
실무에서 발생하는 문제와 해결 Tips
Ensemble and voting / Trigger / Synonym(N-Gram)
Tone Generator / Parallel processing / Response Speed
마무리
[설명 코드]
Text Augmentation / Slot Bot / QA Bot / Graph DB / Response Generator
RoFormer: Enhanced Transformer with Rotary Position Embeddingtaeseon ryu
안녕하세요 딥러닝 논문읽기 모임입니다 오늘 업로드된 논문 리뷰 영상은 올해 발표된, RoFormer: Enhanced Transformer with Rotary Position Embedding 라는 제목의 논문입니다.
해당 논문은 Rotary Position Embedding을 이용하여 Transformer를 개선 시킨 논문입니다. Position embedding은 Self attention의 포지션에 대한 위치를 기억 시키기 위해 사용이 되는 중요한 요소중 하나 인대요, Rotary Position Embedding은 선형대수학 시간때 배우는 회전행렬을 사용하여 위치에 대한 정보를 인코딩 하는 방식으로 대체하여 모델의 성능을 끌어 올렸습니다.
논문에 대한 백그라운드 부터, 수식에 대한 디테일한 리뷰까지,
논문 리뷰를 자연어 처리 진명훈님이 디테일한 논문 리뷰 도와주셨습니다!
ChatGPT is a natural language processing technology developed by OpenAI. This model is based on the GPT-3 architecture and can be applied to various language tasks by training on large-scale datasets. When applied to a search engine, ChatGPT enables the implementation of an AI-based conversational system that understands user questions or queries and provides relevant information.
ChatGPT takes user questions as input and generates appropriate responses based on them. Since this model considers the context of previous conversations, it can provide more natural dialogue. Moreover, ChatGPT has been trained on diverse information from the internet, allowing it to provide practical and accurate answers to user questions.
When applying ChatGPT to a search engine, the system searches for relevant information based on the user's search query and uses ChatGPT to generate answers to present along with the search results. To do this, the search engine provides an interface that connects with ChatGPT, allowing the user's questions to be passed to the model and the answers generated by the model to be presented alongside the search results.
RLKorea의 프로젝트인 피지여행에서 진행한 내용을 정리한 것입니다. 피지여행은 DeepRL에서 중요한 Policy Gradient를 쭉 정리해보는 프로젝트입니다. PG의 처음 시작인 REINFORCE 부터 현재 새로운 baseline이 된 PPO까지 이론과 코드를 함께 살펴봅니다.
"파이썬 성능 잠재력을 끌어내는 실용적인 개발 전략서"
미샤 고렐릭,이안 오스발트 지음 / 김영근,오현석 옮김 | 한빛미디어 | 2016년 8월 | 30,000원
★ 파이썬 3 대응
★ 프로토타이핑에서 실무 운영까지 살아가는 파이썬 코드의 비밀
아이디어 무한경쟁이 펼쳐지는 대(大)스타트업 시대! 높은 생산성으로 유명한 파이썬은 최우선 고려사항이다. 한 가지, 컴파일 언어 대비 느린 성능 때문에 성공한 서비스나 성능이 중요한 기능은 컴파일 언어로 다시 작성하곤 한다. 하지만 실무 운영까지 파이썬 코드를 계속 이어가는 방법이 있다면?
이 책은 파이썬을 둘러싼 설계와 작동 원리를 설명하고 이에 기반한 실용적인 구현 전략을 소개한다. 멀티코어 아키텍처와 클러스터의 이점을 활용하려면 어떻게 해야 하는가? 안정성을 잃지 않고 확장하는 방법은 무엇인가? 여러분은 이에 대한 명확한 해법을 찾고 방대한 소셜 데이터까지도 눈부신 속도로 처리해내는 파이썬 코드를 얻게 될 것이다.
★ 주요 내용
● numpy, Cython, 프로파일러 활용하기
● 파이썬의 시선으로 바라보는 컴퓨터 아키텍처 이해하기
● CPU 시간과 메모리 사용량을 프로파일링하여 병목 지점 찾기
● 상황에 맞는 컬렉션으로 효율적인 프로그램 작성하기
● 행렬과 벡터 연산 가속하기
● 네이티브 코드로 컴파일하기
● 대량의 I/O와 연산 동시 수행하기
● 원격 클러스터로 병렬 처리하기
● 적은 메모리로 대규모 데이터 처리하기
스티븐 블랙히스, 앤서니 존스 지음 | 오현석 옮김 | 한빛미디어
함수형 반응형 프로그래밍에 관한 최초의 종합 안내서
프로그램은 ‘어떻게’가 아니라 ‘무엇’을 기술하는 선언적인 문서여야 한다는 주장을 받아들이는 사람이 점점 늘고 있다. 이런 흐름은 함수형 언어의 부흥으로 이어졌다. 함수형 언어로는 프로그램을 더 선언적인 방식으로 작성할 수 있고, 이를 이벤트 처리에 결합한 것이 함수형 반응형 프로그래밍(FRP)이다. 지난 수십 년 동안 이벤트 처리 인프라를 책임진 관찰자 패턴은, 한편으로는 버그의 온상이 되기도 했다. FRP는 관찰자 패턴의 잠재적 버그 원인을 근본적으로 차단하여 더 복잡한 시스템으로 쉽게 확장할 수 있도록 해준다.
이 책의 저자는 FRP 프레임워크인 소듐(Sodium)의 창시자로서, FRP의 기초부터 기존 프로젝트를 점진적으로 FRP 시스템으로 탈바꿈시키는 방법까지 친절히 안내한다.
PyCon Korea 2019 키노트 발표 자료입니다.
슬라이드쉐어 아직도 이러네요 ㅠㅠ 아래 스피커덱 링크로 가주시거나 다운로드 받으시면 잘 보여요 ㅠㅠhttps://speakerdeck.com/e9t/paisseongwa-keomyunitiwa-hangugeo-opeundeiteo
2017년 04월 14일 금요일 "유니코드(Unicode)로 오픈소스에 기여하기" 발표 자료입니다.
"Supporting Korean and Unicode at Open Source Projects."
Emocon 2017 S/S[이모콘 2017] 발표 슬라이드
Linux Desktop Environment인 GNOME, KDE의 문자표 GNOME gucharmap, KDE kcharselect에 한자와 한글의 지원을 해보면서 소스코드 커밋에 대한 커미터의 승인과 거절이 되며 컨트리뷰터(contributor)가 되는 과정 및 오픈소스에 유니코드 및 한글에 대한 소스코드 기여하기 이후의 저의 개발목표에 대하여 발표하였습니다.
Homepage: http://emocon.weirdx.io/2017ss/
I'm Korean, Interesting CJKV Language, GNOME&KDE Contributor.
1. 자바, 미안하다!
PyCon Korea 2014
Korean NLP with Python
Lucy Park (박은정)
KoNLPy on GitHub
1 / 33
2. 개요 NLTK 덕에 파이썬으로 자연어처리를 하는 것이 편리해졌다.
단, 한국어만 분석하려하지 않는다면.
파이썬으로 한국어를 분석할 수는 없을까?
국문, 영문, 중문 등 다양한 문자가 섞여 있는 문서는 어떻게 분
석할 수 있을까?
이 발표에서는 자연어처리의 기초적인 개념을 다룬 후, NLTK 등
의 자연어처리 라이브러리와 한국어 분석을 위해 개발중인
KoNLPy를 소개한다. 또, 파이썬으로 한국어를 분석할 때 유용
한 몇 가지 트릭을 공유한다.
KoNLPy docs: http://konlpy.readthedocs.org
Slides URL: http://www.lucypark.kr/slides/2014-pyconkr
Slides code: https://gist.github.com/e9t/546faa368424e04e25c7
2 / 33
3. 박은정
(a.k.a.
lucypark,
echojuliett, e9t)
개발하는 데이터 분석가.
서울대학교 데이터마이닝 센터 박사과정
"대한민국 정치의 모든 것" 만드는 팀포퐁 멤버
Just another yak shaver...
11:49 <@sanxiyn> 또다시 yak shaving의 신비한 세계
11:51 <@sanxiyn> yak shaving이 뭔지 다 아시죠?
11:51 <디토군> 방금 찾아보고 왔음
11:51 <@mana> (조용히 설명을 기대중)
11:51 <@sanxiyn> 나무를 베려고 하는데
11:52 <@sanxiyn> 도끼질을 하다가
11:52 <@sanxiyn> 도끼가 더 잘 들면 나무를 쉽게 벨텐데 해서
11:52 <@sanxiyn> 도끼 날을 세우다가
11:52 <@sanxiyn> 도끼 가는 돌이 더 좋으면 도끼 날을 더 빨리 세울텐데 해서
11:52 <@sanxiyn> 좋은 숫돌이 있는 곳을 수소문해 보니
11:52 <@mana> …
11:52 <&홍민희> 그거 전형적인 제 행동이네요
11:52 <@sanxiyn> 저 멀이 어디에 세계 최고의 숫돌이 난다고
11:52 <@sanxiyn> 거기까지 야크를 타고 가려다가
11:52 <@mana> 항상하던 짓이라서 타이핑을 할 수 없었습니다
11:52 <@sanxiyn> 야크 털을 깎아서…
11:52 <@sanxiyn> etc.
3 / 33
11. 형태소
언어의 최소 의미 단위.
* 영어는 tokenizing, stemming으로 충분한 경우도 있지만 결국 마찬가지. ex: "unbreakable"=="un-"+"break"+"-able"
11 / 33
12. 형태소분석 with C/C++ & Java
corpus linguistics == 언어 분석을 computational하게 해보자!
1995년, KTS를 시작으로 국내외에서 여러 "오픈소스" 형태소 분석기가 개발됨
형태소 분석기를 만든다 == 알고리즘 구현 + 방대한 코퍼스 기반으로 사전 구축
한마디로, 정말 대단한 작업
* 형태소 분석기 링크들은 여기에: http://konlpy.readthedocs.org/en/latest/references
12 / 33
14. 그러한 관점에서
누구나 쉽게 NLP를 할 수 있게 해준 패키지 두 개:
KoNLP, for R
NLTK, for Python
14 / 33
15. KoNLP, for R https://github.com/haven-jeon/KoNLP
한나눔 형태소 분석기 R interface
세종계획한국어 코퍼스, 사전 등을 마련한 10년 계획 정부사업의 확장적 사용
그 외 NLP를 편리하게 하는 각종 함수 구현
많은 down-to-earth 예제를 담은 documentation
"Python으로도 이런게 있으면 좋겠다!" 이름에도 내포돼있듯 KoNLPy의 가장 큰 inspiration!
15 / 33
16. NLTK, for Python http://nltk.org
Porter, snowball, Lancaster 등 다양한 stemming 알고리즘 포함
그 외 chunking, NER, classification 알고리즘 포함
50개가 넘는 (주로 영어지만 다양한 언어의) 코퍼스 포함
역시 풍부한 문서
(Natural) language free, platform free, and free
"한국어만 지원되면 정말 좋겠다!"
* NLTK는 Language-free한 속성 때문에 파이썬 한국어 NLP에도 유용하게 이용할 수 있습니다. (예시: Collocation 찾기)
16 / 33
17. 파이썬으로 형태소 분석,
한국어 NLP 할 수 있으면 정말 좋겠네
1. 형태소 분석기 뿐 아니라, 더 많은 자연어 처리 기능 & 코퍼스를 포괄하면서
2. 여러 형태소 분석기 중에서는 목적/취향에 맞는 것을 쉽게 선택할 수 있게
3. 누구나 참여할 수 있는, 여과없는 오픈소스를
4. 상세한 예제를 담은 문서와 함께
5. 가장 Pythonic 한 형태로
(...로 만드는 것이 "목표".)
17 / 33
18. KoNLPy, for Python http://konlpy.rtfd.org
"Standing on the shoulders of giants"
2014년 7월, 한나눔 형태소 분석기만 담아 첫 릴리즈
2014년 8월, 꼬꼬마, MeCab-ko 형태소 분석기도 포함하여 v0.3.0 릴리즈
국회 의안 등 재사용/재배포가 가능한 공문서 위주로 toying data 추가
그 외 각종 튜토리얼, konlpy.utils.pprint 등 편리한 함수 추가
GitHub을 통해 누구나 논의와 개발에 참여할 수 있습니다!
18 / 33
24. 형태소 분석 모듈 간 성능 비교
형태소 분석기는 속도, 메모리 사용, 정확도 등으로 성능 평가
One-size-fits-all 이라기보다는 서로 장단점이 있는 경우가 많음
알고리즘 뿐 아니라 사전의 영향도 매우**2 큼
자신의 목적/취향에 맞는 분석기+사전 조합을 사용
* Warning!
(1) 형태소 분석기 간 직접적인 비교가 아니라, KoNLPy 내부 모듈 간 비교입니다.
(2) POS tagging은 형태소 분석과 구분됩니다. 자세한 설명은 구글신께 양보드립니다 :)
24 / 33
26. 예제: 워드클라우드 그리기
목적: 파이썬만으로 웹문서에서 중요한 명사를 뽑아 워드클라우드로 그리기!
* 코드는 지면상 여기에서: http://konlpy.readthedocs.org/en/latest/examples/wordcloud/ (재밌는 예제들도 더 있어요!)
26 / 33
27. 이걸 응용해서 만든 것이:
http://pokr.kr/person/1958194
27 / 33
28. Future works for KoNLPy
1. 사전 interface 통일
2. konlpy.download(): 코퍼스, 사전 등 data file을 소스코드에서 분리
3. GCJ 등을 활용해서 JVM을 따로 구동하지 않는 방법 고려
4. Python3 support
5. 한국어 documentation?
28 / 33
30. 몇 가지 트릭
한글 파일 읽기: "Decode early, encode late"
>>> with open('somefile.txt', 'r') as f:
... doc = f.read().decode('utf-8')
>>> import codecs
>>> codecs.open('somefile.txt', encoding='utf-8')
sublee님의 Hangulize
>>> from hangulize import hangulize
>>> print hangulize('Guido van Rossum', 'nld')
히도 판로쉼
30 / 33
31. 몇 가지 트릭
문자의 정체 확인하기
>>> from unicodedata import name
>>> print '%s, %s, %s' % (name(u"ㆍ"), name(u"․"), name(u"・"))
HANGUL LETTER ARAEA, ONE DOT LEADER, HALFWIDTH KATAKANA MIDDLE DOT
>>> "・".decode("unicode-escape")
u'xefxbdxa5'
>>> ord(u"・"), repr(u"・")
(65381, "u'uff65'")
특수문자를 제외하고 어절을 얻고 싶은 경우
>>> import regex
>>> regex.findall(ur'p{Hangul}+', u'다람쥐, 헌 쳇바퀴에 타고파.')
[u'ub2e4ub78cuc950', u'ud5cc', u'uccc7ubc14ud034uc5d0', u'ud0c0uace0ud30c']
31 / 33
32. 몇 가지 트릭
한글 romanize하기
>>> from unidecode import unidecode
>>> unidecode(u'파이콘')
'paikon'
한자, 한글, 영문가 섞여 있는 경우
Multilingual NLP에서 제안하는 다양한 접근법이 있습니다.
간단한 꼼수 한 가지는: "한자 전처리, 영문 후처리"
한자는 transliterate하고 (ex: '丁新闻' -> 정신문)
한국어 처리를 한 후에 (ex: POS tagging)
영문으로 분류된 tag에 한해 따로 stemming 등을 거침
32 / 33