【问题标题】:Can NER Stanford called in java file?NER Stanford 可以在 java 文件中调用吗?
【发布时间】:2016-04-13 09:36:59
【问题描述】:

我尝试从带有Stanford Named Entity Recognizer (NER)Stanford Log-linear Part-Of-Speech Tagger 的文本中给出NER 和POS 标签。

让我给你一个邮政标签的例子

import edu.stanford.nlp.tagger.maxent.MaxentTagger;

public class POSTag {
    static MaxentTagger tagger =  new MaxentTagger("english_language_pos.tagger");

    public static void main(String[] args) throws IOException{
        String text = "Sarah and I go to Samsung office in Korea."
        String tagged = tagger.tagString(text);

        System.out.println(tagged);
    }
}

输出:

Sarah_NNP and_CC I_PRP go_VBP to_TO Samsung_NNP office_NN in_IN Korea_NNP ._.  

对于 NER 斯坦福,我必须在命令行中运行:

java -mx500m -cp stanford-ner-3.5.2.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier indonesian_language_ner.gz -textFile E:/file.txt > E:/file_ner.txt

我的问题是如何在具有 java 扩展名(file.java)的文件中调用 Stanford NER?除了从命令行之外,还有什么方法可以调用斯坦福 NER 吗? 或者我可以使用任何其他工具或库来提供从 java 文件中调用的 NER?

*****编辑:
我需要NER的输出变成这样:

Sarah_PERSON and_O I_O go_O to_O Samsung_ORGANIZATION office_O in_O Korea_PLACE ._O 

*****编辑

**仅供参考:我使用的是 Windows 8.1

【问题讨论】:

    标签: java stanford-nlp named-entity-recognition pos-tagger


    【解决方案1】:

    你可以这样做:

        String model = "english.all.3class.distsim.crf.ser.gz";
        String text = "file.txt";
    
        AbstractSequenceClassifier<CoreLabel> classifier = CRFClassifier.getClassifier(model);
        classifier.classifyAndWriteAnswers(text);
    

    希望对你有帮助。

    【讨论】:

    • 我需要输出带有标签 NER 的文本。我已经编辑了我的帖子以获取详细信息。
    • 这应该可以。标记默认使用/,您可以轻松适应另一个字符。
    • 如何将输出写入文件而不是打印到控制台?还有其他具有不同参数的方法classifyAndWriteAnswers,但我不知道哪个可以用来写入文件。谢谢
    • 我找到了方法classifyToString(String),它可以用来给NER标签而不用打印到控制台,所以我可以把标记的字符串保存在变量中。例如:String tagged = classifier.classifyToString("Sarah and I go to Samsung office in Korea.")
    【解决方案2】:

    由于我们中的一些人可能需要标记字符串,而不仅仅是直接打印到控制台,因此下面是相同的代码:

    public void doTagging(CRFClassifier model, String input) {
      input = input.trim();
      System.out.println(input + "=>"  +  model.classifyToString(input));
    }
    

    希望这会有所帮助。

    如果您需要有关如何在 jave 中使用斯坦福 NER 的完整代码,这里有一个不错的博客:

    https://dataturks.com/blog/stanford-core-nlp-ner-training-java-example.php?s=so

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多