IT/Python

형태소 분석

1am_wish 2021. 1. 27. 02:33
728x90
반응형

1. 형태소 분석 말뭉치를 선택한다.

형태소 분석 말뭉치가 굉장히 많아요. 그 중 우리는 카이스트에서 만든 Hannanum을 사용했습니다. 그 이유는 가장 성능이 좋다고 판단했기 때문이죠!

cceeddcc.tistory.com/8

 

파이썬(Python) 한글 형태소 분석 : konlpy

[코엔엘파이(KoNLPy)의 설치 과정] 1) JAVA 1.7 이상의 설치 오라클(Oracle) 사이트(http://www.oracle.com/technetwork/java/javase/downloads/index.html)에서해당 OS에 맞는 JDK(Java Developement Kit)를 설치..

cceeddcc.tistory.com

더 자세한 종류들을 알고 싶으면 위 티스토리 참고해주세요.

 

2. Hannanum 말뭉치를 이용해서 품사 태깅을 한다.

품사 태깅은 형태소의 뜻과 문맥을 파악해서 마크업을 하는 것입니다. 우리가 걱정했던 예시로 감기는(기침이 나는 감기는 환절기에 유행합니다.) / 감기는 (눈이 감기는 시간이다.) 이런 단어들을 각각 명사와 동사로 구분을 해주는 아주 중요한 역할을 해줍니다.

 

3. hannanum 클래스의 pos 함수를 이용한다.

def pos(self, phrase, ntags=22, flatten=True, join=False):
        """POS tagger.

        This tagger is HMM based, and calculates the probability of tags.

        :param ntags: The number of tags. It can be either 9 or 22.
        :param flatten: If False, preserves eojeols.
        :param join: If True, returns joined sets of morph and tag.
        """

        if ntags == 9:
            result = self.jhi.simplePos09(phrase)
        elif ntags == 22:
            result = self.jhi.simplePos22(phrase)
        else:
            raise Exception('ntags in [9, 22]')

여기서 ntags는 태깅을 하는 범위?라고 생각하면 되는데 9로 설정하면 크게 명사N, 조사J 이런 식으로 나와서 ntags를 22로 바꿔줍니다. 그러면 내가 회의 때 보여줬던

[('견학대상자', 'NC'), ('는', 'JX'), ('한국외대', 'NC'), ('창업관련', 'NC'), ('우수활동', 'NC'), ('학생', 'NC'), ('8', 'NN'), ('명', 'NB'), (',', 'SP'), ('교직원', 'NC'), ('2', 'NN'), ('명', 'NB'), (',', 'SP'), ('교수', 'NC'), ('1', 'NN'), ('명', 'NB'), ('등', 'NB'), ('총', 'MM'), ('11', 'NN'), ('명', 'NB'), ('이', 'JP'), ('ㅂ니 다', 'EF'), ('.', 'SF')] 

 

이런 결과가 나와요. 조사는 다 J로 했었는데 JX, JP 등으로 구분된 것이 보입니다.

 

4. 지금까지 한 것들을 합쳐서 필요한 단어를 뽑아내고 아닌 단어를 버린다.

22개 종류의 형태소 중에서 보통명사(NC), 수사(NN), 의존명사(NB) 등은 살리고 보조사(JX), 특수기호(SP, SF) 등은 버리며 서술격조사(JP)에는 "다"를 붙여서 출력을 하려고 합니다.

728x90
반응형