"R TermDocumentMatrix 행렬 용어 병합"의 두 판 사이의 차이

44번째 줄: 44번째 줄:
##  친구들 0 1 0
##  친구들 0 1 0
##  친구야 0 0 2
##  친구야 0 0 2
zTdmMatrixRemoveTerms(mat, c("반갑다","친구야"))
##        Docs
## Terms    1 2 3
## 안녕    2 1 1
## 친구들  0 1 0


mat <- zTdmMatrixMergeTerms(mat, "반갑다", "안녕")
mat <- zTdmMatrixMergeTerms(mat, "반갑다", "안녕")
53번째 줄: 59번째 줄:
##  친구야 0 0 2
##  친구야 0 0 2


mat <- zTdmMatrixMergeTerms(mat, "친구야", "친구")
zTdmMatrixMergeTerms(mat, c("친구야","친구들"), "친구")
mat <- zTdmMatrixMergeTerms(mat, "친구들", "친구")
##      Docs
mat
## Terms  1 2 3
##  안녕 2 1 1
##  친구 0 1 2
 
zTdmMatrixMergeTermsGrep(mat, "^친구", "친구")
##      Docs
##      Docs
## Terms  1 2 3
## Terms  1 2 3

2019년 12월 11일 (수) 01:31 판

1 개요

R TermDocumentMatrix 용어 병합
R TermDocumentMatrix 행렬 단어 병합
R zTdmMatrixMergeTerms()
  • R TermDocumentMatrix()를 다시 수행하는 시간이 부담될 때, 후처리 병합만 하기 위한 방법
###
zTdmMatrixRemoveTerms <- function(m, t) {
  m[!rownames(m) %in% t,]
}
zTdmMatrixMergeTerms <- function(m, froms, to) {
  names <- names(dimnames(m))
  for(from in froms) {
    if(from == to) next
    #print(paste0("Merging [",from,"] to [",to,"]..."))
    if(!(from %in% rownames(m))) next
    if(!(to %in% rownames(m))) {
      m <- rbind(m, rep(0,ncol(m)))
      rownames(m)[length(rownames(m))] <- to
    }
    m[to,] <- m[from,] + m[to,]
    m <- m[!rownames(m) %in% from,]
  }
  names(dimnames(m)) <- names 
  return(m)
}
zTdmMatrixMergeTermsGrep <- function(m, grepstr, to) {
  return(zTdmMatrixMergeTerms(m, rownames(m)[grep(grepstr,rownames(m))], to))
}
###
docs <- c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야")
docs <- iconv(docs, "CP949", "UTF-8")
tdm <- TermDocumentMatrix(Corpus(VectorSource(docs)),control=list(
  removePunctuation = T,
  stopwords = F)
)
mat <- as.matrix(tdm)
mat
##         Docs
## Terms    1 2 3
##   안녕   2 0 0
##   반갑다 0 1 1
##   친구들 0 1 0
##   친구야 0 0 2

zTdmMatrixRemoveTerms(mat, c("반갑다","친구야"))
##         Docs
## Terms    1 2 3
## 안녕     2 1 1
## 친구들   0 1 0

mat <- zTdmMatrixMergeTerms(mat, "반갑다", "안녕")
mat
##         Docs
## Terms    1 2 3
##   안녕   2 1 1
##   친구들 0 1 0
##   친구야 0 0 2

zTdmMatrixMergeTerms(mat, c("친구야","친구들"), "친구")
##       Docs
## Terms  1 2 3
##   안녕 2 1 1
##   친구 0 1 2

zTdmMatrixMergeTermsGrep(mat, "^친구", "친구")
##       Docs
## Terms  1 2 3
##   안녕 2 1 1
##   친구 0 1 2

2 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}