My IBM 로그인 구독하기

어간 추출 및 표제어 추출이란 무엇인가요?

2023년 12월 10일

작성자

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

어간 추출 및 표제어 추출은 단어 변형을 하나의 기본 형태로 줄이는 텍스트 전처리 기법입니다.

어간 추출 및 표제어 추출은 자연어 처리(NLP)의 텍스트 전처리 기법입니다. 구체적으로는 텍스트 데이터 세트에서 단어의 변형된 형태를 하나의 공통 어근 또는 사전적 형태로 줄이는 것으로, 이러한 형태를 컴퓨터 언어학에서는 '레마(lemma)'라고 합니다.1

어간 추출 및 표제어 추출은 검색 엔진과 같이 사용자가 한 단어(예: meditate)로 쿼리를 제출하지만 그 단어의 변형된 형태(예: meditates, meditation 등)를 사용하는 결과를 기대하는 정보 검색 시스템에서 특히 유용합니다. 어간 추출 및 표제어 추출은 머신 러닝 알고리즘의 텍스트 처리를 개선하는 데에도 사용됩니다.

어간 추출 및 표제어 추출이 필요한 이유는 무엇인가요?

연구자들은 인공 지능이 추론할 수 있는지에 대해 논쟁을 벌이고 있으며, 이 논쟁은 계산 언어학으로까지 확장되었습니다. 챗봇딥 러닝 모델은 언어적 형태만 처리할 수 있을까요, 아니면 의미론까지 이해할 수 있을까요?2 이 질문에 대해 어떤 견해를 가지고 있든, 머신 러닝 모델이 다양한 단어를 하나의 기본 단어의 형태적 변형으로 인식하도록 훈련해야 한다는 점은 변함이 없습니다. 심지어 단어의 의미가 아닌 형태를 기반으로 단어를 처리해야 합니다. 어간 추출 및 표제어 추출은 파생된 단어의 형태를 하나의 어간 단어로 줄임으로써 정보 검색 시스템과 딥 러닝 모델이 형태적으로 관련된 단어를 동일시하는 데 도움을 줍니다.

텍스트 분류, 클러스터링, 인덱싱 등 많은 텍스트 마이닝 작업에서 어간 추출 및 표제어 추출을 통해 머신 러닝 알고리즘의 차원을 축소하고 형태적으로 관련된 단어를 그룹화하여 정확도를 개선할 수 있습니다. 알고리즘 차원을 줄이면 토픽 모델이나 단어 벡터 모델과 같은 NLP의 통계 모델의 정확도와 정밀도를 향상할 수 있습니다.3

트랙에서 굴러가는 공의 3D 디자인

최신 AI 뉴스 + 인사이트 


주간 Think 뉴스레터에서 AI, 클라우드 등에 대한 전문적으로 선별된 인사이트와 뉴스를 발견하세요. 

어간 추출 vs 표제어 추출

어간 추출 및 표제어 추출은 원시 텍스트 데이터를 기계가 처리할 수 있는 구조화된 형식으로 변환하는 텍스트 마이닝 파이프라인의 한 단계로 작용합니다. 어간 추출과 표제어 추출은 모두 변형된 단어 형태에서 접사를 제거하여 어근 형태만 남깁니다.4 이러한 프로세스는 단어 토큰의 시작과 끝에서 문자를 제거하는 것과 같습니다. 그런 다음 결과물인 어근 또는 기본 단어는 추가 처리를 위해 전달됩니다. 이러한 기본적인 유사성 외에도 어간 추출과 표제어 추출은 단어의 다양한 형태를 하나의 공통된 기본 형태로 줄이는 방식에서 중요한 차이점이 있습니다.

어간 추출의 작동 방식

