stanford-postagger的使用

    xiaoxiao2021-03-25  108

    在自然语言处理的很多任务上,词性信息基本上已经是一个必不可少的特征信息,但是我们很多情况下又没有能力写一个postagger,这时我们就需要利用其他词性标注的工具包,而stanford-postagger就是一个很不错的工具包,这次我简要说一下stanford-postagger这个包。具体地,我用的版本是stanford-postagger-full-2015-04-20。由于该工具包是用java写的,所以使用该工具包有两种方式:java代码;命令行调用。下图是解压后的文件夹:

    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 以上~
    转载请注明原文地址: https://ju.6miu.com/read-24467.html

    最新回复(0)