我使用 final String json = jsonObject.toString();
final OutputStream out = new conn.getOutputStream();
out.write(json.getBytes("UTF-8"));
out.flush();
out.close();
分析文档(文本分类)。有了这个宝石,我就可以创建类别和#34; feed"有文件的人。目前,这些类别有足够的文件,以便足够好"识别应该放在哪个类别的新文件。
现在,在我的文档控制器下,创建操作只需几步。
(所有这些步骤均在omnicat-bayes
函数下)
创建操作:
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
run_all函数内部(我知道这不是最好的做法)我创建了上面提到的四个步骤。
现在,在创建函数完成后,贝叶斯实例消失了,现在AI已经是#34;愚蠢的"再说呢。
我的问题是:什么是合适的地方,如何实现这一目标来创建新实例,新类别并使用我的数据库中的文档提供它们。这里@document.save
会有趣吗?
答案 0 :(得分:1)
这是一个非常棘手的问题,因为您可能希望扩展应用程序以处理多个文档。
问题在于,生产模式Rails应用程序Web服务器通常会分叉到多个进程,甚至可以在多台计算机上运行。这意味着即使您使用单例模式,在一个过程中训练的文档在所有其他过程中也是未知的。
因此,仅使用omnicat-bayes
gem,最好的方法是创建某种独立的微服务,该服务在其自己的进程中运行,并且只执行处理文档。然后,主应用程序应该将处理排入异步作业,因此如果培训过程忙于其他文档,则可能需要更长的时间。
如何与此外部OmniCat实例进行通信取决于您。最舒服的方式可能是dRuby,但我应该补充一点,我没有生产模式经验。更加面向未来的解决方案是使用一些简单的HTTP + JSON。在这种情况下,您甚至可以使用一些更强大的库来切换出进行培训和分类的服务,该库将来不会基于Ruby。