当前位置: 首页 > 知识库问答 >
问题:

准确性:ANNIE vs Stanford NLP vs OpenNLP with UIMA

鲜于华容
2023-03-14

我的工作是计划使用一个UIMA集群来运行文档,以提取命名实体等等。据我所知,UIMA附带的NLP组件非常少。我已经测试GATE有一段时间了,我对它相当满意。它在普通文本中没有问题,但当我们通过一些有代表性的测试数据运行它时,精确度会下降。我们内部拥有的文本数据有时全是大写,有时全是小写,或者是同一文档中两者的混合。即使使用ANNIE的all caps规则,其准确性仍有许多有待提高的地方。我最近听说过斯坦福NLP和OpenNLP,但还没有时间对它们进行广泛的培训和测试。在准确性方面,这两者与安妮相比如何?他们是否像盖特一样与UIMA合作?

提前谢谢。

共有3个答案

冯宏浚
2023-03-14

我想再补充一点。UIMA和GATE是创建自然语言处理(NLP)应用程序的两个框架。但是,名称实体识别(NER)是一个基本的NLP组件,您可以找到NER的实现,独立于UIMA和GATE。好消息是您通常可以在UIMA和GATE中找到一个不错的NER的包装器。为了清楚起见,让我们看一下这个例子:

>

  • OpenNLP NER
  • GATE中OpenNLP NER的包装器

    UIMA中OpenNLP NER的包装器

    斯坦福大学的NER组件也是如此。

    回到你的问题,这个网站列出了最先进的技术:http://www.aclweb.org/aclwiki/index.php?title=Named_Entity_Recognition_(最新技术)

    例如,在MUC-7比赛中,名为LTG的最佳参与者获得了93.39%的准确率。

    http://www.aclweb.org/aclwiki/index.php?title=MUC-7(最新技术)

    请注意,如果您想使用这种are实现状态,您可能会对其许可证有一些问题。

  • 解明辉
    2023-03-14

    为了记录对UIMA角度的回答:对于斯坦福NLP和OpenNLP,DKPro核心项目提供了优秀的UIMA分析引擎打包。

    王庆
    2023-03-14

    对这些系统的性能给出一般估计是不可能/合理的。正如你所说,在你的测试数据上,准确性会下降。这有几个原因,一个是文档的语言特征,另一个是你期望看到的注释的特征。Afaik对于每个NER任务都有相似但仍然不同的注释指南。

    话虽如此,关于你的问题:

    ANNIE是我能找到的Java中唯一一个基于规则的免费开源NER系统。它是为新闻文章而写的,我想是为MUC 6任务而调整的。这有助于证明概念,但有点过时。主要的优点是,您可以在不了解任何机器学习、nlp或java知识的情况下开始改进它。学习日语,试试看。

    OpenNLP、Stanford NLP等默认情况下都有新闻文章的模型,并且表现比ANNIE好(只看结果,从未在大型语料库上测试过)。与OpenNLP相比,我更喜欢斯坦福解析器,同样只看文档,主要是新闻文章。

    如果不知道你的文件是什么样子,我真的说不出更多了。你应该决定你的数据是否适合规则,或者你采用机器学习的方式,使用OpenNLP、斯坦福解析器或伊利诺伊标记器或其他任何东西。斯坦福解析器似乎更适合于倾注数据、训练和生成结果,而OpenNLP似乎更适合于尝试不同的算法、处理参数等。

    对于你关于UIMA争端的GATE,我尝试了这两种方法,并为GATE找到了更多的病毒社区和更好的文档。很抱歉给出个人意见:)

     类似资料:
    • 问题内容: 我的系统需要至少10毫秒的计时器精度。 我选择了timerfd,因为它非常适合我,但是发现即使在长达15毫秒的时间内,它也不是完全准确的,或者是我不理解它是如何工作的。 在一个10毫秒的计时器上,我测量的时间高达21毫秒。 我已经进行了一次快速测试,以显示我的问题。 这里是一个测试: 像这样执行: 即使假设有些可能的延迟,对我来说15毫秒的延迟听起来也太多了。 问题答案: 尝试按以下方

    • 关于使用Lenet5网络解释MNIST上某些优化器的性能,我有几个问题,以及验证损失/精度与训练损失/精度图确切地告诉我们什么。因此,所有的事情都是在Keras中使用标准的LeNet5网络完成的,它运行了15个历元,批处理大小为128。 有两个图,列车acc vs val acc和列车损失vs val损失。我生成了4个图,因为我运行了两次,一次是validation_split=0.1,一次是va

    • 我正在开发一个网络语音识别应用程序。我正在使用recorderJS捕获声音并将其发送到后端,在那里应该使用CMU Sphinx进行处理。 在发现最新版本5Realpha的库时,我遇到了准确性问题,该库使用了默认的声学模型、语言模型和词典,后来又使用JSGF语法减少了识别的单词数量,因此我使用了1.0 beta6版本。 1.0 beta6版本的麦克风识别非常准确。然而,当我转录声音时,它总是很差。如

    • 问题内容: Redis中命令的准确性如何? 我注意到,返回的键数与命令返回的实际键数不匹配。 这是一个例子: 为什么键数比实际数字高得多? 问题答案: 我想说这与密钥到期有关。 键/值存储(例如Redis或memcached)无法为每个要过期的对象定义物理计时器。他们太多了。取而代之的是,他们定义一个数据结构以轻松跟踪要过期的项目,并将所有过期事件多路复用到单个物理计时器。他们还倾向于实施惰性策略

    • 问题内容: $fooValue = 100.68; $cowValue = 100.67; 这将显示“错误”。 我知道用Java做些什么。但是我不太擅长PHP,尤其是在计算方面。 请帮帮我。我是说如何成功? 问题答案: 浮点数是一种不精确的数据类型(就像所有浮点数据类型一样),因为在二进制之间进行转换可能会失去精度。这就是为什么当您需要高精度(精确)时不应该使用浮点运算的原因。 在PHP中,检查B

    • 使用Weka对鲍鱼数据集进行ANN和KNN。 ANN正确分类实例的结果3183 76.203%错误分类实例994 23.797%平均绝对误差0.214均方根误差0.3349相对绝对误差58.6486% KNN结果|正确分类实例3211 76.8734%错误分类实例966 23.1266%平均绝对误差0.2142均方根误差0.3361相对绝对误差58.7113% KNN具有较高的精度,而ANN具有较

    • 在每个纪元结束时,我会得到以下输出: 谁能给我解释一下损失、准确性、验证损失和验证准确性之间有什么区别吗?

    • 问题内容: 我正在从一个线程发送网络数据包,并收到在不同CPU内核上运行的第二个线程的答复。我的过程测量每个数据包的发送和接收之间的时间(类似于ping)。我正在使用rdtsc来获取高分辨率,低开销的时序,这是我的实现所需的。 所有测量看起来都是可靠的。尽管如此,我仍担心rdtsc在内核之间的准确性,因为我一直在阅读一些文字,这些文章暗示tsc在内核之间不同步。 我在维基百科中找到了有关TSC的以