我正在使用omnicat-bayes分析文档(文本分类)。有了这个创业板,我就可以创建类别,并用文档“饲料”那些。目前,这些类别有足够的文件,以便“足够好”来识别新的文件应该放在哪一类中。
现在,在我的文档控制器中,create操作下有几个步骤。
(所有这些步骤都在run_all函数下)
创建操作:
def create
@document = Document.new(document_params)
@document.case_id = @case.id
if @document.save
run_all
# Running the classify function on reden aanmelding
classify_one = @bayes.classify(@document.reden_aanmelding)
document_category = classify_one.to_hash[:top_score_key]
# Updating the document category by the top key returned by Bayes
@document.update_attribute(:category, document_category)
finding_required_records
# Training Cees Buddy with the document that got saved
@bayes.train(document_category, @document.reden_aanmelding)
redirect_to case_path(@case)
else
render :new
end
end在@document.save run_all函数中(我知道这不是真正的最佳实践),我正在创建上面提到的四个步骤。
现在,在创建函数完成之后,Bayes实例就消失了,AI现在又变得“愚蠢”了。
我的问题是:什么是合适的位置,我如何完成这一点,以创建新的实例,新的类别,并向他们提供我的数据库中的文档。singleton在这里会很有趣吗?
发布于 2016-12-25 12:48:59
这是一个相当棘手的问题,因为您可能希望扩展应用程序来处理多个文档。
问题是,生产模式的Rails应用程序web服务器通常会分叉到多个进程,甚至在多台机器上运行。这意味着,在一个过程中培训的文档在其他所有流程中都是未知的,即使您使用的是单例模式。
因此,只有使用omnicat-bayes gem,最好的方法是创建某种独立的微服务,它在自己的流程中运行,只做流程文档。然后,主应用程序应该将处理排队到异步作业中,因此,如果需要花费更长的时间,以防止培训过程忙于其他文档,也是可以的。
如何与此外部OmniCat实例通信取决于您。最舒适的方式可能是dRuby,但我应该补充一点,我没有使用它的生产模式经验。一个更有前途的解决方案是使用一些简单的HTTP + JSON。在这种情况下,您甚至可以使用一些将来不基于Ruby的功能更强大的库来进行培训和分类。
https://stackoverflow.com/questions/41314157
复制相似问题