• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

코드 해석 문의

20.03.22 19:27 작성 조회수 140

1

안녕하세요. 강의 너무 잘 듣고 있습니다.

아래 코드가 대충 어떤 의미인지는 이해가 가는데 정확히 알고 싶어서요. 아래 코드 해석 좀 해주실 수 있을까요?

    # 5. Stopwords 불용어 제거
    meaningful_words = [w for w in words if not w in stops]
    # 6. 어간추출
    stemming_words = [stemmer.stem(w) for w in meaningful_words]

답변 1

답변을 작성해보세요.

0

안녕하세요. 

5번 불용어제거는 "나, 너, 그리고, 나는, 너는 ..." 과 같이 자주 등장하는 단어는 stops 에 담아두고 해당 단어가 아닐 때만 다시 리스트 컴프리헨션으로 담는 코드 입니다.

불용어를 제거하는 이유는 불용어는 자주 등장하지만 큰 의미를 갖지 않기 때문에 빈도수만 봤을 때 중요하다 여길 수 있으나 의미가 적기 때문에 제거하는 것이고요.

리스트 컴프리헨션은 다음 링크를 참고해 보시면 좋을거 같아요.

https://dojang.io/mod/page/view.php?id=2285

6. 어간추출은 

fly, flying 등 은 날다, 파리, 비행기 등의 의미를 가지는데 형태가 변형되어 있는 것을 원형상태로 만드는 것을 의미해요.

예를 들면 flying 은 fly로 만드는데 stemer도 종류가 여러가지에요. nltk 에서도 스노우볼스테머, 랭카스터 스테머 등 다양한 스테머를 제공하는데 스테머에 따라 원형을 추출을 다르게 해요. 예를 들어 movie => movi 로 추출하기도 하는데 원형을 꼭 유지하지 않지만 변형된 단어를 같은 형태로 만들어 줍니다.

stemming 외에도 lemmatizing이 있는데 lemmatizing 은 원형을 보존하게 됩니다.

이 부분이 좀 더 궁금하다면 다음 링크를 읽어보시면 좋을거 같아요.

https://ko.wikipedia.org/wiki/%EC%96%B4%EA%B0%84_%EC%B6%94%EC%B6%9C