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

门写注释ID作为一种特性

太叔昊苍
2023-03-14

我在想有人能帮我吗。我认为这可能对任何试图在GATE(文本工程的通用架构)上进行机器学习的人有用。因此,基本上要进行机器学习,我首先需要向几个jape文件添加一些代码,这样我的输出XML文件就可以打印出注释Id值作为一个特性。下面提供了一个示例

<Annotation Id="1491" Type="Person" StartNode="288" EndNode="301">
<Feature>
  <Name className="java.lang.String">id</Name>
  <Value className="java.lang.String">1491</Value>
</Feature>

(注意,1491的特征值与批注id=“1491”匹配。这正是我想要的。)

我需要的原因:我正在对一个最初不包含注释的纯文本文档进行机器学习。我正在使用2012年6月的培训课程,在GATE网站上作为指导,同时这样做。我特别遵循模块11:关系教程(它发现个人和组织之间的雇佣关系)。我利用93个预注释文档的语料库进行训练,然后在我的文档中应用所学到的模块。但首先我把我的文件查了一下安妮。它创建了许多注释和特性,但不是机器学习所需的一切。我通过试验/错误和调查了解到,我的注释文档必须包含每个“Person”和“Organization”类型的注释Id的特性。我认识到批处理学习PR中使用的配置文件(relations-config.xml)查找“Person”和“Organization”类型的id特性。如果这些ID功能不存在,它将不会运行。所以我手动添加这个,然后通过机器学习“应用程序”模式运行它。它工作得相当好。但是,我显然不希望每次都手动地将id特性添加到XML文件中。

我对GATE代码的理解是:我相信我已经找到了需要修改的代码文件(final.jape、org_context.jape和name_context.jape),这样他们就可以将id特性添加到每个包含“person”和“organization”的注释中。我不太理解GATE使用的语言(我是机械工程师,不是软件工程师),这可能是我无法理解的原因(哈!)。无论如何,我可能会关闭,可能需要添加更多的行,以便jape文件正常工作,但我觉得我已经非常准确地定位了它。有两段代码相似但略有不同,目前是我存在的祸根。第一个经历迭代器循环,第二个不经历。我复制/粘贴了下面的2条,用一条线说明WHAT_DO_I_PUT_HERE指出我认为我的问题和解决方案在哪里。如果有人能帮我写我需要写的东西来得到我的结果,我将非常感激。

谢谢!--托德

//////////////////////////

Rule: PersonFinal
Priority: 30
//({JobTitle}
//)?
(
 {TempPerson.kind == personName}
)
:person
--> 
{
gate.FeatureMap features = Factory.newFeatureMap();
gate.AnnotationSet personSet = (gate.AnnotationSet)bindings.get("person");
gate.Annotation person1Ann = (gate.Annotation)personSet.iterator().next();


gate.AnnotationSet firstPerson = (gate.AnnotationSet)personSet.get("TempPerson");
if (firstPerson != null && firstPerson.size()>0)
{
  gate.Annotation personAnn = (gate.Annotation)firstPerson.iterator().next();
  if (personAnn.getFeatures().containsKey("gender")) features.put("gender", personAnn.getFeatures().get("gender"));
}
  features.put("id", WHAT_DO_I_PUT_HERE.getId().toString());
  features.put("rule1", person1Ann.getFeatures().get("rule"));
  features.put("rule", "PersonFinal");
outputAS.add(personSet.firstNode(), personSet.lastNode(), "Person", features);
outputAS.removeAll(personSet);
}

///////////////////////////

Rule:OrgContext1
Priority: 1
// company X
// company called X

(
 {Token.string == "company"}
 (({Token.string == "called"}|
   {Token.string == "dubbed"}|
   {Token.string == "named"}
  )
 )?
)
( 
 {Unknown.kind == PN}
)
:org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("id", WHAT_DO_I_PUT_HERE.getId().toString());
features.put("rule ", "OrgContext1");
outputAS.add(org.firstNode(), org.lastNode(), "Organization", features);
outputAS.removeAll(org);
}

共有1个答案

梁华皓
2023-03-14

在创建实际批注之前,不能访问批注id。我对这个问题的解决方案

Rule:PojemId
(
 {PojemD}
):pojem
--> 
{
    AnnotationSet matchedAnns = bindings.get("pojem");  
    Annotation ann = matchedAnns.get("PojemD").iterator().next();

    FeatureMap pojemFeatures = ann.getFeatures();
    gate.FeatureMap features = Factory.newFeatureMap();
    features.putAll(pojemFeatures);
    features.put("annId", ann.getId()); 

    inputAS.remove(ann); 
    Integer id = outputAS.add(matchedAnns.firstNode(), matchedAnns.lastNode(), "PojemD", features);  
    features.put("id", id); 
}
 类似资料:
  • 我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。

  • 本文向大家介绍C# 基础入门--注释,包括了C# 基础入门--注释的使用技巧和注意事项,需要的朋友参考一下 注释,是代码中的一些“说明性文字”。注释本身不会参与程序的编译和运行,仅仅供程序员阅读。 注释分为:单行注释、多行注释、文档注释。 单行注释的符号是2条斜线“//”,2条斜线右侧的内容就是注释,左侧的代码不会受影响。 多行注释以“/*”开始,以“*/”结束,之间的内容就是注释,可以包含多行。

  • 问题内容: 我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做: 这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。 我想要做: 但是是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟(或基本上使用)? 问题答案: 你只是在寻找 ?

  • 我想为上面的内容编写单元测试,以测试我正在使用的注释的sampleURL,比如如果我给出任何应该与regex模式匹配的URL。我浏览了以下链接:如何在spring中进行单元测试验证注释,如何使用JUnit测试类的验证注释?但它们没有多大帮助,我也有setSampleURL函数。那么,如何为sampleURL变量编写测试呢。基本上,我想为regex模式编写测试,即我给sampleURL的值是否与re

  • 本文向大家介绍Python 中如何写注释,包括了Python 中如何写注释的使用技巧和注意事项,需要的朋友参考一下 在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂。组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法。 另外一个提高代码可读性的方式就是使用注释。一个注释就是可以用来解释代码的一段人类可读的解释或者一个注解。例如,如果你写了一个复杂的正则表达式

  • 本文向大家介绍HTML的注释有几种写法?有什么规范吗?相关面试题,主要包含被问及HTML的注释有几种写法?有什么规范吗?时的应答技巧和注意事项,需要的朋友参考一下