편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
13번째 줄: | 13번째 줄: | ||
### 커스텀 함수 ### | ### 커스텀 함수 ### | ||
# 불필요한 용어 제거 | # 불필요한 용어 제거 | ||
zTdmMatrixRemoveTerms | zTdmMatrixRemoveTerms <- function(m, t) { | ||
m[!rownames(m) %in% t,] | m[!rownames(m) %in% t,] | ||
} | } | ||
# 용어(들)을 하나로 병합(합산) | # 용어(들)을 하나로 병합(합산) | ||
zTdmMatrixMergeTerms | zTdmMatrixMergeTerms <- function(m, froms, to) { | ||
names | names <- names(dimnames(m)) | ||
for(from in froms) { | for(from in froms) { | ||
if(from == to) next | if(from == to) next | ||
24번째 줄: | 24번째 줄: | ||
if(!(from %in% rownames(m))) next | if(!(from %in% rownames(m))) next | ||
if(!(to %in% rownames(m))) { | if(!(to %in% rownames(m))) { | ||
m | m <- rbind(m, rep(0,ncol(m))) | ||
rownames(m)[length(rownames(m))] | rownames(m)[length(rownames(m))] <- to | ||
} | } | ||
m[to,] | m[to,] <- m[from,] + m[to,] | ||
m | m <- m[!rownames(m) %in% from,] | ||
} | } | ||
names(dimnames(m)) | names(dimnames(m)) <- names | ||
return(m) | return(m) | ||
} | } | ||
# 정규식으로 잡히는 용어들을 하나로 병합(합산) | # 정규식으로 잡히는 용어들을 하나로 병합(합산) | ||
zTdmMatrixMergeTermsGrep | zTdmMatrixMergeTermsGrep <- function(m, grepstr, to) { | ||
return(zTdmMatrixMergeTerms(m, rownames(m)[grep(grepstr,rownames(m))], to)) | return(zTdmMatrixMergeTerms(m, rownames(m)[grep(grepstr,rownames(m))], to)) | ||
} | } | ||
###### | ###### | ||
docs | docs <- c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야") | ||
## docs1 = iconv(docs1, "CP949", "UTF-8") ## 윈도우 R스튜디오 하드코딩 데이터입력시 인코딩 변환 | ## docs1 = iconv(docs1, "CP949", "UTF-8") ## 윈도우 R스튜디오 하드코딩 데이터입력시 인코딩 변환 | ||
tdm | tdm <- TermDocumentMatrix(Corpus(VectorSource(docs)),control=list( | ||
removePunctuation = T, | removePunctuation = T, | ||
stopwords = F) | stopwords = F) | ||
) | ) | ||
mat | mat <- as.matrix(tdm) | ||
mat | mat | ||
## Docs | ## Docs | ||
60번째 줄: | 60번째 줄: | ||
## 친구들 0 1 0 | ## 친구들 0 1 0 | ||
mat | mat <- zTdmMatrixMergeTerms(mat, "반갑다", "안녕") | ||
mat | mat | ||
## Docs | ## Docs |