본문 바로가기

반응형

분류 전체보기

(291)
BOW 기반의 문서 분류 (1) 5.1 20 뉴스그룹 데이터 준비 빛 특성 추출 20 뉴스그룹 데이터셋: 텍스트 마이닝에서 문서 분류의 성능을 측정하기 위해 가장 많이 사용되는 데이터셋 중 하나 5.1.1 데이터셋 확인 및 분리 사이킷런 20 뉴스그룹 데이터 특징 categories 매개변수를 이용해 20개의 topic 중에서 원하는 토픽을 선택할 수 있다. remove로 필요 없는 데이터를 삭제할 수 있다 각 데이터셋 내에서 .data는 텍스트의 내용을, .target은 숫자로 표시된 라벨을 가져오는 데 사용된다 from sklearn.datasets import fetch_20newsgroups #20개의 토픽 중 선택하고자 하는 토픽을 리스트로 생성 categories = ['alt.atheism', 'talk.religion.m..
카운트 기반의 문서 표현 (5) 4.6 TF-IDF로 성능을 높여보자 TF-IDF: 단어빈도-역문서 빈도 카운트 대신 단어의 빈도에 그 단어가 출현한 문서 수의 역수를 곱하는 것 from sklearn.feature_extraction.text import TfidfTransformer transformer = TfidfTransformer() transformer reviews_tfidf = transformer.fit_transform(reviews_cv) print('#shape of tfidf matrix:', reviews_tfidf.shape) #TF-IDF 행렬의 모양과 카운트 행렬의 모양이 일치하는 것을 확인 #첫 리뷰의 카운트 벡터 중 앞 20개 값 출력 print('#20 count score of the first ..
카운트 기반의 문서 표현 (4) 4.5 카운트 벡터의 활용 문서로부터 특성을 추출하는 하나의 방법 이렇게 추출된 벡터는 머신러닝 기법을 적용하기 위한 입력으로 사용되어 문서 분류로부터 시작해 다양한 분야에 활용 가능 이전에 이 벡터는 문서 간의 유사도를 측정하는 데에 사용 코사인 유사도: 두 벡터가 이루는 각도의 코사인값으로 정의되는 유사도 %matplotlib inline import matplotlib.pyplot as plt import matplotlib as mpl # 그래프에서 마이너스 폰트 깨지는 문제에 대한 대처 mpl.rcParams['axes.unicode_minus'] = False import numpy as np x = np.arange(0,2*np.pi,0.1) # start,stop,step y = np.co..
카운트 기반의 문서 표현 (3) 4.4 한국어 텍스트의 카운트 벡터 변환 4.4.1 데이터 다운로드 import pandas as pd df = pd.read_csv('daum_movie_review.csv') df.head(10) from sklearn.feature_extraction.text import CountVectorizer daum_cv = CountVectorizer(max_features=1000) daum_DTM = daum_cv.fit_transform(df.review) print(daum_cv.get_feature_names_out()[:100]) """ ['10점' '18' '1987' '1도' '1점' '1점도' '2시간' '2시간이' '2편' '5점' '6점' '7점' '8점' 'cg' 'cg가' 'cg는..
카운트 기반의 문서 표현 (2) 4.3 사이킷런으로 카운트 벡터 생성 CountVectorizer의 기능 # data 준비, movie_reviews.raw()를 사용하여 raw text를 추출 reviews = [movie_reviews.raw(fileid) for fileid in movie_reviews.fileids()] from sklearn.feature_extraction.text import CountVectorizer #cv = CountVectorizer() #모든 매개변수에 디폴트 값을 사용하는 경우 #앞에서 생성한 word_features를 이용하여 특성 집합을 지정하는 경우 cv = CountVectorizer(vocabulary=word_features) #cv = CountVectorizer(max_featu..
카운트 기반의 문서 표현 (1) 4.1 카운트 기반 문서 표현의 개념 문서의 의미를 반영해 벡터를 만드는 과정 텍스트 마이닝에서는 텍스트의 특성을 정의하고 그 값으로 텍스트를 구분 카운트 기반의 문서표현에서는 텍스트의 특성을 단어로 표현하고, 특성이 갖는 값은 그 단어가 텍스트에서 나타나는 횟수로 표현 텍스트는 정의한 특성에 대한 특성 값의 집합으로 변환 카운트 기반의 문서표현에서 단어가 특성, 단어의 빈도가 특성의 값 4.2 BOW 기반의 카운트 벡터 생성 NLTK가 제공하는 영화 리뷰 예시 import nltk nltk.download('movie_reviews') nltk.download('punkt') nltk.download('stopwords') """ [nltk_data] Downloading package movie_re..
그래프와 워드 클라우드 (3) 3.3 한국어 문서에 대한 그래프와 워드 클라우드 텍스트를 읽어오면 반드시 형태와 내용을 살펴보는 습관을 들이는 것이 좋음 KoNLPy는 형태소 분석기도 제공하지만 실습을 위한 말뭉치도 제공 from konlpy.corpus import kolaw const_doc = kolaw.open('constitution.txt').read() print(type(const_doc)) #가져온 데이터의 type을 확인 print(len(const_doc)) print(const_doc[:600]) """ 18884 대한민국헌법 유구한 역사와 전통에 빛나는 우리 대한국민은 3·1운동으로 건립된 대한민국임시정부의 법통과 불의에 항거한 4·19민주이념을 계승하고, 조국의 민주개혁과 평화적 통일의 사명에 입각하여 정의·..
그래프와 워드 클라우드 (2) 3.2 워드 클라우드로 내용을 한눈에 보기 워드 클라우드: 텍스트 분석 결과를 보여주는 시각화 도구 중 가장 많이 활용되는 방법 !pip install wordcloud from wordcloud import WordCloud # Generate a word cloud image wordcloud = WordCloud().generate(doc_alice) plt.axis("off") plt.imshow(wordcloud, interpolation='bilinear') #이미지를 출력 plt.show() wordcloud.to_array().shape ## (200, 400, 3) wordcloud = WordCloud(max_font_size=60).generate_from_frequencies(ali..
그래프와 워드 클라우드 (1) 3.1 단어 빈도 그래프 - 많이 쓰인 단어는? 단어 빈도 그래프를 그리기 위해서 먼저 단어의 빈도를 구해야 함 어간 추출: 스테밍 저작권이 만료된 영어 소설을 제공하는 구텐베르크 프로젝트(Project Gutenberg)에서 데이터를 받아 텍스트 마이닝 연습 가능 import nltk nltk.download('gutenberg') from nltk.corpus import gutenberg file_names = gutenberg.fileids() #파일 제목을 읽어온다. print(file_names) """ [nltk_data] Downloading package gutenberg to /root/nltk_data... [nltk_data] Unzipping corpora/gutenberg.zip..
텍스트 전처리 (4) 2.4 품사 태깅 2.4.1 품사의 이해 품사: 명사, 대명사, 수사, 조사, 동사, 형용사, 관형사, 부사, 감탄사와 같이 공통된 성질을 지닌 낱말끼리 모아 놓은 낱말의 갈래 공용 품사 태그 집합 펜 트리뱅크 태그 집합 2.4.2 NLTK를 활용한 품사 태킹 import nltk from nltk.tokenize import word_tokenize tokens = word_tokenize("Hello everyone. It's good to see you. Let's start our text mining class!") print(nltk.pos_tag(tokens)) ## [('Hello', 'NNP'), ('everyone', 'NN'), ('.', '.'), ('It', 'PRP'), ("'s..

반응형