[nlp] MAC에서 GLiNER-ko 사용방법 (with. Mecab)

최승언·2024년 5월 22일
0

nlp

목록 보기
12/12
post-thumbnail

taeminlee/gliner_ko 모델은 python-mecab-ko와 같이 사용됩니다. 하지만 맥북에선 mecab을 사용하기 위한 설치과정이 우분투와 달라서 고생을 하게 됩니다.

맥북에서 mecab을 사용하기 위해 다음과 같은 과정을 거치도록 합니다.

1. 의존성 설치 확인

MeCab 및 관련 라이브러리가 제대로 설치되어 있는지 확인합니다. 특히, Mac에서는 brew를 사용하여 mecab과 mecab-ipadic을 설치할 수 있습니다.

brew install mecab mecab-ipadic mecab-ko-dic

# 설치 경로 확인
echo `mecab-config --dicdir`"/mecab-ko-dic"

2. MeCab 설치 및 Python 패키지 설치

새로운 가상환경에 mecab-python3을 설치합니다. mecab-python3은 pip를 통해 설치할 수 있습니다.

pip install mecab-python3

3. 패키지 재설치

다시 필요한 모든 패키지를 설치합니다. 오류 메시지에 등장하는 huggingface_hub과 gliner도 다시 설치합니다.

pip install torch torchvision torchaudio huggingface_hub gliner 

4. mecab 환경변수 설정

mecab의 설정 파일이 제대로 읽힐 수 있도록 환경변수를 설정합니다. 설치 경로에 따라 다를 수 있으므로, 설치 후 mecab의 경로를 확인합니다.

export MECABRC="/usr/local/etc/mecabrc"

또는 필요에 따라 .bashrc, .zshrc 등에 추가하여 영구적으로 설정할 수도 있습니다.

echo 'export MECABRC="/usr/local/etc/mecabrc"' >> ~/.bashrc
source ~/.bashrc

# 또는 zsh를 사용하는 경우
echo 'export MECABRC="/usr/local/etc/mecabrc"' >> ~/.zshrc
source ~/.zshrc

5. gliner 코드 수정

GLiNER 라이브러리의 MecabKoTokenSplitter 클래스에서 mecab 모듈을 올바르게 불러오도록 수정할 필요가 있을 수 있습니다. mecab-python3 패키지를 사용하도록 코드를 수정합니다.

# gliner/modules/token_splitter.py 파일 열기
nano {anaconda3 위치}/envs/{가상환경명}/lib/python3.8/site-packages/gliner/modules/token_splitter.py

# MecabKoTokenSplitter 클래스 수정
import MeCab

class MecabKoTokenSplitter:
    def __init__(self):
        self.tagger = MeCab.Tagger()
        
    def __call__(self, text):
        # MeCab의 parse 메서드를 사용하여 텍스트를 파싱
        parsed_text = self.tagger.parse(text)
        
        # 각 줄을 분할하여 토큰화된 정보를 추출
        tokens = []
        for line in parsed_text.split('\n'):
            if line == 'EOS' or line == '':
                continue
            # MeCab의 결과는 탭으로 구분된 두 부분으로 구성됨
            word, features = line.split('\t')
            # 위치 정보를 추출
            start = text.find(word)
            end = start + len(word)
            tokens.append((word, start, end))
        
        return tokens

수정된 파일을 저장하고 종료하여 다시 코드를 실행시켜 정상 작동되는지 확인합니다.

profile
작업하다가 막힌부분을 기록하는 곳.

0개의 댓글