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

用Stanford NLP训练n-gram NER

糜征
2023-03-14

最近,我一直在尝试用斯坦福核心NLP来训练n-gram实体。我遵循了以下教程--http://nlp.stanford.edu/software/crf-faq.shtml#b

这样,我就可以只指定unigram标记和它所属的类。有谁能引导我,让我把它延伸到n克。我正试图从聊天数据集中提取像电影名称这样的已知实体。

如果我误解了斯坦福教程,请指导我,同样的教程可以用于N克培训。

#structure of your training file; this tells the classifier
#that the word is in column 0 and the correct answer is in
#column 1
map = word=0,answer=1
CHAPTER O
I   O
Emma    PERS
Woodhouse   PERS

共有1个答案

单耘豪
2023-03-14

在这里等了很长时间才得到答案。我一直无法想出使用斯坦福核心来完成它的方法。无论任务完成与否。我也使用过LingPipe NLP库。在这里引用答案是因为,我认为其他人可以从中受益。

如果您是开发人员或研究人员或其他人员,请在潜入某个实现之前查看Lingpipe许可。

Lingpipe提供了各种NER方法。

我既使用了字典,也使用了统计学方法。

第一种是直接查找方法,第二种是基于培训的方法。

这里有一个基于字典的NER示例

xml prettyprint-override"><root>
<s> data line with the <ENAMEX TYPE="myentity">entity1</ENAMEX>  to be trained</s>
...
<s> with the <ENAMEX TYPE="myentity">entity2</ENAMEX>  annotated </s>
</root>
import java.io.File;
import java.io.IOException;

import com.aliasi.chunk.CharLmHmmChunker;
import com.aliasi.corpus.parsers.Muc6ChunkParser;
import com.aliasi.hmm.HmmCharLmEstimator;
import com.aliasi.tokenizer.IndoEuropeanTokenizerFactory;
import com.aliasi.tokenizer.TokenizerFactory;
import com.aliasi.util.AbstractExternalizable;

@SuppressWarnings("deprecation")
public class TrainEntities {

    static final int MAX_N_GRAM = 50;
    static final int NUM_CHARS = 300;
    static final double LM_INTERPOLATION = MAX_N_GRAM; // default behavior

    public static void main(String[] args) throws IOException {
        File corpusFile = new File("inputfile.txt");// my annotated file
        File modelFile = new File("outputmodelfile.model"); 

        System.out.println("Setting up Chunker Estimator");
        TokenizerFactory factory
            = IndoEuropeanTokenizerFactory.INSTANCE;
        HmmCharLmEstimator hmmEstimator
            = new HmmCharLmEstimator(MAX_N_GRAM,NUM_CHARS,LM_INTERPOLATION);
        CharLmHmmChunker chunkerEstimator
            = new CharLmHmmChunker(factory,hmmEstimator);

        System.out.println("Setting up Data Parser");
        Muc6ChunkParser parser = new Muc6ChunkParser();  
        parser.setHandler( chunkerEstimator);

        System.out.println("Training with Data from File=" + corpusFile);
        parser.parse(corpusFile);

        System.out.println("Compiling and Writing Model to File=" + modelFile);
        AbstractExternalizable.compileTo(chunkerEstimator,modelFile);
    }

}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Set;

import com.aliasi.chunk.Chunk;
import com.aliasi.chunk.Chunker;
import com.aliasi.chunk.Chunking;
import com.aliasi.util.AbstractExternalizable;

public class Recognition {
    public static void main(String[] args) throws Exception {
        File modelFile = new File("outputmodelfile.model");
        Chunker chunker = (Chunker) AbstractExternalizable
                .readObject(modelFile);
        String testString="my test string";
            Chunking chunking = chunker.chunk(testString);
            Set<Chunk> test = chunking.chunkSet();
            for (Chunk c : test) {
                System.out.println(testString + " : "
                        + testString.substring(c.start(), c.end()) + " >> "
                        + c.type());

        }
    }
}
 类似资料:
  • 利用 Polar 应用程式、Polar Flow 应用程式以及 Polar Flow 网络服务获得有关您的训练的即时分析,深入了解您的训练。 M600 上的训练总结 在每次训练后,您将在您的手表上收到您的即时训练总结。 总结中显示的信息取决于运动内容。可提供的细节包括: 时间长度:训练时长 距离(如适用于您的运动):指训练中已完成的距离。 平均心率:指训练期间您的平均心率。 最大心率:指训练期间您

  • 训练视图 浏览训练视图 上下滑动屏幕。 或 将手腕向内再向外轻快移动。 观看如何在训练期间使用 Polar 应用程式的相关视频教程。 您在训练视图上看到的信息取决于您对所选的运动内容的编辑。您可以在 Polar Flow 应用程式或 Polar Flow 网络服务中对每项运动内容进行设置。 例如,训练视图可提供以下信息: 您的当前心率 心率 ZonePointer 训练时长 训练期间到目前为止完成

  • 尝试一周,能改变一些旧习 一个一个练,反复的使用即可 不求多,以下练熟悉即可 practice makes prefect~ 放弃鼠标 全键盘和触摸板,你可以么? 从熟悉快捷键开始 全屏 专心写代码,减少干扰 ctrl + command + f 放大到全屏 设置Workbench主菜单快捷键,快速切换 设置Workbench主菜单快捷键,然后就有了command + 1到4的快捷键,快速切换,效

  • 您可以在 Polar Flow 网络服务或 Polar Flow 应用程式中规划您的训练并创建个人训练目标。 使用季度规划工具,创建训练计划 Flow 网络服务中的 Season Planner (季度规划工具)是度身打造年度训练计划的理想工具。无论训练目标如何,Polar Flow 都可以帮助您创建达成的综合计划。您可以在 Polar Flow 网络服务中的程序选项卡中找到季度规划工具。 Pol

  • 训练效益为您提供每次训练效果的文字反馈信息,帮您更好地了解训练的有效性。您可以在 Flow 应用程式与 Flow 网络服务上查看反馈信息。要获得反馈信息,您需要在心率区中一共至少训练 10 分钟。 训练效益反馈信息是基于心率区。它反映了您在每个心率区花费的时间与消耗的卡路里数。 下表列出了不同训练效益选项的描述。 评估信息 效益 Maximum training+(最强训练+) 非常棒的训练!您的

  • 训练后 在您停止训练后,您将在手表上立即获得训练总结。在 Polar Flow 应用程式或在 Polar Flow 网络服务中获得更详细的图示分析。 总结中显示的信息取决于运动内容和收集的数据。例如,训练总结可以包含以下信息: 开始时间和日期 训练持续时间 训练已完成的距离 心率 训练期间的平均和最大心率 训练中的心肺负荷 心率区  不同心率区付出的训练时间 所耗能量 训练课期间所耗能量 碳水化合