Chapter4 – 5. 비정형 데이터 마이닝

5. 비정형 데이터 마이닝

(1) 텍스트 마이닝

가) 텍스트 마이닝 기능 요약

– 문서 요약 , 문서 분류 , 문서 군집 ,특성 추출

나) 정보 검색의 적절성

– 정확도 : 판단 긍정 / (판단 긍정 + 판단 부정)

– 재현율 : 판단 긍정 / (판단 긍정 + 전체 긍정)

– Corpus : 더 이상 추가 절차 없이 데이터 마이닝을 진행 할 수 있는 상태

. 패키지 : tm

. Corpus : 메모리에서만 유지

. PCorpus : DB 나 파일로 유지

. R 에서 정의 : Corpus( 비정형 데이터, readerControl=list(language=”lat”))

. R 에서 사용 : Corpus[[1]]

. Vector 읽기 : Corpus(VectorSource(Vector))

. XML 읽기 : (XML -> Text) : tm_map(데이터, as.PlainTextDocument)

. 공백 제거 : tm_map(데이터, stripWhitespace)

. CASE 변경 : tm_map(데이터, tolower)

. 시제등 삭제 : tm_map(데이터, removeWords, stopwords(“english”))

– Create Term-Document Matrix

. 단어별 빈도 테이블 생성 : DocumentTermMatrix(데이터)

. 빈도 이상 단어 조회 : findFreqTerms(빈도 테이블, 10)

. 연관 데이터 탐색 : findAssocs(빈도 테이블, 원하는 단어, 연관 정도)

. 빈도 이상 데이터 삭제 : removeSparseTerms(빈도 테이블, 밀도 )

– Dictionary

. 개인사전 <- Dictionary(c(“aa”, “bb” ,”cc”))

. inspect(DocumentTermMatirx(데이터, list(dictionary=개인사전))

– 감성 분석

. 트위터 패키지 : twitteR

. R 사용 : searchTwitter( 계정, 건수, ?)

. 긍정, 부정 단어 리스트 정의

. laply 사용 : laply( 데이터 , 펑션 )

. 사용할 펑션 정의 (특수 문자등 제거, gsub() -> match 함수 사용 긍정, 부정 List 와 원문 비교 -> 긍정 합 – 부정 합 -> 점수 리턴

– 한글 처리

. KoNLP 사용

. 명사 추출 : extractNoun(데이터)

. 연관 단어 분석 : crossTable (데이터 )

– 워드 클라우드

. 패키지 : wordcloud

. 사용 : wordcloud(테이블 컬럼 명, 각 컬럼 데이터(숫자) , colors = C(색상)))

(2) 사회 연결망 분석

가) 사회 연결망 분석 정의

– SNA 정의

. 개인과 집단들 간의 관계를 노드와 링크로서 모델링해 그것의 위상구조와 확산 및 진화 과정을 계량적을 분석

. 방법 : 집합론적 방법, 그래프를 이용한 방법, 행렬을 이용한 방법

. 연결정도 중심성 : 노드에 연결된 점들의 합

. 근접 중심성 : 간접적으로 연결된 노드들의 거리를 합산

. 매개 중심성 : 자신만 연결할 수 있는 정도에 대한 측정

. 위세 중심성 : 노드에 가중치를 둬 연결된 노드의 가중치의 합

나) R 을 이용한 SNA 그래프 분석

– SNA 적용

. 방향 그래프와 무방향 그래프

. vertex : link , edge : node

. 데이터

| FROM | TO | 속성1 | 속성2|

. 그래프 생성 : plot( graph.data.frame(데이터) )

. 유형별 조회 : get.edge.attribute( 그래프 데이터, 속성 1)

. 방향 제거 : as.undirected(그래프 데이터, mode )

. Vertex 속성 변경 : set.vertex.attribute(그래프 데이터, i , j , 속성)

. E(그래프 데이터) : 에지 접근

. V(그래프 데이터) : Vertex 접근

. Edge 삭제 : delete(그래프 데이터, E(그래프 데이터)[조건])

. 레이아웃 최적화 (Frucheterman-Rheingod 알고리즘) : laout.frucherman.reingold(그래프 데이터)

. vertex 색상 : plot ( 그래프 데이터, layout 지정, vertex.clolor = 그래프 데이터의 색상 속성, vertex.label = 텍스트 속성, edge.arrow.size =화살표 사이즈 , vertex.size = 사이즈 속성 , main = 제목 )

. 그래프 저장 : write.graph(그래프 객체 , file=파일명, format=포맷)

– 노드 레벨 통계 값

. outdegree : 밖으로 나가는 edge ,degree(그래프 데이터, mode=”out”)

. indegree : 안으로 들어오는 edge ,degree(그래프 데이터, mode=”in”)

. 특정 Vertex 에 연결된 Vertex 집합 정보 : subcomponent( i , j , mdoe= m )

. 가장 단거리 경로 : shortest.paths(그래프 데이터, mode=”in”)

– 네트워크 레벨 통계량

. Degree, Shortest Path, density, Reciprocity (상호성) , Transitivity (타동성, 이행성)

– Community Dectection

. degree 가 0인 데이터를 삭제하고 방향성을 삭제 그룹 데이터를 유추

– WALKTRAP (Community Detection Algorithm)

. 각 버택스를 하나의 커뮤니티로 취급하면서 시작해 더 큰 그룹을 병합하면서 반복 수행

. 실행 : walktrap.community(그래프 데이터, steps=수행할 스탭수, modularity=TRUE)

. 그래프 : as.dendrogram(분석 결과 값, use.modalrity=TRUE)

– EDGE BETWEENNESS METHOD

. 그래프에 존재하는 최단거리 중 몇개가 그 에지를 거쳐가는지로 측정 함

. 실행 : edge.betweenness.community(그래프 데이터)

. 그래프 : as.dendrogram(분석 결과 값)

다) 활용 방안

– 단어의 연관성 분석

– 패키지 : IGraph

– 사용 : g <- graph.adjacency( termMatrix, weight=T, mode=”undirected”)

– 단순화 : simplify(g)

– 레이아웃 지정 : layout <- layout.frucherman.reingold(g)

– 그래프 : plot(g, layout = layout)

Leave a Reply

Your email address will not be published. Required fields are marked *