当我向Postgres数据库添加项目时,一切似乎都运行良好。在不改变任何内容的情况下,只要我的应用程序中的任何地方启动Madeleine,我的Rails应用就会失败:
EncodingError in EventsController#update
invalid encoding symbol
app/controllers/events_controller.rb:137:in `update'
137是问题:
135 def update
136 @event = Event.find(params[:id])
137 m = SnapshotMadeleine.new("bayes_data")
....
end
但是,我能够在控制台中对事物进行分类,这是导致我混淆的一部分。在控制台中,这很好用:
m = SnapshotMadeleine.new("bayes_data") {}
=> #<Madeleine::DefaultSnapshotMadeleine:0x000...
m.system
=> #<Classifier::Bayes:0x000...
m.system.classify "test"
我正在使用Madeleine的最新分类器宝石。
我认为我的快照中有些东西在尝试加载时已损坏,所以我删除了它,但这并没有解决问题。这是我的倒数第二个快照(现在是最新的快照):
a = File.read('bayes_data/000000000000000000041.snapshot')
a.encoding
=> #<Encoding:UTF-8>
a.valid_encoding?
=> true
不确定这里发生了什么。我看到一些Ruby 1.9.3-p125的人有类似的问题,所以我升级到最新的稳定版本1.9.3-p194,但这也没有帮助。
以下是分类器文档的链接,其中提到了如何使用Madeleine:http://classifier.rubyforge.org/
我非常感谢能够深入了解这里发生的事情。谢谢!
答案 0 :(得分:0)
我的rails_admin gem有一个问题,mysql适配器没有编码意识,也许你可以检查你的postgres adaptar是否是,如果没有尝试另一个
答案 1 :(得分:0)
我不知道为什么标准的Marshal类不起作用,但我使用
取得了不错的成绩m = SnapshotMadeleine.new("bayes_data", YAML) do
b = Classifier::Bayes.new "Positive", "Negative
end
然后
m = SnapshotMadeleine.new("bayes_data", YAML)
元帅打破了什么?不太确定。
答案 2 :(得分:0)
您必须确保用于训练数据的字符串是UTF-8编码的。如果您正在训练数据集,那么丑陋的黑客就是
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
在你的剧本中。