java代码:
具体的代码可以参看TaggerDemo.java和TaggerDemo2.java这两个代码,需要注意的是在工程中(例如:eclipse),工程需要将对应的“models”文件夹放置该工程中,同时在该项目的“Bulid Path”中选择“Configure Bulid Path”,点击“Add External JARs”,将“stanford-postagger-3.5.2.jar”加入到该项目中,接下来就基于Demo改一下就可以使用。
当然,如果我们想要做一个可视化界面,可以将该工程导出(export)成一个可执行的jar(Runnable jar file),同时需要注意,我们需要在生成的可执行jar的路径下把“models”文件夹也复制进来,否则,无法调用postagger。
命令行:
这个可以参看文件夹里的“README.txt”这个文件。里面有好几种方式,我们这次主要说利用stanford-postagger.sh来进行。 其实这里有一个小缺陷,假设一个场景:如果我们在一个路径下调用了一个python脚本,我们在该python里想要利用os.system(cmd)来调用该postagger.sh,但是该python脚本和该postagger.sh并不在一个路径下,所以我们需要用一个string构造cmd命令,这样很可能会用“../”或者“./”来表示路径,但是我们需要调用该.sh又需要使用“./”这个命令,所以这是个小矛盾,注意例子中给的“./”只是一种调用.sh的方式,我们还可以用“sh tagger.sh …”这样的命令来进行调用。
./stanford-postagger.sh models/wsj-0-18-left3words.tagger sample-input.txt同时还有一个小缺陷,我在linux服务器上调用的时候需要重新配置一下’stanford-postagger.jar:’这一段,我是采用了绝对路径重新写了一遍,也就是“/home/…./stanford-postagger.jar:”这个样子,否则可能会因为路径问题报错。 接下来的就是根据需要换一下models里的模型,最后重定向一下就得到标注好的文本了~
java -mx300m -cp 'stanford-postagger.jar:' edu.stanford.nlp.tagger.maxent.MaxentTagger -model $1 -textFile $2 以上~