어간 추출 알고리즘들은 서로 크게 다르지만 몇 가지 일반적인 작동 방식은 공유합니다. 어간 추출기는 미리 정의된 공통 접미사 목록에 대해 입력 단어 토큰을 실행하여 단어 접미사를 제거합니다. 그런 다음, 접미사에 연결된 규칙이나 조건에 어긋나지 않는 경우 단어에서 발견된 접미사 문자 문자열을 제거합니다. 일부 어간 추출기(예: Lovins 어간 추출기)는 잘못된 어근을 수정하기 위해 추가 규칙 세트를 통해 결과 형태소 비트를 실행합니다.

가장 널리 사용되는 알고리즘은 Porter 어간 추출 알고리즘과 그 업데이트 버전인 Snowball 어간 추출기입니다. 어간 추출기에 대한 이해를 돕기 위해 셰익스피어의 햄릿에 수록된 “There is nothing either good or bad but thinking makes it so.”라는 구절을 Snowball 어간 추출기를 통해 실행해 보겠습니다.

Python 자연어 툴킷(NLTK)에는 Snowball 및 Porter 어간 추출기를 위한 기본 제공 함수가 포함되어 있습니다. NLTK를 사용하여 햄릿 인용문을 토큰화한 후, 다음 코드를 사용하여 토큰화된 텍스트를 Snowball 어간 추출기에 전달할 수 있습니다.

from nltk.stem.snowball import SnowballStemmer
from nltk.tokenize import word_tokenize

stemmer = SnowballStemmer("english", True)
text = "There is nothing either good or bad but thinking makes it so."
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]

print("원본:", text)
print("토큰화:", words)
print("어간 추출:", stemmed_words)

다음과 같이 코드가 출력됩니다.

원본: There is nothing either good or bad but thinking makes it so.
토큰화: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
어간 추출: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']

Snowball과 Porter 어간 추출기 알고리즘은 다른 어간 추출기보다 접미사를 더 수학적으로 제거하는 방법을 가지고 있습니다. 간단히 말해, 어간 추출기는 토큰의 모음과 자음 그룹 수에 따라 제거할 접미사 문자열을 지정하는 규칙 목록에 대해 모든 단어 토큰을 실행합니다.5 물론 영어는 절대적인 어휘 규칙이 아닌 일반적인 어휘 규칙을 따르기 때문에 어간 추출 알고리즘의 체계적 기준은 noth과 같은 단어 오류를 반환할 수 있습니다.

어간 추출기는 현재 진행형을 나타내는 일반적인 어미인 -ing를 제거합니다. 그러나 햄릿 인용문에서 -ing을 제거하면 어간 noth가 잘못 생성됩니다. 이렇게 하면 이후 언어 분석에서 nothinganythingsomething과 같은 유사한 명사와 연관시키지 못하게 됩니다. 또한 어간 추출기는 불규칙 동사 is를 변경하지 않고 그대로 둡니다. Snowball 어간 추출기도 마찬가지로 was, are와 같은 to be의 다른 활용형을 어간 추출이 되지 않은 상태로 남겨둡니다. 이로 인해 모델이 주어진 동사의 불규칙 활용형을 제대로 연결하지 못할 수 있습니다.

표제어 추출 작동 방식

문헌에서는 일반적으로 어간 추출을 어간 단어 문자열을 얻기 위해 단어에서 접사를 제거하는 과정으로 정의하고, 표제어 추출은 형태소 변형을 하나의 사전 기본 형태로 줄이는 더 큰 작업으로 정의합니다.6 어간 추출 및 표제어 추출의 실질적인 차이점은 어간 추출은 단순히 단어 토큰의 끝에서 일반적인 접미사를 제거하는 반면, 표제어 추출은 출력 단어가 사전에서 찾을 수 있는 기존의 정규화된 형태의 단어(예: lemma)가 되도록 한다는 점입니다.7

표제어 추출은 사전의 기본 형태를 출력하는 것을 목표로 하기 때문에 어간 추출보다 더 강력한 형태소 분석이 필요합니다. 품사(POS) 태깅은 표제어 추출에서 중요한 단계입니다. POS는 기본적으로 문장에서 구문 기능을 나타내는 각 단어 태그를 할당합니다. Python NLTK는 Word Net Lemmatization 알고리즘을 위한 함수를 제공하며, 이를 통해 햄릿 구절을 다음과 같이 표제어 추출할 수 있습니다.

