더북(TheBook)

연습문제 13-8

마르코프 분석

1. 파일에서 텍스트를 읽어서 마르코프 분석을 수행하는 프로그램을 작성하라. 결과는 접두어와 가능한 접미어들을 연결한 사전 형태여야 한다. 접미어 모음에는 리스트, 튜플, 사전을 쓸 수 있다. 어떤 것을 선택할지는 여러분에게 달려 있다. 접두어 길이 2로 프로그램을 테스트할 수 있지만, 다른 길이도 쉽게 시도할 수 있는 방식으로 프로그램을 작성해야 한다.

2. 앞에서 작성한 프로그램을 수정해서 마르코프 분석에 기반해 무작위 텍스트를 생성하게 하라. 다음은 <엠마>를 접두어 길이 2로 분석한 예제다.

He was very clever, be it sweetness or be angry, ashamed or only amused, at such a stroke. She had never thought of Hannah till you were never meant for me?” “I cannot make speeches, Emma:” he soon cut it all himself.

이 예제에서는 단어에 붙이는 구두점을 남겨두었다. 결과는 문법적으로는 거의 올바르지만, 모두 맞는 것은 아니다. 의미론적으로도 대부분은 의미가 통하지만, 모두 통하는 것은 아니다.

접두어 길이를 늘리면 어떻게 될까? 무작위 텍스트의 의미가 더 잘 통하게 되는가?

3. 프로그램이 동작한다면 매시업(mash-up, 프로그램과 정보를 융합하여 새로운 것을 만드는 )을 해보고 싶을 것이다. 두 권 이상의 책에서 텍스트를 조합한다면 생성한 무작위 텍스트가 원문의 어휘와 문구를 흥미로운 방식으로 섞어 줄 것이다.

크레딧: 이 사례 연구는 <The Practice of Programming><Kernighan, Pike, Addison-Wesley, 1999>의 예제에 기반한 것이다.

이 연습문제를 풀어본 다음에 다음으로 넘어가야 한다. 그리고 해법은 http://thinkpython2.com/code/markov.py에서 받을 수 있다. 또한, <엠마>의 텍스트는 http://think python2.com/code/emma.txt에서 받을 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.