어간 및 기본 화
어간이란 무엇입니까?
어간 법은 단어에서 접사를 제거하여 단어의 기본 형태를 추출하는 데 사용되는 기술입니다. 마치 나무의 가지를 줄기까지 자르는 것과 같습니다. 예를 들어, 단어의 어간eating, eats, eaten 이다 eat.
검색 엔진은 형태소 분석을 사용하여 단어를 색인화합니다. 그렇기 때문에 검색 엔진은 모든 형태의 단어를 저장하는 것이 아니라 줄기 만 저장할 수 있습니다. 이러한 방식으로 형태소 분석은 인덱스 크기를 줄이고 검색 정확도를 높입니다.
다양한 형태소 분석 알고리즘
NLTK에서는 stemmerI, stem()method, interface에는 다음에 다룰 모든 형태소 분석기가 있습니다. 다음 다이어그램으로 이해합시다
포터 스테 밍 알고리즘
기본적으로 잘 알려진 영어 단어의 접미사를 제거하고 대체하도록 설계된 가장 일반적인 형태소 분석 알고리즘 중 하나입니다.
PorterStemmer 클래스
NLTK는 PorterStemmer어간을 원하는 단어에 대한 Porter Stemmer 알고리즘을 쉽게 구현할 수있는 클래스를 사용합니다. 이 클래스는 입력 단어를 최종 어간으로 변환 할 수있는 몇 가지 일반 단어 형식과 접미사를 알고 있습니다. 결과 어간은 종종 동일한 어근 의미를 가진 더 짧은 단어입니다. 예를 봅시다-
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 PorterStemmer Porter Stemmer 알고리즘을 구현하기위한 클래스.
from nltk.stem import PorterStemmer
다음으로 다음과 같이 Porter Stemmer 클래스의 인스턴스를 만듭니다.
word_stemmer = PorterStemmer()
이제 줄기를 원하는 단어를 입력하십시오.
word_stemmer.stem('writing')
산출
'write'
word_stemmer.stem('eating')
산출
'eat'
완전한 구현 예
import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('writing')
산출
'write'
Lancaster 형태소 분석 알고리즘
Lancaster University에서 개발되었으며 또 다른 매우 일반적인 형태소 분석 알고리즘입니다.
LancasterStemmer 클래스
NLTK는 LancasterStemmer우리가 어간을 원하는 단어에 대해 Lancaster Stemmer 알고리즘을 쉽게 구현할 수 있습니다. 예를 봅시다-
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 LancasterStemmer Lancaster Stemmer 알고리즘을 구현하는 클래스
from nltk.stem import LancasterStemmer
다음으로 인스턴스를 만듭니다. LancasterStemmer 다음과 같이 클래스-
Lanc_stemmer = LancasterStemmer()
이제 줄기를 원하는 단어를 입력하십시오.
Lanc_stemmer.stem('eats')
산출
'eat'
완전한 구현 예
import nltk
from nltk.stem import LancatserStemmer
Lanc_stemmer = LancasterStemmer()
Lanc_stemmer.stem('eats')
산출
'eat'
정규식 형태소 분석 알고리즘
이 형태소 분석 알고리즘의 도움으로 자체 형태소 분석기를 구성 할 수 있습니다.
RegexpStemmer 클래스
NLTK는 RegexpStemmer정규식 형태소 분석기 알고리즘을 쉽게 구현할 수있는 클래스입니다. 기본적으로 단일 정규식을 취하고 표현식과 일치하는 접두사 또는 접미사를 제거합니다. 예를 봅시다-
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 RegexpStemmer 정규식 형태소 분석기 알고리즘을 구현하는 클래스입니다.
from nltk.stem import RegexpStemmer
다음으로 인스턴스를 만듭니다. RegexpStemmer 클래스와 다음과 같이 단어에서 제거하려는 접미사 또는 접두사를 제공합니다.
Reg_stemmer = RegexpStemmer(‘ing’)
이제 줄기를 원하는 단어를 입력하십시오.
Reg_stemmer.stem('eating')
산출
'eat'
Reg_stemmer.stem('ingeat')
산출
'eat'
Reg_stemmer.stem('eats')
산출
'eat'
완전한 구현 예
import nltk
from nltk.stem import RegexpStemmer
Reg_stemmer = RegexpStemmer()
Reg_stemmer.stem('ingeat')
산출
'eat'
Snowball 형태소 분석 알고리즘
또 다른 매우 유용한 형태소 분석 알고리즘입니다.
SnowballStemmer 클래스
NLTK는 SnowballStemmerSnowball Stemmer 알고리즘을 쉽게 구현할 수있는 클래스입니다. 15 개의 비 영어 언어를 지원합니다. 이 스팀 클래스를 사용하려면 사용중인 언어의 이름으로 인스턴스를 만든 다음 stem () 메서드를 호출해야합니다. 예를 봅시다-
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 SnowballStemmer Snowball Stemmer 알고리즘을 구현하는 클래스
from nltk.stem import SnowballStemmer
지원하는 언어를 살펴 보겠습니다.
SnowballStemmer.languages
산출
(
'arabic',
'danish',
'dutch',
'english',
'finnish',
'french',
'german',
'hungarian',
'italian',
'norwegian',
'porter',
'portuguese',
'romanian',
'russian',
'spanish',
'swedish'
)
다음으로 사용하려는 언어로 SnowballStemmer 클래스의 인스턴스를 만듭니다. 여기서는 '프랑스어'언어에 대한 형태소 분석기를 만들고 있습니다.
French_stemmer = SnowballStemmer(‘french’)
이제 stem () 메서드를 호출하고 파생 할 단어를 입력합니다.
French_stemmer.stem (‘Bonjoura’)
산출
'bonjour'
완전한 구현 예
import nltk
from nltk.stem import SnowballStemmer
French_stemmer = SnowballStemmer(‘french’)
French_stemmer.stem (‘Bonjoura’)
산출
'bonjour'
기본 화란 무엇입니까?
주형 화 기법은 형태소 분석과 같습니다. lemmatization 후 얻을 출력은 'lemma'라고 불리며, 이는 어간 분석의 출력 인 뿌리 줄기가 아닌 어근 단어입니다. lemmatization 후에 우리는 같은 것을 의미하는 유효한 단어를 얻게 될 것입니다.
NLTK는 WordNetLemmatizer 주위에 얇은 래퍼 인 클래스 wordnet신체. 이 클래스는morphy() 기능 WordNet CorpusReader기본형을 찾는 클래스. 예를 들어 이해합시다.
예
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 WordNetLemmatizer lemmatization 기술을 구현하는 클래스.
from nltk.stem import WordNetLemmatizer
다음으로 인스턴스를 만듭니다. WordNetLemmatizer 수업.
lemmatizer = WordNetLemmatizer()
이제 lemmatize () 메서드를 호출하고 기본형을 찾고자하는 단어를 입력합니다.
lemmatizer.lemmatize('eating')
산출
'eating'
lemmatizer.lemmatize('books')
산출
'book'
완전한 구현 예
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('books')
산출
'book'
형태소 분석과 기본형 화의 차이점
다음 예를 통해 어간과 기본형의 차이점을 이해하겠습니다.
import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('believes')
산출
believ
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize(' believes ')
산출
believ
두 프로그램의 출력은 형태소 분석과 lemmatization의 주요 차이점을 알려줍니다. PorterStemmer수업은 단어에서 'es'를 잘라냅니다. 반면에WordNetLemmatizerclass는 유효한 단어를 찾습니다. 간단히 말해서, 형태소 분석 기법은 단어의 형태 만 보는 반면 lemmatization 기법은 단어의 의미를 보는 것입니다. lemmatization을 적용하면 항상 유효한 단어를 얻을 수 있다는 의미입니다.