from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk import word_tokenize, pos_tag
 
def get_wordnet_pos(tag):
    if tag.startswith('J'):
        return wordnet.ADJ
    elif tag.startswith('V'):
        return wordnet.VERB
    elif tag.startswith('N'):
        return wordnet.NOUN
    elif tag.startswith('R'):
        return wordnet.ADV
    else:         
        return wordnet.NOUN
       
def lemmatize_passage(text):
    words = word_tokenize(text)
    pos_tags = pos_tag(words)
    lemmatizer = WordNetLemmatizer()
    lemmatized_words = [lemmatizer.lemmatize(word, get_wordnet_pos(tag)) for word, tag in pos_tags]
    lemmatized_sentence = ' '.join(lemmatized_words)
    return lemmatized_sentence
 
text = "There is nothing either good or bad but thinking makes it so."
result = lemmatize_passage(text)
 
print("원본", text)
print("토큰화:", word_tokenize(text))
print("어간 추출", result)

이 코드는 다음을 반환합니다.

원본: There is nothing either good or bad but thinking makes it so.
토큰화: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
어간 추출: There be nothing either good or bad but think make it so .

WordNetLemmatizer는 Snowball 어간 추출기와 마찬가지로 동사 활용형을 기본 형태(예: thinkingthink로, makesmake로)로 줄여줍니다. 그러나 Snowball 어간 추출 알고리즘과 달리 표제어 추출기는 nothing을 명사로 식별하고 -ing 어미를 적절히 그대로 두면서 is를 기본 형태인 be로 변경합니다. 이러한 방식으로 표제어 추출기는 불규칙 동사 형태를 보다 적절하게 조합합니다.

한계

어간 추출 및 표제어 추출은 주로 영어 텍스트 데이터의 정규화를 지원합니다. 두 텍스트 정규화 기법은 프랑스어, 독일어, 스페인어 등 다른 여러 로마 문자 언어도 지원합니다. 러시아어 등 다른 문자 언어는 Snowball 어간 추출기를 통해 추가로 지원됩니다. 다른 언어, 특히 아랍어를 위한 어간 추출 및 표제어 추출 알고리즘 개발은 최근 지속적으로 연구되고 있는 분야입니다. 아랍어는 교착 형태, 직교 변형, 어휘 모호성 등의 특징으로 인해 상당히 까다로운 언어입니다.8 이러한 요소들은 적어도 영어 단어와 비교할 때 형태적 변형 중에서 기본 단어 형태를 식별하는 체계적인 방법을 어렵게 만듭니다.

이러한 일반적인 한계 외에도 어간 추출 및 표제어 추출에는 각각의 단점이 있습니다. 햄릿의 예에서 볼 수 있듯이, 어간 추출은 문자열을 제거하는 비교적 경험적이고 규칙 기반의 과정입니다. 과잉 어간 추출과 과소 어간 추출은 흔히 발생하는 두 가지 오류입니다. 과잉 어간 추출은 의미적으로 서로 다른 두 단어가 같은 어근으로 축소되는 경우(예: new에서 new로), 과소 어간 추출은 의미적으로 관련된 두 단어가 같은 어근으로 축소되지 않는 경우(예: knavishknave가 각각 knavishknave로)입니다.9 또한 어간 추출은 단어에서 접미사만 제거하므로 표제어 추출처럼 불규칙 동사 형태나 접두사를 고려할 수 없습니다. 물론 어간 추출은 비교적 간단하고 구현이 간단한 반면, 표제어 추출은 처리되는 데이터의 크기에 따라 계산 비용과 시간이 더 많이 소요될 수 있습니다.

Mixture of Experts | 팟캐스트

AI 디코딩: 주간 뉴스 요약

