2016/12/06 - [R] - [R.아르]문장에서 보통명사만 추출하기(1)에 이어
본격적으로 추출해 보자.
역시 만료 저작물 중 하나인 <운수 좋은 날>의 텍스트를 UTF-8 형식으로 저장한다.
(주소: https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=9002094&menuNo=200030)
이후 순서는 루틴이므로 고민 없이 차례대로 진행하면 되겠다.
1. 텍스트 읽어오기
2. 말뭉치(Corpus) 로 변환
3. Term Document Matrix 로 변환
4. 표(matrix)로 변환
5. 각 행의 합을 구함
6. 빈도역순으로 정렬
Corpus 등으로 변환하려면 tm 패키지를 불러와야 한다.
불러오는 김에 멀티코어를 사용하지 않음도 정의해 주고,
사전도 변경해 주자. 일련의 준비작업이다.
library(KoNLP)
library(tm)
useSejongDic()
options(mc.cores=1)
이제 다음과 같이 입력할 것이다.
각 라인의 의미를 주석으로 표기하였다.
text <- readLines("text.txt", encoding="UTF-8")
#1.텍스트읽어오기
doc <- Corpus(VectorSource(text))
#2.말뭉치변환
doc <- TermDocumentMatrix(doc, #3.TermDocumentMatrix변환
control=list( #아래로옵션을나열
tokenize=words, #미리만들어둔함수(보통명사추출)로문장을자름
removeNumbers=T, #숫자제거
removePunctuation=T, #문장부호제거
wordLengths=c(1, 5) #1~5음절로이루어진단어만추출
))
doc <- as.matrix(doc)
#4.Matrix로변환
doc <- rowSums(doc)
#5.행의합(총빈도)
doc <- doc[order(doc, decreasing=T)]
#빈도역순정렬
as.data.frame(doc[1:20])
#상위20개단어보기
wordLengths=는 기본이 (3, inf) 로 설정되어 있다.
이는 영어 기준으로 1~2개의 알파벳으로 이루어진 단어가 별로 의미가 없기 때문
위와 같이 파악할 수 있다.
김첨지를 왜 보통명사로 파악했는지는 모를 일이다.
특정 단어를 제외하고 싶다면 옵션 항목의 [stopwords=]을 이용한다.
마지막으로 혹시 워드클라우드를 만들고 싶다면
1. 결과를 데이터프레임으로 변환
2. wordcloud 라이브러리를 호출
3. 다음 명령을 입력
하면 된다.
set.seed(1234)
wordcloud(words = rownames(doc), freq = doc$doc, min.freq = 1,
max.words=200, random.order=FALSE, rot.per=0.35,
family="font",
colors=brewer.pal(8, "Dark2"))
세세한 옵션들은 수치를 직접 조정해 보자.
'R' 카테고리의 다른 글
[R.아르] Term Document Matrix 생성시 한글 인코딩이 깨질때 (9) | 2017.10.18 |
---|---|
[R. 아르] KoNLP 패키지에서 에러가 날 때 (25) | 2017.10.16 |
[R. 아르] 언어 설정하기 / MDI, SDI 설정하기 (0) | 2017.10.12 |
[R.아르] 통계 프로그램 R 설치하기 (0) | 2017.10.11 |
[R.아르] 특정 단어가 들어있는 문장 추출하기 (0) | 2016.12.06 |
[R.아르] 문장에서 보통명사만 추출하기(1) (4) | 2016.12.06 |
[R.아르] 문장에서 명사 추출하기 (5) | 2016.11.22 |
[R. 아르] 로또 확률 계산하기 for() / choose() (0) | 2016.11.08 |
[R. 아르] 숫자를 날짜로 바꾸기 (0) | 2016.10.28 |
[R.아르] R에서 엑셀의 vlookup()처럼 첫 번째 값만 가져오기 (0) | 2016.10.28 |
댓글