갈루아의 반서재

1. Corpus 로딩

분석의 대상이 되는 문서의 포맷은 다양하지만, 우리가 앞으로 사용하게 될 tm 패키지는 꽤 많은 포맷을 지원한다. text, PDF, Microsoft Word, XML.의 포맷을 포함한다.

 

2. Corpus Sources and Readers

1) sources

> getSources()

[1] "DataframeSource" "DirSource"       "URISource"       "VectorSource"    "XMLSource"  

2) readers - 텍스트 분석 결과는 다음의 포맷 등으로 표현가능하다

> getReaders()

[1] "readDOC"                 "readPDF"                 "readPlain"               "readRCV1"               

[5] "readRCV1asPlain"         "readReut21578XML"        "readReut21578XMLasPlain" "readTabular"            

[9] "readXML"   

3. Corpus 로딩 : 텍스트

1) 먼저 working directory 를 확인한다. 

> getwd()

[1] "C:/Users/fukaeri/Documents"

2) 해당 디렉토리 아래에 corpus/txt 폴더를 생성하고 다음과 같이 경로를 설정해준다.

> cname <- file.path(".","corpus","txt")
> cname
[1] "./corpus/txt"
3) 해당 디렉토리에 포함된 파일의 갯수와 이름을 조회한다.
> length(dir(cname))
[1] 2
> dir(cname)
[1] "corpustext.txt" "licence.pdf"  
4) DirSource()를 해당 소스를 corpus 로 만든다. 
소스 오브젝트는 문서를 로딩하는 corpus() 로 전달된다. 
결과는 docs 라고 불리는 변수에 저장된다. 
> docs <- Corpus(DirSource(cname))
> docs
<<VCorpus (documents: 2, metadata (corpus/indexed): 0/0)>>
> class(docs)
[1] "VCorpus" "Corpus" 
> class(docs[[1]])
[1] "PlainTextDocument" "TextDocument" 

4. Corpus 로딩 : pdf

1) PDF 를 텍스트로 변환하고 corpus 로 로딩하기 위해 readPDF() 라는 함수를 이용한다. 

 

> docs <- Corpus(DirSource(cname), readerControl=list(reader=readPDF))

Error in system2("pdftotext", c(control$text, shQuote(x), "-"), stdout = TRUE) : 

  '"pdftotext"' not found

In addition: Warning message:

running command '"pdfinfo" "C:\Users\fukaeri\Documents\corpus\txt\corpustext.txt"' had status 127 

위와 같은 에러가 발생하는 이유는 XPDF 의 "pdfinfo" 와 "pdftotext" 파일이 현재의 R 시스템에 존재하지 않기 때문이다.

아래와 같이 해당 파일의 유무를 확인해보자.

 

> file.exists(Sys.which(c("pdfinfo","pdftotext")))

 

[1] FALSE FALSE

하지만 만약 위와 같은 에러가 발생하면 다음과 같이 한다. 

(1) xpdf 를 다운로드 한다 (http://www.foolabs.com/xpdf/download.html)

(2) 다운로드 받은 파일의 압축을 푼다. (본인의 경우 C:\Program Files\xpdf\bin32 에 압축을 풀었다)

(3) Redmond 유틸리티를 다운로드 받는다.(http://www.softpedia.com/get/System/System-Miscellaneous/Redmond-Path.shtml)

(4) 압축을 푼다.
(5) Redmond Path 를 실행시킨 후 좌측 상단의 '+' 버튼을 클릭한다.
(6) (2)에서 압축을 푼 xpdf 폴더를 선택한다.
(7) 마지막으로 OK 버튼 클릭
(8) 다시 > docs <- Corpus(DirSource(cname), readerControl=list(reader=readPDF)) 을 실행해보면 정상적으로 작동함을 알 수 있다.

2) XPDF의 pdftotext 명령을 이용하여 PDF 를 텍스트 포맷으로 바꿔준다. readPDF() 실행을 위해서는 XPDF 가 필요하다.

 

 

5. Corpus 로딩 : Word 

1) MS 워드를 텍스트로 손쉽게 변화해주는 것에는 antiword 가 있다. 이것을 통해 워드 문서를 R 에 띄우기 위해 텍스트로 변환할 수 있다.MS 워드의 corpus 를 로딩하기 위해서는 readDOC() 읽기 기능이 필요하다. 

 

> docs <- Corpus(DirSource(cname), readerControl=list(reader=readDOC))

 

docs <- Corpus(DirSource(cname), readerControl=list(reader=readDOC("-r -s")))

여기서 

-r : 삭제된 텍스트도 포함

-s : 워드에 의해 숨겨진 텍스트까지 포함