Python 자연 언어 처리 의 어간,어형 과 최대 일치 알고리즘 코드 상세 설명

본 고 는 주로 어간 추출 과 어형 복원 및 최대 일치 알고리즘 에 대해 소개 하고 코드 예제,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 포환 의 운행 궤적 코드 공유
부족 한 점 이 있 으 면 댓 글로 지적 해 주세요.

좋은 웹페이지 즐겨찾기