2012-06-19 31 views
7

Mọi thứ dường như hoạt động tốt khi tôi thêm các mục vào cơ sở dữ liệu Postgres của mình. Mà không thay đổi bất cứ điều gì, ứng dụng Rails của tôi bắt đầu thất bại trong bất cứ khi nào nó bắt đầu Madeleine bất cứ nơi nào trong ứng dụng của tôi:Biểu tượng mã hóa không hợp lệ với phân loại đá quý

EncodingError in EventsController#update 
    invalid encoding symbol 
    app/controllers/events_controller.rb:137:in `update' 

137 là dòng vấn đề:

135 def update 
136 @event = Event.find(params[:id]) 
137 m = SnapshotMadeleine.new("bayes_data") 
     .... 
    end 

Tôi có thể phân loại những thứ trong giao diện điều khiển, mặc dù , đó là một phần của những gì khiến tôi bối rối. Trong bảng điều khiển, tính năng này hoạt động tốt:

m = SnapshotMadeleine.new("bayes_data") {} 
    => #<Madeleine::DefaultSnapshotMadeleine:0x000... 
m.system 
    => #<Classifier::Bayes:0x000... 
m.system.classify "test" 

Tôi đang sử dụng đá quý Phân loại mới nhất với Madeleine.

Tôi đã tìm ra một thứ gì đó bị hỏng trong ảnh chụp của tôi mà nó đã tải, vì vậy tôi đã xóa nó, nhưng điều đó không giải quyết được vấn đề. Đây là ảnh chụp nhanh thứ hai của tôi (hiện là ảnh chụp gần đây nhất):

a = File.read('bayes_data/000000000000000000041.snapshot') 
a.encoding 
    => #<Encoding:UTF-8> 
a.valid_encoding? 
    => true 

Không chắc chắn những gì đang diễn ra ở đây. Tôi thấy một số người với Ruby 1.9.3-p125 có vấn đề tương tự, vì vậy tôi nâng cấp lên bản phát hành ổn định mới nhất, 1.9.3-p194, nhưng điều đó cũng không giúp được gì.

Dưới đây là một liên kết đến tài liệu cho Phân loại, trong đó đề cập đến làm thế nào để sử dụng Madeleine cũng như: http://classifier.rubyforge.org/

tôi thực sự đánh giá cao bất cứ cái nhìn sâu sắc vào những gì đang xảy ra ở đây. Cảm ơn!

+0

Bạn đã bao giờ giải quyết vấn đề này chưa? Tôi đang tìm ra cùng một vấn đề! – joshs

+0

Không bao giờ. Tôi đã từ bỏ tính năng này vì lợi ích của thời gian. Tôi khuyên bạn nên tìm một loại đá quý khác ổn định hơn. – airlok

+0

bạn nên làm sạch chuỗi của mình trước khi đưa chuỗi đó vào trình phân loại, ví dụ: chuyển ngữ các ký tự có dấu trọng âm –

Trả lời

0

tôi đã có một vấn đề với đá quý rails_admin với bộ chuyển đổi mysql mà không được mã hóa nhận thức được, có lẽ bạn có thể kiểm tra nếu postgres adaptar của bạn là gì và nếu không thử một số khác

0

Tôi không biết tại sao lớp soái chuẩn không làm việc, nhưng tôi đã có kết quả tốt bằng

m = SnapshotMadeleine.new("bayes_data", YAML) do 
    b = Classifier::Bayes.new "Positive", "Negative 
end 

và sau đó

m = SnapshotMadeleine.new("bayes_data", YAML) 

một cái gì đó bị phá vỡ với Nguyên soái? Không thực sự chắc chắn.

0

Bạn phải đảm bảo các chuỗi mà bạn sử dụng để đào tạo dữ liệu được mã hóa UTF-8. Nếu bạn đang đào tạo tập dữ liệu, một sự cố xấu xí là phải có

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

trong tập lệnh của bạn.

Các vấn đề liên quan