2016-12-24 8 views
1

私はomnicat-bayesを使用して文書(テキスト分類)を分析しています。この宝石を使って、私はカテゴリを作成し、それらをドキュメントで「フィード」することができます。現在のところ、カテゴリには、どのカテゴリに新しい文書を挿入するかを「十分に」認識するのに十分な文書があります。テキスト分類Omnicat-bayesを使用した文書で事前に定義されたカテゴリ

作成アクションの下にあるマイドキュメントコントローラにはいくつかのステップがあります。カテゴリ

  • を訓練するために事前の文書を取る
  • 使用されるカテゴリの作成新しいベイズインスタンス
  • を作成

    1. は、実際には(のすべてをカテゴリ

  • を訓練しますこれらのステップはrun_allの機能の下にあります)

    アクション作成:@document.save 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 
    

    を私は上記の名前の4つのステップを作成しています(私はこれが本当にベストプラクティスではありません知っています)。

    ここで、作成機能が終了した後、ベイズのインスタンスがなくなり、AIは今や「愚か」になりました。

    私の質問は:どのような適切な場所とはどのように私は新しいインスタンスを作成するために、新しいカテゴリを作成し、私のデータベースから文書をフィードすることができます。 singletonはここで面白いでしょうか?

    答えて

    1

    これは、ほんの一握りのドキュメントを処理するためにアプリケーションを拡大したいと思うので、非常に難しい問題です。

    生産モードのRailsアプリケーションWebサーバーは、通常、複数のプロセスにフォークするか、複数のマシンで実行することがあります。つまり、シングルトンパターンを使用していても、1つのプロセスで訓練されたドキュメントは他のすべてのプロセスでは不明です。

    宝石だけの場合は、独自のプロセスで実行される何らかの種類の個別のマイクロサービスを作成し、ドキュメントを処理するだけです。メインアプリケーションは、処理を非同期ジョブにエンキューする必要があります。そのため、トレーニングプロセスが他のドキュメントでビジー状態になっても時間がかかる場合は問題ありません。

    この外部OmniCatインスタンスとの通信方法はあなた次第です。最も快適な方法はdRubyかもしれませんが、私はそれに生産モードの経験はないと付け加えるべきです。より将来的な解決策は、単純なHTTP + JSONを使用することです。その場合、将来的にRubyに基づいていないより強力なライブラリを使用して、トレーニングとカテゴリ分けを行うサービスを切り替えることもできます。

    +0

    答えていただきありがとうございます。私はこれから進んでいきます。私は前に複数のプロセスの一部について考えなかったので、それは本当に役立ちます。 'dRuby'部分と同様に。私は、「omnicat-bayes」を独自のマイクロサービスに移行しようとしていると思います。私は可能な限り多くのドキュメントを取得するとサービスがより価値があると思うので、それが自分のマイクロサービスで実行されるときに、複数のアプリケーションから同じサービスに送信されるすべてのドキュメントを送信することができます。これにより、提出された文書の分類がより正確になります。 –

    関連する問題