2016. 7. 28 / 쭈르꾸미
저는 언어학과 컴퓨터 과학을 이중 전공해서 언어학도와 컴공학도의 이질적(?) 삶에 대해 잘 알고 있습니다만... 요새 순수 언어학만 전공하는 제 동기들을 보면 Python 을 정말 열심히 배우는 것 같습니다. 파이썬은 문법도 되게 간결해서 컴맹도 배울 수 있고, 자연어 처리를 위한 수많은 라이브러리들의 강력한 기능을 쓸 수 있거든요.
오늘 제가 다룰 NLTK 는 파이썬에서 자연어 처리를 할 수 있게 해주는 편리한 라이브러리입니다.
NLTK 설치
** 파이썬이 설치 안된 분은 파이썬부터 설치하세요.
sudo pip install -U nltk
잘 설치가 되어있는지 확인하려면 Python IDLE 에서 import nltk 를 해보세요. 아무런 에러가 나오지 않으면 제대로 설치된 것입니다.
자연어 처리할 샘플 문자열 내려받기
nltk.download()
을 파이썬 IDLE 에 입력함으로써 내려받을 수 있습니다. 그리고 나서 아래와 같은 창이 뜰건데요,
오늘은 book 만 이용해서 자연어 처리를 해보도록 하겠습니다. (제일 용량이 작아요)
텍스트 불러오기
총 9개 텍스트를 불러왔습니다. text1, text2, text3, ... text9 은 각각의 책에 부여된 이름입니다. 예를 들어 모비딕은 text1 이라고 부르기로 약속한 것입니다.
각종 기능 탐구
1. concordance: 단어가 쓰인 모든 경우의 문맥을 찾아줌 (색인)
저는 미국 대통령들의 역대 연설을 모아둔 text4 에서 terror 라는 낱말이 쓰인 문맥을 찾아봤습니다. violence, unjustified, fatalistic 같은 단어들이 보이네요.
2. similar: 주어진 단어와 비슷한 환경에서 쓰인 단어를 찾아줌
단어의 뜻이 비슷한 것이랑 착각하시면 안됩니다. 순전히 쓰이는 환경이 비슷한 단어들을 찾아주는 것이라고 기억하세요. 대략 congress, legislation, nations 같은 단어들이 많이 보입니다. 아무래도 정치적으로 테러라고 하면 폭탄 테러 같은 경우에 많이 쓰이니까 그런 것일까요? 다른 텍스트에서는 terror 와 비슷한 환경에서 쓰인 단어에 어떤 것이 있는지 찾아보겠습니다.
>>> text1.similar("terror")
man thing way ship bone harpooneer distance sound speed sign sight
whale night picture land voyage whaling repose circle battle
결국 대통령 연설문에서 쓰인 terror 의 느낌과 소설책에서 쓰인 terror의 느낌이 다르다는 것을 알수 있었습니다. 하지만 둘다 문장이 얼마 없어서인지 의미있는 결과는 없네요.
3. dispersion_plot: 텍스트 내 단어 사용 빈도와 위치를 분산 그래프로 그려줌
text4 은 우선 옛날-현재 순으로 미국 대통령들의 연설이 나열되어있습니다. 이 점을 이용해서 다섯 개 단어가 시간을 흐르면서 얼마나 자주 사용됐었는지 알아본 예제였습니다.
참고로, plot 기능을 이용하기 위해서는 NumPy 가 설치되어있어야 합니다.
4. word_tokenize : token 나누기
5. pos_tag: 품사 태깅
[원문출처 : http://il-q.tistory.com/entry/파이썬과-함께하는-자연어-처리-NLTK]
번호 | 제목 | 작성 | 조회수 |
---|---|---|---|
494 | 리눅스에서 SD 카드를 포맷하는 방법 | 2017-03-03 | 4733 |
493 | '넷XMS·오픈NMS·판도라FMS·자빅스' 오픈소스 관리 툴 4종 분석 | 2017-02-16 | 3273 |
492 | ITWorld 용어풀이 | 컨테이너(container) | 2017-02-16 | 2200 |
491 | [OpenFOAM] 열유체의 구배방정식 (OpenFOAM 배경이론 간단정리) | 2017-02-06 | 2020 |
490 | 아마존웹서비스(AWS)와 함께 오픈소스 소프트웨어 활용하기 | 2017-02-02 | 2472 |
489 | [IT열쇳말] 라즈베리파이 file | 2017-01-06 | 2650 |
488 | [파이썬] 파이썬과 함께하는 자연어 처리: NLTK | 2016-12-30 | 3908 |
487 | [OpenFOAM] OpenFOAM 문법 기본 (OpenFOAM 기본) | 2016-12-23 | 3173 |
486 | [사물인터넷] 원거리 클라우드에 IoT 센서 연결하기 | 2016-12-13 | 2063 |
485 | 학교에선 알려주지 않는 오픈소스이야기 | 2016-12-06 | 1405 |
0개 댓글