논문크롤링을 해올 때 , 한글이 깨져서 wordcloud가 제대로 출력이 안된적이 있따.
나의 추측은 다음과 같았다.
1.Sys.setlocale의 혼동
--> 왜냐하면 나는 다음과 같이 설정을 한 적이 있었다.
Sys.setlocale(category = "LC_ALL", locale ="us")
Encoding(tdm$dimnames$Terms) = 'UTF-8'
결과는 false .. 안된다
구글링중 나같이 오류가 나는 사람이 있었다.
그의 조언은 다음과 같았다.
우선 출처 사이트 : https://www.facebook.com/groups/krstudy/permalink/765747536932854/
글쓴이는 다음처럼 말하고 있다.
작성하신 코드에서 Corpus 함수를 쓰셨는데, 이 함수로 생성한 "SimpleCorpus" 문제 때문입니다. tm 패키지 매뉴얼에서 TermDocumentMatrix 함수설명 가운데, "control" argument 부분을 옮겨보겠습니다.
"This is different for a SimpleCorpus. In this case all options are processed in a fixed order in one pass to improve performance. It always uses the Boost(http://www.boost.org) Tokenizer (via Rcpp) and takes no custom functions as option arguments."
SimpleCorpus에 대해서는 tokenizer로 "언제나" Boost란 녀석을 쓴다고 되어 있네요.
따라서 작성하신 코드에서 Corpus를 VCorpus로 바꾸고, as.matrix(tdm.ja) 해보세요. 그럼 깨지지 않고 매트릭스가 나오는 것을 확인하실 수 있을 겁니다.
쉽게 말해서 Corpus 앞에 V를 붙여서 사용하라고 하는 것인데 , 그래서 그냥 해봤다.
우선 Corpus 하는 부분을 VCorpus로 바꿔주었다.
modi_data <- VCorpus(DataframeSource(df))
깨짐 현상이 발생했던
tdm_modi <- TermDocumentMatrix(modi_data)
이 부분도 해주었다.
> head(profile,10)
word freq
미치는 미치는 10
일본의 일본의 3
활용한 활용한 3
account account 2
and and 2
it기반의 it기반의 2
management management 2
units units 2
공급사슬 공급사슬 2
교과서인가 교과서인가 2
결과값이다..
한글이 안깨지고 실행이된다..!!
중복되는 부분도 제거해 주고
word freq
1 미치는 10
2 일본의 3
3 활용한 3
4 account 2
5 and 2
6 it기반의 2
7 management 2
8 units 2
9 공급사슬 2
10 교과서인가 2
Wordcloud로 실행해 보면
다음과 같이 제대로 한글이 안깨지고 실행이 된다.
결국 원인은 Corpus --> VCorpus를 사용해서 해야한다.
그런데 왜 그런걸까??
https://stats.stackexchange.com/questions/164372/what-is-vectorsource-and-vcorpus-in-tm-text-mining-package-in-r
위 사이트에서는 다음과 같이 말하고 있다.
VCorpus in tm refers to "Volatile" corpus which means that the corpus is stored in memory and would be destroyed when the R object containing it is destroyed. Contrast this with PCorpus or Permanent Corpus which are stored outside the memory say in a db.
-->tm에있는 VCorpus는 "휘발성 (Volatile)"코퍼스를 말하며 이는 코퍼스가 메모리에 저장되어 있고이를 포함하고있는 R 객체가 파괴되면 파괴된다는 것을 의미합니다.
이말은 잘 와닿지 않는다.
그래서 조금더 찾아 보았다.
출처 : http://angerhang.github.io/statsWithR/tutorials/textMiningIntro.html
Corpus
tm
텍스트 문서를 저장하고 조작하기 위해 사용 하는 기본 구조 . VCorpus (휘발성 코퍼스)와 PCorpus (영원한 코퍼스)의 두 가지 유형이 있는데,이 두 구현의 주요 차이점은 전자는 R 객체로 메모리에 보관하고 후자는 R 환경 외부에 저장된 문서를 처리한다는 점
1. 텍스트가 포함된 문서 모음
2. 일종의 말 뭉치
확 이해가 되진 않는다.
더 찾게 되면 올려야겠다.
아무튼 Corpus --> VCorpus 로 하자.
출처사이트 : https://www.boost.org/
'학부공부 > 데이터마이닝과통계' 카테고리의 다른 글
다양한 확률분포 (0) | 2018.11.24 |
---|---|
구글서칭결과크롤링+CSV파일저장시키기 (3) | 2018.11.19 |
논문제목+논문저자+논문발간일 크롤링 / wordcloud2 (5) | 2018.11.18 |
API를 사용해서 실시간 버스 위치정보 시각화 (1) | 2018.11.15 |
web_crawling + wordCloud (0) | 2018.11.15 |
#IT #먹방 #전자기기 #일상
#개발 #일상