지난 번 2017/10/18 - [R] - [R.아르] Term Document Matrix 생성시 한글 인코딩이 깨질때 포스트에서 눈치채신 분도 있겠지만
TermDocumentMatrix 를 만들 때 웬일인지 tokenize 가 제대로 동작하지 않는 것으로 보인다.
예로, sapply 를 통해 텍스트에 extractNoun함수를 적용시키면
> text <- readLines("text.txt", encoding="UTF-8") > text [1] "컴퓨터는 수치 연산을 위해 설계되었다. 컴퓨터 발명 초기에는 문자를 표현해야 하는 요구가 없었다." [2] "그러나 곧 문자를 표현해야 하는 요구가 발생했다. 이기종 컴퓨터끼리 문자 데이터를 교환하기 위해서는 표준이 필요하다." > x <- sapply(text, extractNoun, USE.NAMES=F) > x [[1]] [1] "컴퓨터는" "수치" "연산" "설계" "되" "컴퓨터" "발명" "초" "문자" "표현" "요구" [[2]] [1] "문자" "표현" "요구" "발생" "이기종" "컴퓨터" "문자" "데이터" "교환" "하기" "표준" "필요" >
위와 같이 잘 나뉘어지지만,
TermDocumentMatrix에 tokenize 옵션으로 적용하면
> text <- readLines("text.txt", encoding="UTF-8") > text [1] "컴퓨터는 수치 연산을 위해 설계되었다. 컴퓨터 발명 초기에는 문자를 표현해야 하는 요구가 없었다." [2] "그러나 곧 문자를 표현해야 하는 요구가 발생했다. 이기종 컴퓨터끼리 문자 데이터를 교환하기 위해서는 표준이 필요하다." > text <- Corpus(VectorSource(text)) > inspect(text) <<SimpleCorpus>> Metadata: corpus specific: 1, document level (indexed): 0 Content: documents: 2 [1] 컴퓨터는 수치 연산을 위해 설계되었다. 컴퓨터 발명 초기에는 문자를 표현해야 하는 요구가 없었다. [2] 그러나 곧 문자를 표현해야 하는 요구가 발생했다. 이기종 컴퓨터끼리 문자 데이터를 교환하기 위해서는 표준이 필요하다. > tdm <- TermDocumentMatrix(text, control=list(tokenize=extractNoun)) > Encoding(tdm$dimnames$Terms) = 'UTF-8' > as.matrix(tdm) Docs Terms 1 2 문자를 1 1 발명 1 0 설계되었다 1 0 수치 1 0 없었다 1 0 연산을 1 0 요구가 1 1
'문자를' '설계되었다' '없었다' 등의 단어가 등장한다.
사실상 형태소 분석을 통해 나뉘지 않고 그냥 어절 단위로만 나뉜 것으로 보인다. tokenize 가 작동하지 않고 있다는 얘기.
원인은 몰라도 분석은 계속되어야 하는 법, 직접 자른 후 paste() 함수를 통해 붙여 주자.
이때 [collapse=] 옵션이 사용된다.
(참고: 2016/09/22 - [R] - [R. 아르] 내용 합치기 paste())
x <- sapply(text, extractNoun, USE.NAMES=F)
x <- sapply(x, paste, collapse = " ")
> text <- readLines("text.txt", encoding="UTF-8") > text [1] "컴퓨터는 수치 연산을 위해 설계되었다. 컴퓨터 발명 초기에는 문자를 표현해야 하는 요구가 없었다." [2] "그러나 곧 문자를 표현해야 하는 요구가 발생했다. 이기종 컴퓨터끼리 문자 데이터를 교환하기 위해서는 표준이 필요하다." > x <- sapply(text, extractNoun, USE.NAMES=F) > x [[1]] [1] "컴퓨터는" "수치" "연산" "설계" "되" "컴퓨터" "발명" "초" "문자" "표현" "요구" [[2]] [1] "문자" "표현" "요구" "발생" "이기종" "컴퓨터" "문자" "데이터" "교환" "하기" "표준" "필요" > x <- sapply(x, paste, collapse = " ") > x [1] "컴퓨터는 수치 연산 설계 되 컴퓨터 발명 초 문자 표현 요구" "문자 표현 요구 발생 이기종 컴퓨터 문자 데이터 교환 하기 표준 필요" >
이렇게 먼저 형태소 분석을 통해 자른 뒤 Corpus 와 TermDocumentMatrix 생성을 진행하면 되겠다.
반응형
'R' 카테고리의 다른 글
[R.아르] 웹페이지에서 원하는 요소 가져오기(크롤링) (5) | 2018.03.13 |
---|---|
[R.아르] TermDocumentMatrix를 표로 전환하는 과정에서 에러가 날 때 (0) | 2017.11.01 |
[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.아르] 문장에서 보통명사만 추출하기(2) (2) | 2016.12.06 |
[R.아르] 문장에서 보통명사만 추출하기(1) (4) | 2016.12.06 |
[R.아르] 문장에서 명사 추출하기 (5) | 2016.11.22 |
댓글