단어문서행렬과 형태소 분석

Python을 통한 단어문서행렬과 형태소 분석


수강중

13. stanza

stanza

stanza를 사용하기 위해서는 pytorch가 필요하다. 윈도의 경우에는 다음과 같이 설치한다. 맥, 리눅스 등에서는 stanza를 설치할 때 함께 설치된다.

!conda install -y -c pytorch pytorch torchvision

다음으로 stanza를 설치한다.

!pip install stanza

모형 다운로드

stanza는 기계학습 방식을 사용하기 때문에 한국어 데이터에 학습된 모형이 필요하다. 언어별 모형은 공식 문서에서 확인할 수 있다.

import stanza
stanza.download('ko')

모형을 불러온다.

nlp = stanza.Pipeline('ko')
2020-03-31 08:33:28 INFO: Loading these models for language: ko (Korean):
=======================
| Processor | Package |
-----------------------
| tokenize  | kaist   |
| pos       | kaist   |
| lemma     | kaist   |
| depparse  | kaist   |
=======================

2020-03-31 08:33:28 INFO: Use device: gpu
2020-03-31 08:33:28 INFO: Loading: tokenize
2020-03-31 08:33:33 INFO: Loading: pos
2020-03-31 08:33:34 INFO: Loading: lemma
2020-03-31 08:33:35 INFO: Loading: depparse
2020-03-31 08:33:36 INFO: Done loading processors!

한국어 모형에는 kaistgsd 두 가지가 있다. kaist가 기본이나 gsd 패키지를 사용하려면 다음과 같이 한다.

stanza.download('ko', package='gsd')
nlp = stanza.Pipeline('ko', package='gsd')

형태소 분석

아래 text 변수에 저장된 예시 문장의 형태소와 품사를 분석한다.

text = '오늘은 자연어 처리를 배우기 좋은 날이다. 자연어 처리는 재미있다.'

nlp() 로 문장의 형태소를 분석한다. 분석 결과는 doc 변수에 저장한다.

doc = nlp(text)

.sentences에 분석된 문장들이 리스트 형태로 담겨 있다.

sentence = doc.sentences[0]

.words에는 분석된 어절들이 리스트 형태로 담겨 있다.

word = sentence.words[0]

.lemma는 어절을 이루는 형태소의 표제어(lemma)들을 보여준다. 형태소가 2개 이상인 경우 + 표시로 구분되어 있다.

word.lemma
'오늘+은'

.xpos에는 품사 정보가 있다.

word.xpos
'ncn+jxt'