프로그래밍/자연어처리

한국어 NER 시작하기 - flair 사용방법

kugancity 2024. 8. 23. 18:21
반응형

 

 

 

최근에 진행하는 프로젝트에서 다양한 태그(사람, 회사, 조직 등)를 지원하면서 성능이 좋은 한국어 NER 모델이 필요해졌습니다. 

 

최근에 나온 NER 모델 위주로 사용방법과 성능 관련 내용을 정리해보겠습니다. 

 

 

 

Flair 소개 

 

 

 

Flair는 자연어 처리(NLP) 작업을 간단하고 직관적으로 수행할 수 있도록 하는 Python 기반의 라이브러리입니다.

 

문장 임베딩(sentence embeddings), 이름된 엔티티 인식(NER), 텍스트 분류(text classification), 품사 태깅(POS tagging) 등의 작업을 지원합니다.

 

성능이 괜찮고 사용이 간단하다고 해서 사용해봤습니다. 

 

 

https://github.com/flairNLP/flair

 

GitHub - flairNLP/flair: A very simple framework for state-of-the-art Natural Language Processing (NLP)

A very simple framework for state-of-the-art Natural Language Processing (NLP) - flairNLP/flair

github.com

 

 

Flair 설치

 

설치는 간단합니다. 

 

pip install flair

 

 

 ner사용하기 

 

 

from flair.data import Sentence
from flair.nn import Classifier

# make a sentence
sentence = Sentence('I love Berlin .')

# load the NER tagger
#tagger = Classifier.load('ner')
tagger = Classifier.load('ner-large')


# run NER over sentence
tagger.predict(sentence)

# print the sentence with all annotations
print(sentence)

 

모델 로딩과 사용방법도 간단합니다. 

 

 

ner 모델은 419메가이고 ner-large 모델은 2.24기가네요 

ner-large 모델이 다국어를 지원하는데 성능 비교를 위해 우선 두 개 다 써보겠습니다. 

 

sentence()에 입력된 문장에서 장소(LOC)를 인식합니다. 

"I love Berlin ." → ["Berlin"/LOC]

 

한국어로도 테스트해보겠습니다. 

 

 

ner: Sentence[6]: "나는 서울 역삼동에 있는 삼성전자에 다니고있어" -> 결과 없음 
ner-large: Sentence[6]: "나는 서울 역삼동에 있는 삼성전자에 다니고있어" → ["서울"/LOC, "역삼동에"/LOC, "삼성전자에"/ORG]

 

 

확실히 ner-large 모델이 다국어를 지원해서 성능이 좋네요. 

다만 조사까지 붙어서 인식하는 것은 아쉬운 부분입니다...

 

 

 

 

NER 태그 종류 

 

지원하는 태그 종류는 20개입니다. 

Dictionary with 20 tags: <unk>, O, S-ORG, S-MISC, B-PER, E-PER, S-LOC, B-ORG, E-ORG, I-PER, S-PER, B-MISC, I-MISC, E-MISC, I-ORG, B-LOC, E-LOC, I-LOC, <START>, <STOP>

 

ORG(조직), PER(사람), LOC(장소) 태그를 제공합니다. 

 

태그의 종류도 좀 많이 단순하네요.. 이래서 성능이 높게 나온건가..?!

 

모델별 성능  

 

 

 

언어별로 특화된 모델도 지원하긴 하는데 아쉽게도 한국어는 없습니다... 

언어마다 다르긴 하지만 대체적으로 90% 근처의 성능(F1기준)을 제공하네요 

역시 영어가 제일 성능이 좋습니다... 

 

참고: https://flairnlp.github.io/docs/tutorial-basics/tagging-entities

 

 

 

 

결론 :  플레어는 사용방법이 간단하고 훈련없이도 바로 사용가능한 것은 좋은데 태그 종류가 적고 조사를 따로 분리해야 하는 이슈가 있네요.

 

우선 다른 한국어 특화된 NER도 써보고 어떤 모델을 사용할지 좀 더 고민해보겠습니다. 

 

 

 

 

 

 

728x90
반응형