Python 자연 언어 처리 의 어간,어형 과 최대 일치 알고리즘 코드 상세 설명
자연 언어 처리 에서 매우 중요 한 조작 중 하 나 는 바로 stemming 과 lemmatization 이 라 고 하 는데 이들 은 매우 유사 하 다.이들 은 어형 규범화 의 두 가지 중요 한 방식 으로 모두 어형 을 효과적으로 합병 하 는 목적 을 달성 할 수 있 고 이들 은 관련 도 있 고 차이 점도 있다.
1.어간 추출(stemming)
정의:Stemmingistheprocessforreducinginflacted(orsometimes derived)wordstotheirstem,baseorrootform―generallyawrittenwordform.
설명 하 자 면 Stemming 은 단 어 를 추출 하 는 어간 이나 어근 형식 이다.
NLTK 에 서 는 Porterstemmer,Lancaster Stemmer,Snowball Stemmer 등 세 가지 가장 많이 사용 되 는 단어 추출 기 인 터 페 이 스 를 제공 합 니 다.
Porter Stemmer 는 Porter 어간 추출 알고리즘 을 기반 으로 예 를 들 어 보 았 습 니 다.
>>> from nltk.stem.porter import PorterStemmer
>>> porter_stemmer = PorterStemmer()
>>> porter_stemmer.stem(‘maximum')
u'maximum'
>>> porter_stemmer.stem(‘presumably')
u'presum'
>>> porter_stemmer.stem(‘multiply')
u'multipli'
>>> porter_stemmer.stem(‘provision')
u'provis'
>>> porter_stemmer.stem(‘owed')
u'owe'
Lancaster Stemmer 는 Lancaster 어간 추출 알고리즘 을 바탕 으로 예 를 들 어
>>> from nltk.stem.lancaster import LancasterStemmer
>>> lancaster_stemmer = LancasterStemmer()
>>> lancaster_stemmer.stem(‘maximum')
‘maxim'
>>> lancaster_stemmer.stem(‘presumably')
‘presum'
>>> lancaster_stemmer.stem(‘presumably')
‘presum'
>>> lancaster_stemmer.stem(‘multiply')
‘multiply'
>>> lancaster_stemmer.stem(‘provision')
u'provid'
>>> lancaster_stemmer.stem(‘owed')
‘ow'
Snowball Stemmer 는 Snowball 어간 추출 알고리즘 을 바탕 으로 예 를 들 어
>>> from nltk.stem import SnowballStemmer
>>> snowball_stemmer = SnowballStemmer(“english”)
>>> snowball_stemmer.stem(‘maximum')
u'maximum'
>>> snowball_stemmer.stem(‘presumably')
u'presum'
>>> snowball_stemmer.stem(‘multiply')
u'multipli'
>>> snowball_stemmer.stem(‘provision')
u'provis'
>>> snowball_stemmer.stem(‘owed')
u'owe'
2.어형 복원(lemmatization)정의:Lemmatisation(orlemmatization)inlinguistics,istheprocessofgrouping togetherthedifferent infected formsofawordsotheycanbeanalysedassingleitem.
이 를 통 해 알 수 있 듯 이 Lemmatisation 은 모든 형식의 언어 어 휘 를 일반 형식 으로 복원 하 는 것 이다.상대 적 으로 어간 추출 은 간단 한 경량급 의 어형 병합 방식 으로 마지막 에 얻 은 결 과 는 어간 이 므 로 반드시 실제 적 인 의 미 를 가 진 것 은 아니다.어형 복원 처리 가 상대 적 으로 복잡 하고 결 과 를 얻 은 것 은 단어의 원형 으로 일정한 의 미 를 담 을 수 있 으 며 어간 추출 에 비해 연구 와 응용 가치 가 있다.
우 리 는 뒤에서 MaxMatch 알고리즘 과 결 합 된 더욱 복잡 한 예 를 제시 할 것 이다.
여기 서 어간 추출 과 어형 복원 의 관계 와 차 이 를 소개 한다.
어형 복원(lemmatization)은 모든 형식의 언어 어 휘 를 일반 형식 으로 복원 하고 어간 추출 이다.
(stemming)은 단 어 를 추출 하 는 어간 이나 어근 형식(완전한 의 미 를 표현 할 수 있 는 것 은 아니다)이다.어형 복원 과 어간 추출 은 어형 규범화 의 두 종류 이다
중요 한 방식 은 모두 효과적으로 어형 을 합병 하 는 목적 을 달성 할 수 있 고,양 자 는 관계 도 있 고 차이 점도 있다
현재 공통점 과 관 계 를 다음 과 같은 네 가지 로 요약 한다.
(1)목표 가 일치 합 니 다.어간 추출 과 어형 환원 의 목 표 는 모두 단어의 굴절 형태 나 파생 형 태 를 간소화 하거나 어간(stem)으로 병합 하 는 것 이다.
또는 원형의 기초 형식 은 모두 단어의 서로 다른 형태 에 대한 통일 적 인 병합 과정 이다.
(2)결과 부분 이 교차 된다.어간 추출 과 어형 환원 은 상호 배척 관계 가 아니 라 그 결 과 는 일부 교차 된다.일부 단 어 는 이 두 가지 방법 을 이용 하여 모두 같은 어형 전환 효 과 를 얻 을 수 있다.dogs
'dog'이 라 고 하 는데 그 원형 도'dog'이다.
(3)주류 실현 방법 은 유사 하 다.현재 어간 추출 과 어형 복원 을 실현 하 는 주류 실현 방법 은 모두 언어 에 존재 하 는 규칙 을 이용 하거나 사전 맵 을 이용 하여 어간 을 추출 하거나 단 어 를 얻 는 원형 이다.
(4)응용 분야 가 비슷 하 다.주로 정보 검색 과 텍스트,자연 언어 처리 등에 응용 되 는데 이들 은 모두 이런 응용의 기본 적 인 절차 이다.
이들 의 차 이 는 다음 과 같은 5 가지 로 요약 된다.
(1)원리 적 으로 어간 추출 은 주로'축소'하 는 방법 으로 단 어 를 어간 으로 전환한다.예 를 들 어'cats'를'cat'로 처리 하고'effective'를'effect'로 처리한다.한편,어형 복원 은 주로'전환'을 사용한다.
'drove'를'drive'로 처리 하고'driving'을'drive'로 처리 하 는 등 단 어 를 원형 으로 바 꾸 는 방법 이다.
(2)복잡성 에 있어 서 어간 추출 방법 은 상대 적 으로 간단 하고 어형 은 단어의 원형 으로 돌아 가 는 것 이 원칙 이 며 어형 을 분석 해 야 한다.접미사 의 전환 뿐만 아니 라 품사 식별 도 하고 같은 어형 을 구분 해 야 한다.
원형 이 다른 단어의 차이.품사 표시 의 정확도 도 어형 복원 의 정확도 에 직접적인 영향 을 미 치기 때문에 어형 복원 은 더욱 복잡 하 다.
(3)실현 방법 에 있어 서 어간 추출 과 어형 복원 실현 의 주류 방법 은 유사 하지만 이들 은 구체 적 인 실현 에 있어 각각 중심 을 둔다.어간 추출의 실현 방법 은 주로 규칙 변 화 를 이용 하여 접미사 의 제거 와 축 소 를 하여 단어의 간소화 효 과 를 얻는다.어형 은 원칙 이 상대 적 으로 복잡 하고 복잡 한 형태 변화 가 있어 단순히 규칙 에 따라 잘 완성 할 수 없다.사전 에 더욱 의존 하여 어형 변화 와 원형 매 핑 을 하여 사전 의 유효 어 를 생 성 한다.
(4)결과 적 으로 어간 추출 과 어형 복원 도 일부 차이 가 있다.어간 추출 결 과 는 완전 하고 의미 있 는 단어 가 아니 라 단어의 일부분 일 수 있 습 니 다.예 를 들 어'revival'어간 추출 결 과 는'reviv'이 고'ailiner'어간 추출 결 과 는'airlin'입 니 다.한편,어형 복원 처 리 를 통 해 얻 은 결 과 는 일정한 의 미 를 가 진 완전한 단어 로 보통 사전 의 효과 적 인 단어 이다.
(5)응용 분야 에서 도 각자 의 중심 이 있다.둘 다 정보 검색 과 텍스트 처리 에 활용 되 지만 중심 은 다르다.어간 추출 은 Solr,Lucene 등 정보 검색 분야 에 더 많이 응용 되 고 검색 을 확장 하 는 데 사용 되 며 입도 가 비교적 굵다.어형 복원 은 주로 텍스트 발굴,자연 언어 처리 에 응용 되 고 더욱 세밀 하고 정확 한 텍스트 분석 과 표현 에 사용 된다.
상대 적 으로 어간 추출 은 간단 한 경량급 의 어형 병합 방식 으로 마지막 에 얻 은 결 과 는 어간 이 므 로 반드시 실제 적 인 의 미 를 가 진 것 은 아니다.어형 복원 처리 가 상대 적 으로 복잡 하고 결 과 를 얻 은 것 은 단어의 원형 으로 일정한 의 미 를 담 을 수 있 으 며 어간 추출 에 비해 연구 와 응용 가치 가 있다.
3.최대 일치 알고리즘(MaxMatch)
MaxMatch 알고리즘 은 중국어 자연 언어 처리 에서 단 어 를 나 누 는 데 자주 사용 된다.보통 영어 의 한 마디 에 있 는 단어 들 은 빈 칸 으로 나 뉘 는데 이것 은 매우 straight forward 이지 만 중국 어 는 이런 것 이 없다.예 를 들 어'나 는 중화 인민공화국 을 사랑한다'는 말 이 분사 되 는 결 과 는 다음 과 같 을 수 있다.'중화 인민공화국'은 분명히 전문 명사 이기 때문이다.우리 가 후 자 를 선택 한 전략 은 바로 MaxMatch,즉 최대 일치 입 니 다.'중화 인민공화국'이라는 단 어 는 분명히'중화','인민','공화국'이라는 단어 보다 길 기 때문이다.
우 리 는 영어 의 예 를 통 해 MaxMatch 알고리즘 을 보 여줄 수 있다.알고리즘 은 오른쪽 에서 부터 문자열 의 길 이 를 점점 줄 여 일치 할 수 있 는 최대 길이 의 문자열 을 구 합 니 다.우리 가 얻 은 어 휘 는 어떤 단어 형의 변 화 를 포함 할 수 있 음 을 고려 하여 Lemmatisation 을 사용 한 다음 에 어고 에서 일치 하 는 검색 을 합 니 다.
from nltk.stem import WordNetLemmatizer
from nltk.corpus import words
wordlist = set(words.words())
wordnet_lemmatizer = WordNetLemmatizer()
def max_match(text):
pos2 = len(text)
result = ''
while len(text) > 0:
word = wordnet_lemmatizer.lemmatize(text[0:pos2])
if word in wordlist:
result = result + text[0:pos2] + ' '
text = text[pos2:]
pos2 = len(text)
else:
pos2 = pos2-1
return result[0:-1]
알고리즘 의 실현 효 과 를 살 펴 보 겠 습 니 다.
>>> string = 'theyarebirds'
>>> print(max_match(string))
they are birds
물론 상기 코드 는 부족 합 니 다.문자열 에 비 자모 문자 가 존재 할 때(예 를 들 어 숫자 구두점 등)문제 가 있 을 수 있 습 니 다.흥미 있 는 독 자 는 스스로 이 판본 의 실현 을 보완 하려 고 시도 해도 무방 하 다.총결산
이상 은 바로 본 논문 에서 Python 자연 언어 처리 에 관 한 단어 입 니 다.어형 과 MaxMatch 알고리즘 코드 에 대한 상세 한 설명 의 모든 내용 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.관심 이 있 는 친 구 는 본 사 이 트 를 계속 참고 할 수 있 습 니 다.
Python 프로 그래 밍 은 NLTK 를 사용 하여 자연 언어 처 리 를 상세 하 게 설명 합 니 다.
python 파충류 시리즈 Selenium 오리 엔 테 이 션 호랑이 농구 사진 상세 설명
python 포환 의 운행 궤적 코드 공유
부족 한 점 이 있 으 면 댓 글로 지적 해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.