我们有一个报告编写工具,我们正在尝试添加搜索功能。基本上,用户可以输入一个问题,并根据句子中的标准返回一份报告。我们正在尽可能地保持开放性,不需要特定的句子结构,这就是为什么我们想尝试OpenNLP-NER。
例如:
“上季度的艺术出勤率是多少?”
标记为:
what was <START:dept> Arts <END> <START:filter> attendance <END> last <START:calc> quarter <END>
我们试着用不同的部门,不同的过滤器等提出不同的问题。。我们还没有达到15k,只有14.6k,所以我们还在努力。
就分析问题而言,这是问题的开始:
InputStream tokenStream = getClass().getResourceAsStream("/en-token.bin"); //$NON-NLS
TokenizerModel tokenModel = new TokenizerModel(tokenStream);
Tokenizer tokenizer = new TokenizerME(tokenModel);
for (String name : modelNames) {
tokenizedQuestion = tokenizer.tokenize(question);
String alteredQuestion = question;
TokenNameFinderModel entityModel = new TokenNameFinderModel(getClass().getResourceAsStream(name));
NameFinderME nameFinder = new NameFinderME(entityModel);
Span[] nameSpans = nameFinder.find(tokenizedQuestion);
for (Span span : nameSpans) {
if (span.getType().equals("dept")) {
deptList.add(span);
} else if (span.getType().equals("filter")) {
filterList.add(span);
} else if (span.getType().equals("calculation"){
calculationList.add(span);
}
}
现在的问题是,如果你输入“Bugs Bunny last Cartono是什么”,你会得到“Bugs”作为一个部门,“Bunny”作为一个过滤器,“Cartony”作为一个计算。
我猜我们的培训问题彼此相似,现在假设“过去”后面的都是一个部门
1。这是正确的假设吗?有没有更好的方法来训练这些模型
2。将每个实体分解为自己的模型的最佳选择是什么?我确实尝试过这个,有105个单元测试后来失败了,所以希望先尝试一些更简单的东西,哈哈。
我也读了很多关于自定义NER模型的文章,但我发现的大部分是如何启动一个。还有一个关于多实体模型如何不起作用的线索。我忘了帖子在哪里了,我发现在类型中输入null可以在同一个模型中标记多个类型,而且它似乎工作得相当好。
tokenNameFinderModel = NameFinderME.train("en", null, sampleStream, TrainingParameters.defaultParams(), new TokenNameFinderFactory());
tokenNameFinderModel.serialize(modelOut);
提前感谢任何和所有的帮助!
我们的最终目标是能够针对我们分类的特定单词训练一个模型,并且无论句子结构如何,都必须正确地对每个单词进行分类。在OpenNLP中,我们无法实现这一点。
我猜我们的培训问题彼此相似,现在假设“过去”后面的都是一个部门
1。这是正确的假设吗?有没有更好的方法来训练这些模型?
根据我的测试和结果,我的结论是肯定的,单词的顺序和模式起到了一定的作用。但我没有任何文件支持这一点。我也找不到任何东西可以绕过OpenNLP。
根据经验和测试,我认为尽可能多地使用单独的模型是最好的培训方式。不幸的是,即使采用这种方法,我们仍然无法实现我们的目标。
最终,我们做了些什么来切换到斯坦福德NLP NER模型。您仍然可以围绕特定于域的语言进行自定义实现,并可以选择在属性文件中关闭排序:
usePrev=false
useNext=false
useDisjunctive=false
useSequences=false
usePrevSequences=false
斯坦福大学CoreNLP:培训你自己的定制标签
如果您是一位经验丰富的ML开发人员,而且ML Kit的预训练的模型不能满足您的需求,您可以通过ML Kit使用定 的TensorFlow Lite模型。 使用Firebase托管您的TensorFlow Lite模型或将其与您的应用程序打包在一起。然后,使用ML Kit SDK来使用您的自定义模型的最佳版本构建应用。如果您使用Firebase托管您的模型,ML Kit会自动更新您的用户的所用版本。
需要 10.2.0+ 您可以在*.vue文件中定义自定义语言块。 自定义块的内容将由在vue-loader'选项的loaders对象中指定的加载器处理,然后由组件模块require。 配置类似于[先进的Loader配置](../ configurations / advanced.md)中描述的配置,除了匹配使用标记名称而不是lang`属性。 如果找到一个自定义块的匹配加载器,它将被处理; 否则将
问题内容: 在我正在使用的新Web应用程序上使用自定义字体时,我一直遇到一个奇怪的问题。 此自定义字体(FF DIN)似乎自然具有垂直的偏心线高,这迫使我放置一些padding-tophack以补偿元素(如按钮和输入)的顶部空间。 示例:绿色字体(Helvetica Neue)正确对齐,而我们使用的自定义字体(FF DIN)垂直偏离中心: 有没有已知的方法可以自然地解决CSS上的居中问题,从而以某
我有一个包括几个子模式的用户模式。我有两个相似的子模式,其中一个是可以识别的,但另一个是一直未定义的。我的用户架构如下: 在上面的模式中,我有一个项目在post路线中工作得很好。表单已正确发布、保存和显示,但无法发布跟踪器的相同路由,并给出“跟踪器未定义”错误: 项目后路由: 以下是追踪者的帖子: 请注意,项目模式和跟踪器模式都保存在一个模型文件夹中,并且在app.js中是必需的
主要内容:自定义模块编写说明文档到目前为止,读者已经掌握了导入 Python 标准库并使用其成员(主要是函数)的方法,接下来要解决的问题是,怎样自定义一个模块呢? 前面章节中讲过,Python 模块就是 Python 程序,换句话说,只要是 Python 程序,都可以作为模块导入。例如,下面定义了一个简单的模块(编写在 demo.py 文件中): 可以看到,我们在 demo.py 文件中放置了变量(name 和 add)、函数(
从MinDoc v0.13及以上版本开始支持自定义模板(仅Markdown编辑器)。 创建自定义模板 用户可在编辑项目时将编辑器内的内容报错为模板: 点击保存按钮右侧的公文包按钮会弹出保存为模板的界面: 填写模板名称点击立即保存即可。 全局模板是指,在其他项目中可用,目前仅支持管理员保存全局模板,非管理员及时选中了全局,保存时也是仅项目内可用。 使用自定义模板 点击编辑器上的模板按钮可以显示选择模