7

当我将项目添加到我的 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"

我正在使用最新的分类器 gem 和 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,但这也没有帮助。

这是 Classifier 文档的链接,其中还提到了如何使用 Madeleine:http ://classifier.rubyforge.org/

我真的很感激对这里发生的事情的任何见解。谢谢!

4

3 回答 3

0

我不知道为什么标准的 Marshal 课程不起作用,但我使用效果很好

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

接着

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

与元帅有什么关系?不太确定。

于 2012-11-01T03:43:20.080 回答
0

我在使用 mysql 适配器的 rails_admin gem 时遇到了问题,它不知道编码,也许你可以检查你的 postgres 适配器是否是,如果不是,试试另一个

于 2012-10-27T21:49:47.297 回答
0

您必须确保用于训练数据的字符串是 UTF-8 编码的。如果你正在训练数据集,一个丑陋的黑客是有

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

在你的脚本中。

于 2013-04-21T11:00:33.407 回答