2014-07-17 7 views
2

OCR에서 스캔 한 문서의 오류를 수정하는 프로젝트를 진행 중이고 R이있는 n 그램을 사용합니다. 내 알고리즘은 알고있는 코퍼스를 사용하여 먼저 훈련됩니다. 혼란을 만들기위한 실수 3 그램의 행렬. 그래서 특정 3-gram을 가지고있을 때 실수가있을 때 대체 할 가장 가능성이있는 것은 무엇일까? 3-gram.오류 수정을 위해 R과 함께 n-gram 사용

library(tau) 
library(tm) 

txt1 <- "The quick brown fox jumps over the lazy dog." 

r1<-textcnt(txt1, method = "ngram", n=3) 
data.frame(counts = unclass(r1), size = nchar(names(r1))) 
format(r1) 

을하지만 순서를 유지하지 않고 나에게 각 3 그램의 주파수를 제공하고 난을 생성하는 데 사용할 수 없습니다

알고 들어 난 단지 문장에 대한 N 그램을 만들 수 관리 혼란 행렬. http://tm.r-forge.r-project.org/faq.html#Bigrams

을하지만 이것은 매우 간단해야하며, 목표를 달성하기 위해 여러 가지 방법이 있습니다 :

답변

2

패키지 tm에 관해서는, 당신은 문서의이 부분에 따라 외부 토크 나이를 사용해야합니다.

3 그램 분석 :

library(tau) 
temp <- "I would gladly pay you Tuesday for a hamburger today." 
textcnt(temp, method="ngram", n=3L, decreasing=TRUE) 

이 당신이 혼동 행렬을 만드는 방법은 다음과 같습니다

library(MASS) 
iris.lda <- lda(Species ~ . , data = iris) 
table(predict(iris.lda, type="class")$class, iris$Species) 

는 길이 3의 (용어 - 문서 매트릭스) 토큰을해야 할 경우, 당신은 할 수 3 그램 토크 나이저를 사용하십시오 (n = 3). 예 : http://tm.r-forge.r-project.org/faq.html#Bigrams보기

당신은 당신의 선택을 저장하기 위해 사전 인수를 사용할 수 있습니다

yourTokenizer <- function(x) RWeka::NGramTokenizer(x, Weka_control(min = 3, max = 3)) 
TermDocumentMatrix(crude, control = list(tokenize = yourTokenizer, dictionary = yourDictionary)) 

tm 문서에서 해당 예였다

library("RWeka") 
library("tm") 
data("crude") 
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2)) 
tdm <- TermDocumentMatrix(crude, control = list(tokenize = BigramTokenizer)) 
inspect(tdm[340:345,1:10]) 
+0

당신의 도움에 대한 감사하지만 내가 찾고 있어요 아니에요 정확히 왜냐하면 나는 정말로 잘 설명하지 않았다는 것에 동의한다. ... 두 번째 것은 결함이있을 것이라는 점을 제외하고는 같은 문장을 비교하고 싶다. 예 : "paq"와 "pay"는 다음 번에 나에게 알려줄 것이다. "paq"참조해야한다. 레이스로 "지불" – Adrien

+0

알겠습니다. 미안, 나는 그것을 얻지 않았다. 오히려, 나는 R에서 그것을하는 법을 모르지만, 다른 언어로 그것을하는 방법을 말할 수 있기 때문에 그것은 확실히 할 수 있습니다. 내가 오늘 밤이나 내일 아침에 자유 시간을 얻으면 나는 뒤쫓아 가려고 노력할 것이다. –

+0

파이썬에서 어떻게 사용하는지 알고 있습니까? 도움을 주셔서 감사합니다 – Adrien