gpt4 book ai didi

java - Stanford-NER 自定义对软件编程关键字进行分类

转载 作者:行者123 更新时间:2023-11-29 07:03:06 26 4
gpt4 key购买 nike

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

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

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

分类结果应该是这样的:

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

您能否帮助我了解如何自定义 StanfordNER 分类器以满足我的需求?

最佳答案

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

步骤如下:

  • 在您的属性文件中更改 map 以指定您的训练数据的注释方式(或结构化)

map = 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

关于java - Stanford-NER 自定义对软件编程关键字进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22950995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com