/Stemming_porter

Implement stemming in python using Porter stemming algorithm

Primary LanguagePython

포터 스테머 (Porter's stemmer)

Martin F. Porter의 stemming 알고리즘을 이용하여 영어의 어간 추출


프로젝트 기간

  • 대학원 2학기 전산언어학2 수업의 개인과제로 프로젝트를 진행하였습니다.
  • 프로젝트 기간 : 2019.11.21 ~ 2019.12.05

기술 스택

  • Python 3.7.3

스테밍 (Stemming)

  • 스테밍은 영어단어에서 접사(affix)를 제거하고 핵심적인 의미를 가지는 어간(stem)을 추출하는 작업입니다.

  • 이번 프로젝트에서는 1980년도에 발표된 Martin F. Porter의 An algorithm for suffix stripping을 참고하여 스테머를 만들었습니다.

  • 해당 스테머는 스테밍 알고리즘의 1~4단계를 차례대로 적용했으며 전체 코드 확인 , 적용된 세부 규칙들은 아래와 같습니다.

    1단계 규칙 확인
      sses -> ss 
      ies -> i 
      ss -> ss 
      s -> ''
      eed -> e
    
    2단계 규칙 확인
      ational -> ate    
      tional -> tion
      enci -> ence
      anci -> ance
      izer -> ize
      abli -> able
      alli -> al            
      entli -> ent
      eli -> e
      ousli -> ous
      ization -> ize
      ation -> ate
      ator -> ate
      alism -> al
      iveness -> ive
      fulness -> ful
      ousness -> ous
      aliti -> al
      iviti -> ive
      biliti -> ble
    
    3단계 규칙 확인
          icate -> ic
          ative -> ''
          alize -> al
          ical -> ic
          ful -> ''
          ness -> ''
    
    4단계 규칙 확인
          al -> ''
          ance -> ''
          ence -> ''
          er -> ''
          ic -> ''
          able -> ''
          ible -> ''
          ant -> ''
          ement -> ''
          ment -> ''
          ent -> ''
          ion -> ''
          ou -> ''
          ism -> ''
          ate -> ''
          iti -> ''
          ous -> ''
          ive -> ''
          ize -> ''
    

스테밍 결과 예시

  • 1단계 규칙 적용

    단어 스테밍 적용
    cats cat
    studies studi
    cars car

  • 2단계 규칙 적용

    단어 스테밍 적용
    relational relate
    organization organ
    recognizer recogn

    cf) 대부분의 단어들이 2단계 규칙 적용 후 다음 단계의 규칙이 적용되어서 2단계 규칙에서 끝나는 단어들은 찾아보기가 힘듭니다.


  • 3단계 규칙 적용

    단어 스테밍 적용
    formalize formal
    crowdedness crowded
    powerful power

  • 4단계 규칙 적용

    단어 스테밍 적용
    activate activ
    encouragement encourag
    effectiveness effect

    cf) effectiveness->effect은 effectiveness->effective 2단계 규칙을 먼저 적용하고, effective->effect 4단계 규칙을 적용한 결과입니다.


프로젝트의 한계점 및 후속 프로젝트

  • 현재 프로젝트의 스테머는 스테밍 알고리즘의 1~5단계 중에서 4단계까지만 적용하였고 몇몇 규칙들은 빠져있습니다. 따라서 스테밍을 정확하게 하기 위해서 더 많은 규칙을 추가하여 보완할 예정입니다.

  • 스테밍은 형태소 분석에서 많이 사용되지는 하지만, 어간의 일부 철자가 훼손될 수 있으며 사전에 없는 어간을 추출하기도 한다는 단점이 있습니다.

  • 레마타이제이션(Lemmatization)은 어간의 철자를 온전히 보존하고 사전에 있는 어간만을 추출한다는 점에서 스테밍보다 뛰어납니다. 따라서 후속 프로젝트에서는 실생활에서 더 유용하게 적용될 수 있는 레마타이제이션을 구현을 해 볼 것입니다.