파이썬 _ KoNLPy (한국어 NLP)

김연우·2022년 5월 3일
0

파이썬

목록 보기
1/1
post-thumbnail

제가 챗봇을 개발할 때 아주 유용했던 패키지입니다.

보통 요즘 챗봇은 RNN 구조나 트랜스포머까지 주로 AI로 구현하는 것 같더군요.
거기서도 주로 토크나이징 과정에서 정규화 기능으로 사용할 수 있을까요?
(리턴 문자열을 다시 자연스럽게 변형해줘야 할 것 같은...)
아무튼 저는 챗봇의 규칙기반 기능에 이 코엔엘파이를 사용했습니다.
마찬가지로 정규화 기능이 정말 좋더라구요...ㅎ

일단 밑에 참고링크들 걸어두겠습니다.

[ KoNLPy 공식문서 ]

[ KoNLPy 깃허브 ]

[ KoNLPy 사용강좌 ]

전 이거 설치하는데 고생이란 고생은...

아무튼 코엔엘파이 공식문서에서 나오는 예제처럼 동사 명사 부사 다 나눠줍니다.
요소 개수까지 구할 수 있다고 해요!

from konlpy.tag import Okt

def Analysis(Text):
    Text_Km = '"{}"'.format(Text)
    okt = Okt()
    Input_Text_Normalize = okt.normalize(Text_Km)
    Input_Text_Pos_Array = okt.pos(Input_Text_Normalize)
    Input_Text_Pos_Array_Lenth = len(Input_Text_Pos_Array)

    Analysis_Verb_List = []
    Analysis_Noun_List = []
    Analysis_Adjective_List = []

    while(Input_Text_Pos_Array_Lenth > 0):
        Input_Text_Pos_Array_Lenth = Input_Text_Pos_Array_Lenth - 1
        
        if (Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][1] == "Verb") :
            Analysis_Verb_List.append(Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][0])
        if (Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][1] == "Noun") :
            Analysis_Noun_List.append(Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][0])
        if (Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][1] == "Adjective") :
            Analysis_Adjective_List.append(Input_Text_Pos_Array[Input_Text_Pos_Array_Lenth][0])

    
    Analysis_Output = [Input_Text_Normalize, Input_Text_Pos_Array, Analysis_Verb_List, Analysis_Noun_List, Analysis_Adjective_List, len(Input_Text_Pos_Array)]

    return Analysis_Output

이건 제가 사용했던 코드인데

  • Analysis_Output [0] - 정규화된 문장
  • Analysis_Output [1] - 정렬되지 않은 요소들
  • Analysis_Output [2] - 동사 리스트
  • Analysis_Output [3] - 명사 리스트
  • Analysis_Output [4] - 형용사 리스트
  • Analysis_Output [5] - 요소 개수

이렇게 반환됩니다.

함수 첫줄에 ""로 덮어씌우는거는 정해진 입력형태에 맞추기 위함이였습니다.

나중에 또 챗봇같은거 만들려면 써야겠네요 ㅎ

0개의 댓글