본문 바로가기

IT/Treform

Treform-2

<목차>
1. Treform 형태소 분석기
2.  형태소 분석기 종류

 

  이번 글에서는 앞선 Treform 개관에 이어서, 텍스트 분석의 핵심인 형태소 분석기 부분을 살펴보고자 합니다.

 먼저 밝힐 부분은, Treform에서는 현재 4개의 버전을 지원하고 있으나, Kiwi[각주:1]의 높은 성능으로 인하여 해당 부분을 웹[각주:2]을 참조하여 Treform에 추가하였습니다. 그러므로 기존의 4개의 형태소 분석기에서 5개의 형태소 분석기 운용을 살펴보겠습니다. 추가적으로 Trform의 형태소 분석기에서Kiwi 수정 부분도 거론하겠습니다.

 

1. Treform 형태소 분석기

 1) 형태소 분석기 기능 

  형태소 분석기는 형태소를 비롯하여, 어근, 접두사/접미사, 품사(POS, part-of-speech) 등과 같은 언어적 속성을 기계적으로 분석하기 위한 도구로 볼 수 있습니다.[각주:3]

 

 

 2) 형태소 분석기 중요성

 

  텍스트 분석에 있어서 심층 신경망(Deep Neural Network, DNN) 학습을 활용하지 않는 이상, 형태소 분석기의 사용은 필연적이라 볼 수도 있습니다. 그렇기에 어떠한 형태소 분석기를 활용하느냐에 따라서 결과값에 큰 차이를 보입니다.

일례로 각 형태소 분석기는 구동 시간에 많은 차이를 보입니다.

[각주:4]">
단어 갯수에 따른 구동 시간 차이[각주:5]

 

2.  형태소 분석기 종류

 1) 종류

  Treform에서는 Konlpy[각주:6]를 활용하여 5개(Kkma, Komoran, Hannum, Twitter, Mecab)을 운용할 수 있습니다. 여기에 더불어서 Kiwi를 추가하였습니다.

 

 2) Mecab과 Kiwi 설치

[각주:7]">
Konlpy설치와 경고사항[각주:8]

  상단의 그림에 있는 '경고'문구처럼 Windows에서는 기본적으로는 Mecab을 지원하지 않습니다. 그러나 별도의 과정을 거치면 Mecab을 Windows에서도 사용할 수 있습니다.[각주:9]

앞서서 형태소 분석기 성능에서도 보셨다시피 Mecab은 상당히 빠른 속도를 보여줍니다. 이는 해당 라이브러리를 불러들이는 과정에서도 Mecab이 가장 빠른 속도를 보입니다.[각주:10]

 

  Kiwi는 카카오 엔터프라이즈 소속의 이민철 연구원 [각주:11]이 2017년부터 개발한 형태소 분석기입니다. 성능의 경우에는 사용해보신 분들은 아시겠지만, 상용되고 있는 형태소 분석기중에서 가장 뛰어난 성능을 보이고 있습니다. 하지만 Treform에는 연결이 되어 있지 않아서, 이 부분을 앞서 발씀 드렸다시피 다른분의 코드를 활용하여 연결하였습니다. 클래스 선언 부분에서 수정이 필요합니다. tokenizer 모듈에서 _init.py 부분에 상단의 코드를 추가함으로써 Kiwi도 다른 형태소 분석기와 동일하게 사용이 가능해집니다. 해당 부분은 Kiwi의 결과값이 많은 정보를 갖고 있어서, 필요한 부분만을 추출하도록 하는 부분입니다.

class Kiwi(BaseTokenizer):
    def __init__(self,path=None):
        from kiwipiepy import Kiwi, Match
        self.inst=Kiwi()
        if path!=None:
        	self.inst.load_user_dictionary(dict_path=path)
        self.OUT_TYPE=[list,tuple]
    def __call__(self, *args, **kwargs):
        result = self.inst.analyze(args[0])
        for token, pos, start, length_sentence in result[0][0]:  # [0][0]
            yield token, pos​

 

 

 2) POS(A Part-Of-Speech Tag) 태그

  텍스트를 분석하시다 보면 반드시 마주하는 부분이 POS 태그입니다.

[각주:12]">
Core NLP 기준 POS 태그 표[각주:13]

 형태소 분석을 하면서 이를 활용하여 특정한 형태소만 추출하는 경우가 종종있습니다. 이에 대한 자세한 내용은 다음 

모든 부분을 다루기 보다는 구조를 개관하고, 이후의 상세한 부분은 형태소 분석기에 따른 분석 성능을 비교하면서 이어서 설명하고자 합니다.

 

 

 

  1. https://github.com/bab2min/Kiwi [본문으로]
  2. https://mindscale.kr/course/python-text-analysis/10/ [본문으로]
  3. https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/ [본문으로]
  4. https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/ [본문으로]
  5. https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/ [본문으로]
  6. https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/ [본문으로]
  7. https://konlpy-ko.readthedocs.io/ko/v0.4.3/install/ [본문으로]
  8. https://konlpy-ko.readthedocs.io/ko/v0.4.3/install/ [본문으로]
  9. https://heytech.tistory.com/395 [본문으로]
  10.  https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/  [본문으로]
  11. https://www.youtube.com/watch?v=7BWZ-nGphUo&ab_channel=HallymHAS [본문으로]
  12. &amp;nbsp;https://www.devglan.com/artificial-intelligence/stanford-nlp-pos-tagger-example [본문으로]
  13. &nbsp;https://www.devglan.com/artificial-intelligence/stanford-nlp-pos-tagger-example [본문으로]

'IT > Treform' 카테고리의 다른 글

Treform-5  (0) 2023.02.08
Treform-4  (0) 2023.01.20
Treform-1  (0) 2022.12.21
Treform-0  (0) 2022.08.23