빅데이터/빅데이터 with python

[빅데이터 python] 형태소 분석기 만들기 - 1. Morpheme 클래스 정의

언제나휴일 2020. 11. 16. 16:33
반응형

안녕하세요. 언제나 휴일입니다.

 

앞에서 웹 수집 로봇을 만들어 보았습니다.

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 1. 테이블 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 2. EHHelper 클래스 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 3. WebPage 클래스 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 4. WebPageSql 클래스 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 5. CandidateSql 클래스 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 6. WebRobot 클래스 정의

2020/11/16 - [빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 7. WebRobot 가동 예

 

이번에는 수집한 웹 페이지 내용을 분석하는 형태소 분석기를 만들어 볼 거예요.

1. 형태소 분석기란, 그리고 구현 범위

형태소 분석기란 문장을 구성하는 요소들을 분석하는 로봇 혹은 프로그램을 말합니다.

여기에서는 문장을 구성하는 요소 중에 알파벳과 공백을 제외한 나머지 부분은 버리기로 하겠습니다.

한글은 "는, 은, 를, ..."등의 어말 어미를 포함하여 복잡한 구조를 지니고 있습니다.

여기에서는 이러한 것을 모두 무시하고 공백을 기준으로 나누기로 하겠습니다.

높은 품질을 원하시면 자연어 연구소에서 제시하는 형태소 분석기를 사용하세요.

2. Morpheme 클래스 정의

형태소 클래스에는 단어(word)와 형태소가 몇 번 나오는지 기억하는 멤버(ref)를 두기로 할게요.

#Morpheme.py  - 형태소 클래스
class Morpheme:
    def __init__(self,word):
        self.word = word #단어 
        self.ref = 1           #참조 개수

 

같은 단어를 갖는 형태소인지 판별하는 메서드를 제공할게요.

    def IsEqual(self,other): #같은 단어를 갖는 형태소인지 판별
        return self.word ==  other.word

같은 단어를 갖는 형태소를 하나로 묶는 메서드를 제공합시다.

    def Merge(self,other): # 병합하기
        if self.IsEqual(other):
            self.ref = self.ref + other.ref

ref(참조 개수) 순으로 정렬할 수 있게 비교 메서드를 제공합시다.

    def __lt__(self,other):
        return self.ref>other.ref

다음은 지금까지 작성한 Morpheme 클래스 코드입니다.

#Morpheme.py  - 형태소 클래스
class Morpheme:
    def __init__(self,word):
        self.word = word #단어 
        self.ref = 1           #참조 개수
    def IsEqual(self,other): #같은 단어를 갖는 형태소인지 판별
        return self.word ==  other.word
    def Merge(self,other): # 병합하기
        if self.IsEqual(other):
            self.ref = self.ref + other.ref
    def __lt__(self,other):
        return self.ref>other.ref
반응형