• 티스토리 홈
  • 프로필사진
    SiJun-Park
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
SiJun-Park
  • 프로필사진
    SiJun-Park
    • 분류 전체보기 (121)
      • Unity (80)
        • RPG Project (39)
        • FPS Project (30)
        • 기타 - 개발 (11)
      • 개발 (35)
        • 임베디드 소프트웨어 (7)
        • 컴파일러 (6)
        • 기계학습 (8)
        • 보안 (8)
        • 그래픽스 (2)
        • 그 외 (4)
      • 코딩문제 (5)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • bag of words and Tf-idf
        2024년 10월 01일
        • SiJun-Park
        • 작성자
        • 2024.10.01.:58

        bag of words는 가장 간단하지만 효과적이면서 널리 쓰이는 방법이다.

        ​

        이 방법은 구조와 상관없이 단어의 출현 횟수만 세는 텍스트를 담는 가방이여서 간단하지만. 단어의 순서가 완전히 무시된다는 큰 단점이 존재한다.

        하지만 Tf-idf방법은 말뭉치의 다른 문서보다 특정 문서에 자주 나타나는 단어에 높은 가중치를 주는 방법이다.

        ​

        이번에는 영화 리뷰 감성 분석의 텍스트를 다루는 실습을 하는데 이때 의미 없는 단어나 너무

        빈번하게 사용되어 유용하지 않은 단어를 제외하는 불용어 처리를 해준다.

        ​

        이떄 차원이 높아 차원을 축소하는 차원축소 방법을 사용한다.

        ​

        이때는 관련성이 낮고 중복되거나 불필요한 정보를 담은 차원을 버리고 중요한 차원만 선택하는 것은 특징 선택이라고 하며, 원래 특징값을 변형하여 새로운 특징값을 생성해 차원을 축소하는 방법이 존재한다.

        ​

        정리를 하면 영화 리뷰 감성 분석의 텍스트를 이용하여 불용어를 제거하고 차원을 축소한 뒤 bag of words와 tf-idf의 차이를 확인하는 실습을 진행한다.

        ​

        ​

        가장 먼저 리뷰의 train과 test의 파일을 로드를 하여 줍니다.

        그 다음 텍스트를 읽어보면 등 여러가지 쓸모없는게 존재를 하니 삭제를 해줍니다

        ​

        불용어를 제거하기 위하여 ENGLSISH_STOP_WRODS를 import해주고, CountVectorizer를 명시된 대로 파라메터를 넣어주고 학습을 시켜 줍니다.

        ​

        min_df는 단어장에 포함 되기 위한 다큐먼트 수의 최소빈도/ 비율이고, stop_words는 영어용 stop

        word가 사용이 된다.

        차원 축소를 위해 고차원인 array를 2차원으로 A와 B를 줄여줍니다.

        1-nearest neighbor classifier를 하기 위해 k값을 1로하여 학습을 시켜줍니다.

        여기 까지가 bag of words를 구현을 하였고, 그 다음에는 Tfidvectorizer입니다.

        ​

        Bag of words랑 동일하게 작성을 해주고 정규화를 L2 정규화를 시켜 주고 학습을 시켜줍니다.

        똑같이 2차원으로 차원을 축소 시켜줍니다.

        1-nearest neighbor classifier를 하기 위해 k값을 1로하여 학습을 시켜 주었습니다.

        ​

        결과

        ​

        ​

        Bag of words는 51.13%, tf-idf는 53.2%로 tf-idf가 bag of words보다 더 정확도가 높았습니다.

        ​

        그 이유를 생각을 해보니 bag of words는 단어의 순서가 완전히 무시된다는 큰 단점이 있다는 것이

        생각이 났습니다.

        Tf-idf는 BOW 특성 추출과 tf-idf 변환을 수행을 하기 때문에, 즉 자주 나타나는 단어에 높은 가중치를 주고 L2 정규화를 하였기 때문에 BOW 방법보다는 조금 더 높은 정확도가 나올 것이라고 생각을 합니다.

        ​

        만약에 ti-idf 파라메타를 다르게 바꾸면 어떻게 될까 궁금해서 추가를 해보았습니다.

        Stop_words와 l2를 넣어줬을 경우

        결과는 약 57%가 나왔습니다.

        BOW와 같이 Min_df를 5까지 추가를 한 후

        약 57.1%가 나왔습니다.

        ​

        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바