레플리
글 수 72

마르코프 체인을 사용한 자동 문장 생성

조회 수 8977 추천 수 0 2017.04.05 12:28:21


markov chain picture.png

 

마르코프 체인은 이전 상태가 다음 상태에 영향을 주는 것을 말합니다. 1개 또는 n개의 이전 상태가 주어졌을때 다음 상태가 나올 확률을 계산할 수 있습니다.

 

이를 사용하여 문장을 자동으로 생성하는 것이 가능합니다. 전체 텍스트를 검사하여 각각 단어에서 다음 단어가 나타나는 확률을 모두 구합니다. 그리고 특정 단어로 시작하여 가장 높은 확률의 단어를 계속 선택하여 문장을 만들 수 있습니다.

 

 

 

https://github.com/codebox/markov-text

 

위의 링크는 파이썬으로 자동 문장 생성을 구현한 프로그램입니다. 윤동주의 시 30편 정도를 txt 파일로 만들어 다음과 같이 파싱을 하였습니다.

 

>> python markov.py parse model 2 poem.txt

 

poem.txt를 읽어서 2단계 마르코프 체인으로 확률을 계산하여 model.db로 저장합니다.

 

>> python markov.py gen model 10

 

그리고 model.db를 사용하여 다음과 같은 10개의 문장을 생성하였습니다.

 

 

 

-----------------------------------------------------------------

나한테는 병이 없다고 한다
담은 쇠문을 굳게 닫아 길 민들레가 피고 까치가 날고 아저씨가 지나고 나의 거울을 손바닥으로 발바닥으로 닦아 보자 그러면 어느 쪼그만 정거장에서 희망과 사랑처럼 기차를 기다려, 나는 성내서는 안 된다
소학교 때 책상을 같이 했던 아이들의 이름과, 가난한 이웃 사람들의 이름과, 패, 경, 옥 이런 이국 소녀들의 이름과 벌써 애기 바람이 일고 나의 청춘이 다하지 않은 살구나무 가지에는 바람조차 없다

어쩐지 그 여자의 건강이 - 아니 내 노래는 오히려 설운 산울림
발걸음을 멈추어 살그머니 앳된 손을 잡으며 너는 자라 무엇이 되려니」 사람이 되지」 아우의 얼굴을 다시 손바닥을 들여다본다
담은 쇠문을 굳게 닫아 길 위에 파란 잔디가 피어나듯이 내 한 마디씩 불러 봅니다
한나절이 기울도록 가슴을 앓는다는 이 여자를 찾아오는 이, 나비 한 줄의 참회록을 써야 한다
-----------------------------------------------------------------

 

 

 

많이 어색하긴 하지만 상당히 그럴듯한 문장들이 만들어 졌습니다. 원본 텍스트가 작아서 그런데 데이터가 크면 좀 더 자연스러운 문장이 나올 것 같습니다.

 

 

 

< 챗봇 개발자 모임 >

- 페이스북 그룹에 가입하시면 챗봇에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/ChatbotDevKR/

List of Articles
제목 글쓴이 날짜 조회 수sort
자연어 관련 데이터셋 사이트 - AI 오픈 이노베이션 허브 file 깊은바다 2018-12-03 1451
간편한 토픽 모델링 툴 Tomoto Gui 깊은바다 2018-06-14 1450
네이버 번역앱 파파고 개발자 인터뷰 file 깊은바다 2017-02-28 1421
공공 인공지능 오픈 API·DATA 서비스 포털 깊은바다 2017-11-29 1381
국민대 강승식 교수의 형태소 분석기 깊은바다 2017-03-24 1285
NLTK 개발자들이 직접 쓴 자연어처리 책의 공개 버전 깊은바다 2019-07-02 1259
자연어처리와 형태소분석의 기초 깊은바다 2016-03-31 1215
소셜 미디어 감성분석을 통한 주가 예측 깊은바다 2018-04-28 1159
C++로 만든 형태소 분석기 - KIWI 깊은바다 2018-07-02 1133
매주 한편씩 글을 작성하는 자연어처리 블로그 - 위클리 NLP 깊은바다 2020-06-12 1129
APEACH – 혐오 발화 평가데이터를 만드는 새로운 방법 깊은바다 2022-04-22 1103
NUGU Knowledge Base - 지식베이스 깊은바다 2018-11-10 1031
한국어 MRC 연구를 위한 표준 데이터셋(KorQuAD) 소개 및 B2B를 위한 MRC 연구 사례 깊은바다 2019-03-10 967
파이썬과 커뮤니티와 한국어 오픈데이터 - KoNLPy의 탄생배경 깊은바다 2019-11-11 942
Machine Learning for Kids로 감정분석 깊은바다 2020-02-09 932