편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
==개요== | ==개요== | ||
;R TermDocumentMatrix 용어 병합 | ;R TermDocumentMatrix 용어 병합 | ||
< | ==zTdmMergeTerms()== | ||
* 1개 또는 여러 개의 기존용어(froms)를 하나의 신규용어(to)로 병합(합산)한다. | |||
* 새로운 용어(to)가 tdm 내에 있어도 되고 없어도 된다. | |||
* 기존용어(froms)에 to가 들어있는 경우 무시된다. | |||
<source lang='r'> | |||
library(tm) # TermDocumentMatrix() | library(tm) # TermDocumentMatrix() | ||
zTdmMergeTerms | zTdmMergeTerms <- function(tdm, froms, to) { | ||
froms | froms <- froms[froms!=to] | ||
if(!to %in% rownames(tdm)) { | if(!to %in% rownames(tdm)) { | ||
tdm$nrow | tdm$nrow <- as.integer(tdm$nrow + 1) | ||
rownames(tdm) | rownames(tdm) <- append(rownames(tdm),to) | ||
} | } | ||
for(from in froms) { | for(from in froms) { | ||
nms | nms <- rownames(tdm) | ||
t1 | t1 <- tdm[which(nms==from),] + tdm[which(nms==to),] | ||
rownames( | rownames(t) <- to | ||
t2 | t2 <- tdm[which(nms!=from & nms !=to),] | ||
t1$i | t1$i <- t1$i + t2$nrow | ||
t2$i | t2$i <- c(t2$i, t1$i) | ||
t2$j | t2$j <- c(t2$j, t1$j) | ||
t2$v | t2$v <- c(t2$v, t1$v) | ||
t2$nrow | t2$nrow <- as.integer(t2$nrow + 1) | ||
rownames(t2) | rownames(t2) <- append(rownames(t2),to) | ||
tdm | tdm <- t2 | ||
} | } | ||
return(tdm) | return(tdm) | ||
} | } | ||
#### tdm1 | #### tdm1 | ||
docs1 | docs1 <- c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야") | ||
docs1 <- iconv(docs1, "CP949", "UTF-8") # 윈도우 R스튜디오 하드코딩 데이터입력시 인코딩 변환 | |||
tdm1 | tdm1 <- TermDocumentMatrix(Corpus(VectorSource(docs1)),control=list(removePunctuation=T,stopwords=F)) | ||
inspect(tdm1) | inspect(tdm1) | ||
</ | ## <<TermDocumentMatrix (terms: 4, documents: 3)>> | ||
## Non-/sparse entries: 5/7 | |||
# | ## Sparsity : 58% | ||
## Maximal term length: 3 | |||
## Weighting : term frequency (tf) | |||
## Sample : | |||
## Docs | |||
## Terms 1 2 3 | |||
## 반갑다 0 1 1 | |||
## 안녕 2 0 0 | |||
## 친구들 0 1 0 | |||
## 친구야 0 0 2 | |||
inspect(zTdmMergeTerms(tdm1,"반갑다","안녕")) | inspect(zTdmMergeTerms(tdm1,"반갑다","안녕")) | ||
</ | ## <<TermDocumentMatrix (terms: 3, documents: 3)>> | ||
## Non-/sparse entries: 5/4 | |||
# | ## Sparsity : 44% | ||
## Maximal term length: 3 | |||
## Weighting : term frequency (tf) | |||
## Sample : | |||
## Docs | |||
## Terms 1 2 3 | |||
## 안녕 2 1 1 | |||
## 친구들 0 1 0 | |||
## 친구야 0 0 2 | |||
inspect(zTdmMergeTerms(tdm1,c("반갑다","안녕","친구야"),"인사")) | inspect(zTdmMergeTerms(tdm1,c("반갑다","안녕","친구야"),"인사")) | ||
</ | ## <<TermDocumentMatrix (terms: 2, documents: 3)>> | ||
## Non-/sparse entries: 4/2 | |||
# | ## Sparsity : 33% | ||
## Maximal term length: 3 | |||
## Weighting : term frequency (tf) | |||
## Sample : | |||
## Docs | |||
## Terms 1 2 3 | |||
## 인사 2 1 3 | |||
## 친구들 0 1 0 | |||
inspect(zTdmMergeTerms(tdm1,c("반갑다","안녕","친구야"),"안녕")) | inspect(zTdmMergeTerms(tdm1,c("반갑다","안녕","친구야"),"안녕")) | ||
</ | ## <<TermDocumentMatrix (terms: 2, documents: 3)>> | ||
## Non-/sparse entries: 4/2 | |||
# | ## Sparsity : 33% | ||
## Maximal term length: 3 | |||
</ | ## Weighting : term frequency (tf) | ||
## Sample : | |||
## Docs | |||
## Terms 1 2 3 | |||
## 인사 2 1 3 | |||
## 친구들 0 1 0 | |||
</source> | |||
==같이 보기== | ==같이 보기== | ||
69번째 줄: | 97번째 줄: | ||
[[분류: R tm]] | [[분류: R tm]] | ||