Junit:大数据自然语言处理的单元测试

时间:2016-07-22 20:41:48

标签: junit nlp

我的问题有点模糊,但我的问题是具体的。

问题

有人能指出我如何对大数据自然语言处理系统进行单元测试的知情文档吗?

CONTEXT

大数据处理系统通常是多线程的,并且对异常状态也非常宽容。通常会捕获异常并且不会抛出异常以允许“混乱”数据。

然而,在对这种系统进行单元测试时,严格程度应高于生产条件。这种严格程度使开发人员至少可以了解抛出异常的条件。

问题是这样的系统会吸收异常,因此junit测试不会接收它们。我正在寻找在这种情况下进行单元测试的简约设计。不想重新发明轮子。因此寻找相关文件。

1 个答案:

答案 0 :(得分: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>