본문 바로가기
## 오래된 게시글 (미관리) ##/R

47. 비정형 데이터 마이닝 - 텍스트마이닝

by #Glacier 2018. 11. 23.
반응형

안녕하세요. 이제 거의 막바지입니다.. 곧 시험을 보고 개강도 할테죠..ㅎㅎ..

오늘은 비정형 데이터마이닝 파트, 텍스트마이닝을 알아보도록 하겠습니다.

 텍스트마이닝은 1980년대에 부상하였지만, 당시만 해도 노동집약적이고 수동적인 방법으로 취급받아 텍스트마이닝의 열풍이 시들해졌습니다.

국내에는 데이터마이닝 기술이 발전했던 1990년대 후반부터 연구가 진행되었다가,

데이터마이닝 기술에 자연어처리(Natural Language Process)기술이 접목되면서 발전하기 시작하였습니다.


텍스트마이닝은 문서에 텍스트를 분리하여 그 문서를 요약/분류/군집으로 나눌 수 있도록 함으로서 회사의 전용메일로 들어온 메일들을 부서별로 분류하거나,

음성인식을 통한 자동 요약, 트위터의 트윗들을 분석해서 감성분석을 하는 등 다양하게 활용되고 있습니다.


1. 텍스트 마이닝 정의


 : 다양한 형태의 문서 ( 웹 콘텐츠, PDF, MS Office 파일, XML, 텍스트 파일 등)로부터 텍스트를 획득하여 이를 문서별 단어의 행렬로 만들어 추가적 분석이나

  데이터마이닝 기법을 적용하여 의사결정을 지원하는 방법이다.


 : 다양한 형태의 문서로부터 텍스트를 추출해 이를 하나의 레코드로 만들어 단어 구성에 따라 마트를 구성, 이들 간의 관계르 이용해 감성분석(sentiment analysis),

   워드 클라우드(word cloud)를 수행. 이 정보를 클러스터링이나 분류(classification)와 사회연결망 분석에 활용한다.


2. 텍스트마이닝 기능

 : 문서 요약(summarization), 문서 분류(classification), 문서 군집(clustering), 특성 추출(feature extraction)


3. 정보 검색의 적절성

 : 정확도(Precision) - 분석 모델이 결과 중에서 정답과 일치하는 비율이다. A / (A+B)

 : 재현율(Recall) - 실제 정답 중에서 분석 모델에서 정답이라고 내놓은 결과의 비율이다. A / (A+C)


4. Corpus
 데이터마이닝의 절차 중 데이터의 정제, 통합, 선택, 변환의 과정을 거친 구조화된 단계로 더 이상 추가적인 절차 없이 데이터마이닝 알고리즘 실험에 활용될 수

 있는 상태이다.

 

 텍스트마이닝 패키지인 tm패키지에서 문서를 관리하는 기본 구조이다.


 1) VCorpus (Short for Volatile Corpus) : 메모리에서만 유지된다.

 2) PCorpus (Permanent Corpus) : R외부의 DB나 파일로 관리된다.

 3) DirSource, VectorSource, DataframeSource : 디렉토리나 벡터, 데이터 프레임을 읽어 들여 생성한다.


 -문서 전처리 절차 (tm package함수)

 : 읽어 들일 수 있는 reader 종류 : Word, PDF, CSV 등 다양한 문서형식으로 읽어 들일 수 있다.


 *XML문서를 text로 전환 : tm_map(data, as.PlainTextDocument)함수를 사용한다.

 *Space제거 : tm_map(data, stripWhitespace)함수를 사용한다.

 *대문자->소문자 변환 : tm_map(data, tolower) 함수를 사용한다.

 *띄어쓰기, 시제 표준화 : tm_map(data, removewords, stopwords("english") 함수를 사용한다.


5. Term-Document Matrix


 -문서번호와 단어 간의 사용 여부 또는 빈도수를 이용해 matrix를 만드는 작업이다.


install.packages("tm")

library(tm)
data(crude)


dtm<-DocumentTermMatrix(crude)
dtm
<<DocumentTermMatrix (documents: 20, terms: 1266)>>
Non-/sparse entries: 2255/23065
Sparsity           : 91%
Maximal term length: 17
Weighting          : term frequency (tf)

inspect(dtm)

<<DocumentTermMatrix (documents: 20, terms: 1266)>>
Non-/sparse entries: 2255/23065
Sparsity           : 91%
Maximal term length: 17
Weighting          : term frequency (tf)
Sample             :
     Terms
Docs  and for its mln oil opec prices said that the
  144     9    5   6   4  11   10      3    9   10  17
  236    7    4   8   4   7    6      2    6    4  15
  237    11    3   3   1   3    1      0    0    1  30
  242    3    1   0   0   3    2      1    3    0   6
  246    9    6   3   0   4    1      0    4    2  18
  248    6    2   2   3   9    6      7    5    2  27
  273    5    4   0   9   5    5      4    5    0  21
  489    5    4   2   2   4    0      2    2    1   8
  502    6    5   2   2   4    0      2    2    1  13
  704    5    3   1   0   3    0      2    3    3  21


findFreqTerms(dtm, 10) #10회 이상 사용된 단어 탐색

 [1] "about"      "and"        "are"        "bpd"        "but"       
 [6] "crude"      "dlrs"       "for"        "from"       "government"
[11] "has"        "its"        "kuwait"     "last"       "market"    
[16] "mln"        "new"        "not"        "official"   "oil"       
[21] "one"        "opec"       "pct"        "price"      "prices"    
[26] "reuter"     "said"       "said."      "saudi"      "sheikh"    
[31] "that"       "the"        "they"       "u.s."       "was"       
[36] "were"       "will"       "with"       "would"    

findAssocs(dtm, "about", 0.7) #연관성이 0.7이상인 단어들을 표시하는 코드

$about
with 
0.74


6.Dictionary


-복수의 문자들의 집합으로 분석에 사용하고자 하는 단어들의 집합이다.

-분석하고자 하는 단어들을 별도 사전으로 정의해서 해당 단어들에 대해서만 결과를 산출해 보려고 할 때 사용한다.

-혹은 제거하고자 하는 단어들을 별도로 만들기도 한다.


7.감성분석

-문장에서 사용된 단어의 긍정과 부정 여부에 따라 얼마나 긍정적인 단어가 많은지 여부로 긍정 문장인지를 평가한다.

-브랜드에 대한 평판이 긍정적인 추이로 증가하는지, 감소하고 있는지 분석 할 수 있다.


8.한글 처리

-한글 텍스트마이닝 패키지 KoNLP

-NLP(Natural Language Processing, 자연어처리)
-명사추출(extractNoun("문장") 함수 사용..


오늘은 여기까지 알아보도록 하겟습니다!

반응형