형태소 분석
1. 형태소 분석 말뭉치를 선택한다.
형태소 분석 말뭉치가 굉장히 많아요. 그 중 우리는 카이스트에서 만든 Hannanum을 사용했습니다. 그 이유는 가장 성능이 좋다고 판단했기 때문이죠!
파이썬(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)에는 "다"를 붙여서 출력을 하려고 합니다.