@PyCon Korea 2014
NLTK 덕에 파이썬으로 자연어처리를 하는 것이 편리해졌다. 단, 한국어만 분석하려하지 않는다면. 파이썬으로 한국어를 분석할 수는 없을까? 국문, 영문, 중문 등 다양한 문자가 섞여 있는 문서는 어떻게 분석을 할 수 있을까?
이 발표에서는 자연어처리의 기초적인 개념을 다룬 후, NLTK 등의 자연어처리 라이브러리와 한국어 분석을 위해 개발중인 KoNLPy를 소개한다. 또, 파이썬으로 한국어를 분석할 때 유용한 몇 가지 트릭을 공유한다.
http://konlpy.readthedocs.org
이번 강의에서는 파이썬의 iterator에 대해 알아보겠습니다.
리스트, 집합, 딕셔너리와 같은 타입이나, 문자열은 for - in 구문을 통해서 반복적으로 하나씩 데이터를 꺼내서 처리할 수 있는데, 이와 같이 여러 개의 데이터를 포함한 타입중에서 반복적으로 하나하나 꺼내어 처리가능한 컬렉션이나 Sequence 들을 순환가능(Iterable) 객체라고 합니다.
iterator는 next() 함수를 구현한 객체를 말하며 next() 함수는 순환가능한 객체의 다음 원소를 반환하는 일을 합니다.
파이썬은 list, dict, set, bytes, tuple, range형이 iterable 형 객체입니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬의 주석문의 사용법과 필요성에 대해 살펴보도록 하겠습니다. 주석문은 프로그램의 명령문이 하는 역할을 설명하는 역할을 하며 실행이 되지 않는 문장입니다.
해시 혹은 샵 기호로 읽히는 #를 이용하여 한줄 주석문을 만들 수도 있으며, 작은 따옴포와 큰 따옴표를 이용하여 여러줄 주석문을 만들 수도 있습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
본 강의에서는 함수와 매개변수에 대해 다루어 보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
이번 강의에서는 람다함수에 대해 알아보겠습니다.
앞서 배운 함수를 이용하면 필요한 기능의 재사용이 가능하기 때문에, 함수를 정의한 후 필요할 때마다 호출하여 사용하면 편리한데 이러한 방식으로 프로그램을 하는 방식을 모듈화 프로그래밍 이라고 한다.
그러나 가끔씩은 함수를 만들지 않고 함수화된 기능만을 불러 사용하고자 할 경우가 있는데, 이렇게 하면 프로그램을 단순하게 만들 수 있다.
즉 1회용으로 함수를 만들고 싶은데 def xxx(): 과 같은 이름을 짓는 것이 번거롭게 느껴질 경우에 사용하는 것이 람다함수 혹은 람다표현식이다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
English Title: When REST is unrest, how about GraphQL or gRPC?
본 자료는 GDG DevFest 2020 모각코라네 라이트닝 토크 BE세션 발표자료입니다.
해당 발표는 유튜브에서 시청하실 수 있습니다.
https://www.youtube.com/watch?v=cNffW-YVvVk
본 강의에서는 파이썬의 변수와 식별자, 식별자 이름규칙에 대해 알아보겠습니다.
또한 예제 프로그램을 통해 파이썬 변수를 사용하는 방법을 익혀봅니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
파이썬의 튜플(tuple)은 여러개의 값을 포함하는 자료형으로 리스트와 유사하나 한번 정해진 자료값의 순서를 바꿀 수 없다는 점에서 다릅니다.
또한 튜플은 값의 변경과 삭제가 불가능합니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
유한 상태 변환기 (finite state transducer)를 이용해서 만든 한국어 형태소 분석기 설명입니다.
관련 사이트는 www.rouzeta.com 로 해당 사이트에서 한국어 형태소 분석기를 내려받을 수 있습니다.
해당 슬라이드를 설명한 동영상은 https://www.youtube.com/watch?v=PjqUYvqK8v4 에서 볼 수 있습니다.
본 강의에서는 함수와 매개변수에 대해 다루어 보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
이번 강의에서는 람다함수에 대해 알아보겠습니다.
앞서 배운 함수를 이용하면 필요한 기능의 재사용이 가능하기 때문에, 함수를 정의한 후 필요할 때마다 호출하여 사용하면 편리한데 이러한 방식으로 프로그램을 하는 방식을 모듈화 프로그래밍 이라고 한다.
그러나 가끔씩은 함수를 만들지 않고 함수화된 기능만을 불러 사용하고자 할 경우가 있는데, 이렇게 하면 프로그램을 단순하게 만들 수 있다.
즉 1회용으로 함수를 만들고 싶은데 def xxx(): 과 같은 이름을 짓는 것이 번거롭게 느껴질 경우에 사용하는 것이 람다함수 혹은 람다표현식이다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
English Title: When REST is unrest, how about GraphQL or gRPC?
본 자료는 GDG DevFest 2020 모각코라네 라이트닝 토크 BE세션 발표자료입니다.
해당 발표는 유튜브에서 시청하실 수 있습니다.
https://www.youtube.com/watch?v=cNffW-YVvVk
본 강의에서는 파이썬의 변수와 식별자, 식별자 이름규칙에 대해 알아보겠습니다.
또한 예제 프로그램을 통해 파이썬 변수를 사용하는 방법을 익혀봅니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
파이썬의 튜플(tuple)은 여러개의 값을 포함하는 자료형으로 리스트와 유사하나 한번 정해진 자료값의 순서를 바꿀 수 없다는 점에서 다릅니다.
또한 튜플은 값의 변경과 삭제가 불가능합니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
유한 상태 변환기 (finite state transducer)를 이용해서 만든 한국어 형태소 분석기 설명입니다.
관련 사이트는 www.rouzeta.com 로 해당 사이트에서 한국어 형태소 분석기를 내려받을 수 있습니다.
해당 슬라이드를 설명한 동영상은 https://www.youtube.com/watch?v=PjqUYvqK8v4 에서 볼 수 있습니다.
발표자: 김현중 (서울대 박사과정)
발표일: 2017.9.
개요:
자연어처리에서 학습데이터에 존재하지 않는 단어를 제대로 처리할 수 없는 문제를 미등록단어(out of vocabulary) 문제라고 합니다. 이 문제는 애플리케이션에 따라서 해결책이 다릅니다. 문서 군집화/분류나 기계번역 등의 분야에서는 subwords 기반으로 단어를 표현함으로써 미등록 단어 문제를 우회하고 있습니다. 반면 키워드/연관어 분석, 토픽 모델링과 같은 분석을 위해서는 온전한 형태로 단어를 인식해야 하기에 subwords를 활용할 수 없으며, 미등록단어를 처리할 수 있는 토크나이저/품사판별기가 필요합니다.
그러나 한국어 형태소 분석기들은 말뭉치나 사전을 이용하여 학습을 하기 때문에 미등록단어를 제대로 인식하지 못합니다. 이를 해결하기 위하여 한국어 형태소 분석기들은 사용자 사전 추가 기능을 제공합니다. 하지만 텍스트의 도메인이 바뀔 때마다 각 도메인에 적합한 학습데이터나 사용자 정의 단어 사전을 만드는 일은 매우 고달픈 일입니다.
제가 최근에 작업을 하는 분야는 한국어 자연어처리 과정에서 이러한 수작업을 최소화하기 위한 "비지도학습 기반 자연어처리 방법들"입니다. 좀 더 세부적으로 설명하면 (1) 텍스트에서 통계 기반으로 단어를 추출하고, (2) 이를 이용하여 분석하려는 텍스트 도메인에 가장 적합한 토크나이저를 만듭니다. (3) 또한 신조어가 가장 많이 발생하는 명사의 경우, 토크나이징과 동시에 품사를 추정합니다. (4) 추가적으로, 띄어쓰기 오류를 데이터 기반으로 교정함으로써 (1) ~ (3)의 성능을 높입니다.
이번 테크톡에서는 (1) 위에서 언급된 비지도학습 기반 한국어 자연어처리 연구와, (2) 이를 바탕으로 키워드/연관어 분석을 수행한 사례를 공유합니다.
RNNs are neural networks that can handle sequence data by incorporating a time component. They learn from past sequence data to predict future states in new sequence data. The document discusses RNN architecture, which includes an input layer, hidden layer, and output layer. The hidden layer receives input from the current time step and previous hidden state. Backpropagation Through Time is used to train RNNs by propagating error terms back in time. The document provides an example implementation of an RNN for time series prediction using TensorFlow and Keras.
RNNs are neural networks that can handle sequence data by incorporating a time component. They learn from past sequence data to predict future states in new sequence data. The document discusses RNN architecture, which uses a hidden layer that receives both the current input and the previous hidden state. It also covers backpropagation through time (BPTT) for training RNNs on sequence data. Examples are provided to implement an RNN from scratch using TensorFlow and Keras to predict a noisy sine wave time series.
5. 연습 1단계 : 기본 형태소 분석 연습
소스
결과출력
이 예제 소스는 많은 한글 형태소 분석 라이브러리 중에서,
Twitter 라이브러리를 사용하는 가장 기본적인 예제 입니다.
한글 형태소분석 라이브러리 중에서,
속도 성능은 Mecab이 가장 좋다고 알려져 있지만,
Twitter는 개인적으로 normalization 기능이 좋아서,
나중에 학습시킬 때 여러모로 활용할 수 있어서 좋아합니다.
참고자료 출처 : http://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/
6. 연습 2단계 : 형태소 + 단어빈도 분석 연습소스 결과출력
이 예제를 실행하면,
명사만 추출하여, 명사가 출현한 빈도를 세어서, 그 명사와 함께 저장해 둡니다.
그 후,
for 문을 돌면서, 출현빈도가 많은 순으로 상위 50개까지의 단어데이터를,
‘명사(개수)’ 형태로 출력합니다.
10. 연습 1단계 : Word2Vec 모델 만들기 연습소스 결과출력
이 예제를 실행하면, 결과 출력은 위와 같이 나옵니다.
calvin.wakati 파일은,
원본텍스트에서 조사/어미/구두점 등을 제거한 후,
새롭게 저장한 text 파일 입니다.
그러나 실제로 calvin.model 이라는 파일이 생성되는데,
이것이 실질적인 이 프로그램의 결과물이지요.
11. 연습 2단계 : 만든 Word2Vec 모델 써먹기 연습
소스 결과출력
이제 저장했던 모델을 불러와서,
‘칼뱅’과 가까운 단어들을 추출해 보았습니다.
출력된 결과는,
읽어들이 텍스트 데이터를 학습한 결과,
대략 유사도가 98점 이상 나오는 단어들이 추출된 것입니다.