在stanford pos tagger中编辑配置文件

时间:2015-04-03 08:58:00

标签: java nlp stanford-nlp maxent

我标记了一个简单的句子,这是我的代码:

package tagger;

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

public class myTag {

public static void main(String[] args) {

    MaxentTagger tagger = new MaxentTagger("D:/tagger/english-bidirectional-distsim.tagger");


    String sample = "i go to school by bus";

    String tagged = tagger.tagString(sample);

    System.out.println(tagged);
}

}

这是输出:

    Reading POS tagger model from D:/tagger/english-bidirectional-distsim.tagger    ... done [3.0 sec].
i_LS go_VB to_TO school_NN by_IN bus_NN 

编辑属性文件后,它根本没有任何效果。 例如,我已将标签分隔符更改为(*),但在输出中仍然打印(_)。

我怎么能在eclipse中使用模型配置文件?

2 个答案:

答案 0 :(得分:1)

您可以加载Properties文件并将其传递给MaxEnt的构造函数,如下所示:

Properties props = new Properties();
props.load(new FileReader("path/to/properties"));
MaxentTagger tagger = new MaxentTagger("D:/tagger/english-bidirectional-distsim.tagger", props);

您还可以直接在props对象中设置属性:

props.setProperty("tagSeparator", "*");

注意:如果您使用原始属性文件,它会失败,例如

java.io.FileNotFoundException: /u/nl
p/data/pos_tags_are_useless/egw4-reut.512.clusters (No such file or directory)

然后删除archtrainFile属性。

答案 1 :(得分:0)

您可以使用下载的ZIP文件中的bash文件,而不是为此编写java代码。 解压缩postagger的ZIP文件后,编辑以下bash文件:

  

stanford-postagger.sh

它应该有以下一行:

<!-- Comment --!>

“ - model $ 1”之后添加一个名为“ -tagSeparator [YourTag] ”的参数

java -mx300m -cp 'stanford-postagger.jar:lib/*' edu.stanford.nlp.tagger.maxent.MaxentTagger -model $1 -textFile $2

运行它(确保给出必要的权限):

java -mx300m -cp 'stanford-postagger.jar:lib/*' edu.stanford.nlp.tagger.maxent.MaxentTagger -model $1 -tagSeparator * -textFile $2

瞧!