세계적인 수준의 엔지니어, 연구원, 제품 리더 등으로 구성된 패널과 함께 불필요한 AI 잡음을 차단하고 실질적인 AI 최신 소식과 인사이트를 확인해 보세요.

관련 솔루션

관련 솔루션

IBM watsonx Orchestrate

IBM watsonx Orchestrate를 사용하여 확장 가능한 AI 어시스턴트 및 에이전트를 쉽게 설계하고, 반복적인 작업을 자동화하고, 복잡한 프로세스를 간소화합니다.

watsonx Orchestrate 알아보기
자연어 처리 툴 및 API

강력하고 유연한 라이브러리, 서비스 및 애플리케이션 포트폴리오로 인공 지능의 비즈니스 가치를 가속화합니다.

NLP 솔루션 살펴보기
AI 컨설팅 및 서비스

AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.

AI 서비스 살펴보기
다음 단계 안내

IBM watsonx Orchestrate를 통해 확장 가능한 AI 어시스턴트 및 에이전트를 쉽게 설계하고 반복적인 작업을 자동화하며 복잡한 프로세스를 간소화합니다.

watsonx Orchestrate 알아보기 NLP 솔루션 살펴보기
각주

1 Nitin Indurkhya 및 Fred Damerau, Handbook of Natural Language Processing, 2nd edition, CRC Press, 2010년.

2 Zhaofeng Wu, Linlu Qiu, Alexis Ross, Ekin Akyürek, Boyuan Chen, Bailin Wang, Najoung Kim, Jacob Andreas, Yoon Kim, "Reasoning or Reciting? Exploring the Capabilities and Limitations of Language Models Through Counterfactual Tasks," 2023년, https://arxiv.org/abs/2307.02477. Gati Aher, Rosa Arriaga, Adam Kalai, "Using Large Language Models to Simulate Multiple Humans and Replicate Human Subject Studies," Proceedings of the 40th International Conference on Machine Learning, PMLR, Vol. 202, 2023, pp. 337-371, https://proceedings.mlr.press/v202/aher23a.html. Emily Bender 및 Alexander Koller, “Climbing towards NLU: On Meaning, Form and Understanding in the Age of Data,” Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, 2020년, pp. 5185-5198, 10.18653/v1/2020.acl-main.463.

3 Gary Miner, Dursun Delen, John Elder, Andrew Fast, Thomas Hill, Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012년.

4 Christopher Manning 및 Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999년.

5 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980년, pp. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html. Martin Porter, “Snowball: A language for stemming algorithms,” 2001, https://snowballstem.org/texts/introduction.html.

6 Nitin Indurkhya 및 Fred Damerau, Handbook of Natural Language Processing, 2nd edition, CRC Press, 2010년. Christopher Manning 및 Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999년.

7 Janez Brank, Dunja Mladenic, Marko Grobelnik, “Feature Construction in Text Mining,” Encyclopedia of Machine Learning and Data Mining, Springer, 2017년.

8 Abed Alhakim Freihat, Gábor Bella, Mourad Abbas, Hamdy Mubarak, Fausto Giunchiglia, "ALP: An Arabic Linguistic Pipeline," Analysis and Application of Natural Language and Speech Processing, 2022년, pp.67-99, https://link.springer.com/chapter/10.1007/978-3-031-11035-1_4. Abdul Jabbar, Sajid Iqbal, Manzoor Ilahi Tamimy, Shafiq Hussain, Adnan Akhunzada, "Empirical evaluation and study of text stemming algorithms," Artificial Intelligence Review, Vol. 53, 2020년, pp. 5559–5588, https://link.springer.com/article/10.1007/s10462-020-09828-3. Abed Alhakim Freihat, Mourad Abbas, G'abor Bella, Fausto Giunchiglia, "Towards an Optimal Solution to Lemmatization in Arabic," Procedia Computer Science, Vol. 142, 2018년, pp. 132-140, https://www.sciencedirect.com/science/article/pii/S1877050918321707?via%3Dihub.

9 Chris Paice, “Stemming,” Encyclopedia of Database Systems, Springer, 2020년.