"R TermDocumentMatrix 단어 이름변경"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 12개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;R TermDocumentMatrix 용어 이름변경
;R TermDocumentMatrix 용어 이름변경
* 기존용어 1개를 신규용어로 변경한다.
* 기존용어가 tdm 내에 없는 경우 무시된다.
* 신규용어가 이미 tdm 내에 있는 경우 오류가 발생한다.
:신규용어가 이미 있는 경우에도 이름을 변경하며 합산을 하고자 한다면 '''[[R TermDocumentMatrix 용어 병합]]'''을 참고하라.


<source lang='r'>
<source lang='r' run>
library(tm) # TermDocumentMatrix()
library(tm) # TermDocumentMatrix()


zTdmRenameTerm <- function(tdm, term1, term2) {
zTdmRenameTerm = function(tdm, term1, term2) {
   nms <- rownames(tdm)
   nms = rownames(tdm)
   nms[which(nms==term1)] <- term2
  if( length(nms[nms==term2]) > 0 ) stop(paste0('Error: term2=[',term2,'] already exists.'))
   rownames(tdm) <- nms
   nms[which(nms==term1)] = term2
   rownames(tdm) = nms
   return(tdm)
   return(tdm)
}
}


docs1 <- c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야")
docs1 = c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야")
docs1 <- iconv(docs1, "CP949", "UTF-8")
## docs1 = iconv(docs1, "CP949", "UTF-8") ## 윈도우 R스튜디오 하드코딩 데이터입력시 인코딩 변환
tdm1 <- TermDocumentMatrix(Corpus(VectorSource(docs1)),control=list(removePunctuation=T,stopwords=F))
tdm1 = TermDocumentMatrix(Corpus(VectorSource(docs1)),control=list(removePunctuation=T,stopwords=F))
inspect(tdm1)
inspect(tdm1)
## <<TermDocumentMatrix (terms: 4, documents: 3)>>
## <<TermDocumentMatrix (terms: 4, documents: 3)>>
22번째 줄: 27번째 줄:
## Weighting          : term frequency (tf)
## Weighting          : term frequency (tf)
## Sample            :
## Sample            :
## 
##        Docs
##        Docs
## Terms    1 2 3
## Terms    1 2 3
30번째 줄: 34번째 줄:
##  친구야 0 0 2
##  친구야 0 0 2


tdm2 <- zTdmRenameTerm(tdm1, "친구들", "친구")
inspect(zTdmRenameTerm(tdm1, "친구들", "친구"))
inspect(tdm2)
## <<TermDocumentMatrix (terms: 4, documents: 3)>>
## <<TermDocumentMatrix (terms: 4, documents: 3)>>
## Non-/sparse entries: 5/7
## Non-/sparse entries: 5/7
44번째 줄: 47번째 줄:
##  친구  0 1 0
##  친구  0 1 0
##  친구야 0 0 2
##  친구야 0 0 2
# 기존용어 없는 경우
inspect(zTdmRenameTerm(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(zTdmRenameTerm(tdm1, "친구들", "친구야"))
## Error in zTdmRenameTerm(tdm1, "친구들", "친구야") :
##  Error: term2=[친구야] already exists.
</source>
</source>


49번째 줄: 72번째 줄:
* [[R TermDocumentMatrix 병합]]
* [[R TermDocumentMatrix 병합]]
* [[R TermDocumentMatrix 용어 병합]]
* [[R TermDocumentMatrix 용어 병합]]
* [[R TermDocumentMatrix 용어 제거]]
* [[R TermDocumentMatrix 용어 추가]]


[[분류: R tm]]
[[분류: R tm]]
[[분류: 단어-문서 행렬]]

2020년 7월 10일 (금) 21:25 기준 최신판

1 개요[ | ]

R TermDocumentMatrix 용어 이름변경
  • 기존용어 1개를 신규용어로 변경한다.
  • 기존용어가 tdm 내에 없는 경우 무시된다.
  • 신규용어가 이미 tdm 내에 있는 경우 오류가 발생한다.
신규용어가 이미 있는 경우에도 이름을 변경하며 합산을 하고자 한다면 R TermDocumentMatrix 용어 병합을 참고하라.
library(tm) # TermDocumentMatrix()

zTdmRenameTerm = function(tdm, term1, term2) {
  nms = rownames(tdm)
  if( length(nms[nms==term2]) > 0 ) stop(paste0('Error: term2=[',term2,'] already exists.'))
  nms[which(nms==term1)] = term2
  rownames(tdm) = nms
  return(tdm)
}

docs1 = c("안녕, 안녕.", "반갑다, 친구들.", "반갑다, 친구야, 친구야")
## docs1 = iconv(docs1, "CP949", "UTF-8") ## 윈도우 R스튜디오 하드코딩 데이터입력시 인코딩 변환
tdm1 = TermDocumentMatrix(Corpus(VectorSource(docs1)),control=list(removePunctuation=T,stopwords=F))
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(zTdmRenameTerm(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(zTdmRenameTerm(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(zTdmRenameTerm(tdm1, "친구들", "친구야"))
## Error in zTdmRenameTerm(tdm1, "친구들", "친구야") : 
##   Error: term2=[친구야] already exists.

2 같이 보기[ | ]

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