当前位置: 首页 > 面试题库 >

Stanford-NER定制可对软件编程关键字进行分类

卞浩漫
2023-03-14
问题内容

我是NLP的新手,我使用Stanford NER工具对一些随机文本进行分类,以提取软件编程中使用的特殊关键字。

问题是,我不知道如何对斯坦福大学NER中的分类器和文本注释器进行更改以识别软件编程关键字。例如:

today Java used in different operating systems (Windows, Linux, ..)

分类结果应为:

Java "Programming_Language"
Windows "Operating_System"
Linux "Operating_system"

您能提供有关如何自定义StanfordNER分类器以满足我的需求的帮助吗?


问题答案:

我认为它在Stanford NER常见问题解答部分http://nlp.stanford.edu/software/crf-
faq.shtml#a中
有很好的记录。

步骤如下:

  • 在属性文件中,更改地图以指定如何注释(或结构化)训练数据

地图= word = 0,myfeature = 1,answer = 2

  • src\edu\stanford\nlp\sequences\SeqClassifierFlags.java

添加一个标志,表明您要使用您的新功能,下面将其称为useMyFeature public boolean useLabelSource = false
,添加public boolean useMyFeature = true;

在告诉工具setProperties(Properties props, boolean printProps)后的方法中的 同一文件中else if (key.equalsIgnoreCase("useTrainLexicon")) { ..},此标志是否为您打开/关闭

        else if (key.equalsIgnoreCase("useMyFeature")) {
          useMyFeature= Boolean.parseBoolean(val);
    }
  • 在中src/edu/stanford/nlp/ling/CoreAnnotations.java,添加以下部分
        public static class myfeature implements CoreAnnotation<String> {
      public Class<String> getType() {
        return String.class;
      }
    }
  • src/edu/stanford/nlp/ling/AnnotationLookup.javapublic enumKeyLookup{..} 在底部添加

MY_TAG(CoreAnnotations.myfeature.class,“ myfeature”)

  • 在中src\edu\stanford\nlp\ie\NERFeatureFactory.java,根据功能的“类型”添加
        protected Collection<String> featuresC(PaddedList<IN> cInfo, int loc)

    if(flags.useRahulPOSTAGS){
        featuresC.add(c.get(CoreAnnotations.myfeature.class)+"-my_tag");
    }

调试:除此之外,还有一些方法可以将功能部件转储到文件中,并使用它们来查看事情的进展情况。另外,我认为您也必须花一些时间在调试器上:P



 类似资料:
  • 问题内容: 我正在尝试使用斯坦福大学的OpenIE(版本3.6.0)基于我在化学领域训练的NER模型提取关系三元组。但是,我无法让OpenIE根据我自己的NER模型提取关系三元组。看来OpenIE仅基于软件包中提供的默认NER模型提取关系三元组。 以下是我训练和部署NER模型所做的工作: 根据http://nlp.stanford.edu/software/crf-faq.html#a训练NER模

  • 问题内容: 我已经创建了自己的NER模型与斯坦福大学“斯坦福大学NER”软件,并按照这些方向。 我知道CoreNLP按照以下顺序开箱即用地加载了三个NER模型: 我现在想将我的NER模型包括在上面的列表中,并先用NER模型标记文本。 我已经找到了关于该主题的两个以前问题,它们是“使用自定义NER模型的Stanford OpenIE[”和“为什么Stanford CoreNLP NER注释器默认加载

  • null 我发现了之前关于这个主题的两个StackOverflow问题,它们是“Stanford OpenIE使用定制的NER模型”和“为什么Stanford CoreNLP NER-annotator默认加载3个模型?” 这两个帖子都有很好的答案。答案的一般信息是,您必须在文件中编辑代码。 使用自定义NER模型的斯坦福OpenIE 是否需要修改或添加此代码到CoreNLP软件中的特定类文件中?

  • 问题内容: 从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我开始对最近制作的小玩具编程感到无聊,我很想开始编程并与硬件交互。 唯一的问题是,我主要是一个没有真正学习或使用任何其他语言的python专家。我仍然可以使

  • Stanford Corenlp默认按以下顺序使用三个NER模型: 从edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz加载分类器...完成[20.6秒]。从edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz.done[16.4秒从ed

  • 最近,我一直在尝试用斯坦福核心NLP来训练n-gram实体。我遵循了以下教程--http://nlp.stanford.edu/software/crf-faq.shtml#b 这样,我就可以只指定unigram标记和它所属的类。有谁能引导我,让我把它延伸到n克。我正试图从聊天数据集中提取像电影名称这样的已知实体。 如果我误解了斯坦福教程,请指导我,同样的教程可以用于N克培训。