2016-07-22 4 views
0

私の問題はあいまいですが、私の質問は具体的です。Junit:大きなデータの自然言語処理のためのユニットテスト

QUESTION

誰がどのようにユニットテストビッグデータ、自然言語処理システム上で十分な情報のドキュメントに私を指しますか?

CONTEXT

ビッグデータ処理システムは、多くの場合、マルチスレッドであり、また、例外状態の非常に寛容です。非常に頻繁に例外がキャッチされ、「乱雑」なデータを許可するためにスローされません。

しかし、このようなシステムをユニットテストする場合、ストリンジェンシーのレベルは生産条件よりも高くすべきです。このレベルのストリンジェンシーにより、開発者は少なくとも例外の種類をどのような条件でスローするかを知ることができます。

問題は、そのようなシステムが例外を吸収するため、junitテストではそれらを取得しないということです。私はこのような状況での単体テストのための控えめなデザインを探しています。車輪を再発明したくない。したがって、関連する文書を探してください。

答えて

0

大規模な自然言語処理システムを単体テストする方法に関する十分な情報を得た文書を誰にも指摘できるはずです。その理由は、あなたの関数が正しければ、ユニットテスト(大規模なNLPシステムでさえも)がすばやく合格して実行されるようにするためです。

私はあなたが質問するつもりだったと思うのは、統合テストと関連しています。実際には、テストやプロダクションのデータセットでこれらのシステムを実行しています。私の統合テストのほとんどは固定データセットで実行されていますが、システムの制御を超えたネットワーク/データベースの障害やその他のイベントが発生しない限り、これらのテストは常に成功すると思います。

絶え間なく変化するデータセットに対する統合テスト、または実際に本番環境で実行する場合は、使用している基礎となるアーキテクチャ/フレームワークのドキュメントを参照する必要があります。私はUIMAベースのアーキテクチャを使用しており、エラーレートのしきい値などの設定を明示的に行うことができます。下記のUIMAのドキュメントからコピーされた例を参照してください。私はGATE、Deeplearning4Java、あるいは最近、クールな子供たちが同じような機能を持っていることを知っていますが、私が知っている限り、それはフレームワーク固有です。

<casProcessor deployment="integrated" name="Person"> 
    <descriptor> 
    <include href="[descriptor]"/> 
    </descriptor> 
    <deploymentParameters/> 
    <errorHandling> 
    <errorRateThreshold action="terminate" value="100/1000"/> 
    <maxConsecutiveRestarts action="terminate" value="30"/> 
    <timeout max="100000"/> 
    </errorHandling> 
    <checkpoint batch="100" time="1000ms"/> 
</casProcessor> 
関連する問題