저는 매우 실망한 문제가 있습니다. 나는 우분투 12.04를 루비 1.8.7을 가진 가정용 컴퓨터에 가지고있다. 그리고 나는 집안의 컴퓨터에서 완벽하게 컴파일되고 실행되는 프로젝트를 거의 끝내지 않았다. 그러나 그것을 나의 대학 연구실로 옮겼다.에는 bigdecimal loaderror ruby가 필요합니다.
이`require': no such file to load -- bigdecimal (LoadError)
내가 필요로 노력하고있어 클래스 내 프로젝트에 대한 몇 가지 로그 계산에 큰 부동 소수점 정밀도에 필요한 BigDecimal
클래스입니다 : 그들은 또한 나는 다음과 같은 오류가 발생합니다) 루비 1.8.7을 실행하는 . 아무도 내가 왜이 문제가 될지 이해할 수 있습니까? BigDecimal 클래스가 1.8.7 용 루비 코어 라이브러리에 포함되어 있다고 생각했습니다. 내가 여기서 뭔가를 놓치고 있니? EDIT : 코드가 컴파일되고 있습니다.
`#this is the language model generator
require "trainer"
require "bigdecimal"
class Model
attr_accessor :frequency_tables
def initialize(trainer, test_file)
@trainer = trainer
@frequency_tables = []
@frequency_tables[0] = trainer.corpus
@frequency_tables[1] = trainer.freq
@frequency_tables[2] = trainer.bifreq
@frequency_tables[3] = trainer.trifreq
@frequency_tables[4] = trainer.word_count()
@frequency_tables[5] = trainer.vocab_count()
end
def unigram_count(string)
string.upcase!
return @frequency_tables[1][string]
end
def bigram_count(string)
string.upcase!
return @frequency_tables[2][string]
end
def trigram_count(string)
string.upcase!
return @frequency_tables[3][string]
end
def round(float)
return ((float * 10000).round.to_f)/10000
end
def process_unigram(sentence)
probability = BigDecimal.new("1")
sen_arr = sentence.split(" ")
sen_arr.each { |word|
# binding.pry
probability *= (BigDecimal.new(unigram_count(word).to_s())/BigDecimal.new(@frequency_tables[4].to_s()))
}
unless probability.eql? 0
val= ((Math.log(probability)/Math.log(2)))
return retval = round(val)
end
return "undefined"
end
def process_bigram(sentence)
probability = BigDecimal.new("1")
sen_arr = sentence.split(" ")
for i in (0..(sen_arr.length-1))
unless i == 0
denom = BigDecimal.new(unigram_count(sen_arr[i-1]).to_s())/BigDecimal.new(@frequency_tables[4].to_s())
unless denom.eql? 0
probability *= (BigDecimal.new(bigram_count(sen_arr[i-1]+" "+sen_arr[i]).to_s())/BigDecimal.new(@frequency_tables[4].to_s()))/denom
else
probability = 0
end
else
probability *= (BigDecimal.new(bigram_count("PHI "+sen_arr[i]).to_s())/BigDecimal.new(@frequency_tables[4].to_s()))/(BigDecimal.new(unigram_count("PHI").to_s())/BigDecimal.new(@frequency_tables[4].to_s()))
end
end
unless probability.eql? 0
val= ((Math.log(probability)/Math.log(2)))
retval = round(val)
return retval
end
return "undefined"
end
def process_trigram(sentence)
probability = BigDecimal.new("1")
sen_arr = sentence.split(" ")
for i in (0..(sen_arr.length-1))
if i >= 2
denom = (BigDecimal.new(bigram_count(sen_arr[i-2]+" "+sen_arr[i-1]).to_s()))
unless denom.eql? 0
probability *= (BigDecimal.new(trigram_count(sen_arr[i-2]+" "+sen_arr[i-1]+" "+sen_arr[i]).to_s()))/denom
else
probability *= 0
end
elsif i == 1
denom = (BigDecimal.new(bigram_count("PHI "+sen_arr[i-1]).to_s()))
unless denom.eql? 0
probability *= (BigDecimal.new(trigram_count("PHI "+sen_arr[i-1]+" "+sen_arr[i]).to_s()))/denom
else
probability = 0
end
else
probability *= (BigDecimal.new(trigram_count("PHI PHI "+sen_arr[i]).to_s()))/(BigDecimal.new(unigram_count("PHI").to_s()))
end
end
unless probability.eql? 0
val= ((Math.log(probability)/Math.log(2)))
retval = round(val)
return retval
end
return "undefined"
end
def process_smooth_bigram(sentence)
probability = BigDecimal.new("1")
sen_arr = sentence.split(" ")
for i in (0..(sen_arr.length-1))
unless i == 0
bigram_c = bigram_count(sen_arr[i-1]+" "+sen_arr[i])+1
ugram_c = unigram_count(sen_arr[i-1])[email protected]_tables[5]
probability *= (BigDecimal.new(bigram_c.to_s()))/(BigDecimal.new(ugram_c.to_s()))
else
probability *= (BigDecimal.new((bigram_count("PHI "+sen_arr[i])+1).to_s()))/(BigDecimal.new((unigram_count("PHI")[email protected]_tables[5]).to_s()))
end
end
unless probability.eql? 0
val= ((Math.log(probability)/Math.log(2)))
retval = round(val)
return retval
end
return "undefined"
end
def process_smooth_trigram(sentence)
probability = BigDecimal.new("1")
sen_arr = sentence.split(" ")
for i in (0..(sen_arr.length-1))
if i >= 2
denom = (BigDecimal.new((bigram_count(sen_arr[i-2]+" "+sen_arr[i-1])[email protected]_tables[5]).to_s()))
probability *= (BigDecimal.new((trigram_count(sen_arr[i-2]+" "+sen_arr[i-1]+" "+sen_arr[i])+1).to_s()))/denom
elsif i == 1
denom = (BigDecimal.new((bigram_count("PHI "+sen_arr[i-1])[email protected]_tables[5]).to_s()))
probability *= (BigDecimal.new((trigram_count("PHI "+sen_arr[i-1]+" "+sen_arr[i])+1).to_s()))/denom
else
probability *= (BigDecimal.new((trigram_count("PHI PHI "+sen_arr[i])+1).to_s()))/(BigDecimal.new((unigram_count("PHI")[email protected]_tables[5]).to_s()))
end
end
unless probability.eql? 0
val= ((Math.log(probability)/Math.log(2)))
retval = round(val)
return retval
end
return "undefined"
end
end`
'require' 문은 어디에 있습니까? –