如何使用PHP调用斯坦福词性标注工具(Stanford POS Tagger)
在使用PHP作为编程语言的前提下,如果我现在手里有一段中文,我想知道其中有多少名词、多少动词,我可以使用百度自然语言处理API。但是这个API只支持对中文的词性标注,英文的词性标注并不支持。这个时候就可以考虑使用斯坦福大学的词性标注工具Stanford Tagger,网址如下:
https://nlp.stanford.edu/software/tagger.shtml
如果用Python来调用这个工具,其实非常容易,但是我的网站一直使用PHP开发的,因此就不得不寄托于用PHP来完成英文文章的词性标注。
其实我之前根据上面页面的提示做过很多次尝试,但都以失败告终,一直搞不清楚原因。今天我突然想起来这档子事儿,决定再试一次,于是又重新看了文档,这才发现了问题的根源:我没有在自己的电脑上安装Java。
现在我已经成功在自己电脑上装好了Stanford POS Tagger的PHP版,我把整个过程给大家分享一下。
第一步:启动PHP开发环境,创建项目文件夹
我使用的是M1芯片的Macbook Air,并通过安装MAMP Pro来准备PHP开发环境,启动MAMP Pro后,在localhost文件夹中创建了一个名为Tagger的文件夹,在其中创建了一个名为index.php的文件。
第二步:安装Composer
什么是Composer?为什么要安装Composer?
在前面提到的工具主页中有这样一段话:
PHP: Patrick Schur in 2017 wrote PHP wrapper for Stanford POS and NER taggers. Also on packagist. Other choices: PHP wrapper by Anthony Gentile; PHP wrapper by Charles Hays (on github).
其中提到的wrapper for Stanford POS and NER taggers对应的超链接是:https://github.com/patrickschur/stanford-nlp-tagger
这是一个GitHub的工具主页,里面又有这样的描述:
Installation with Composer
$ composer require patrickschur/stanford-nlp-tagger
Composer是一个跨平台的插件安装工具,使用方法非常简单(其实我自己花了好几个小时才搞明白使用方法,搞明白之后真得发现这玩意巨简单无比),接下来我详细说明一下安装Composer的方法:
1)前往Composer的官网,下载Composer到上面所述的localhost文件夹内的Tagger文件夹:
官网:https://getcomposer.org/download/
虽然这个页面有很多话,但是可以直接前往Manual Download部分点击下载Latest Stable对应的文件,下载下来后看到的是一个名为composer.phar的文件,这个就是Composer。
2)运行Composer
为什么这一步不是安装Composer而是运行Composer呢,因为Composer不需要安装,可以直接运行,运行的方法是:
打开Mac的终端(Terminal),然后输入cd,并将Tagger文件夹的地址拖动到cd后面,这样就可以在终端中打开Tagger文件夹了。
cd /Users/codeslator/Sites/localhost/Tagger
上面就是我用的打开Tagger文件夹的命令,其中的codeslator是我的电脑的名字。
我非常喜欢Mac里通过拖动Finder下方的文件夹地址至终端就可以直接插入地址的方法,非常方便。
接下来输入:
php composer.phar
就可以运行了,此时终端中会弹出一堆文字。
第三步:通过Composer下载wrapper for Stanford POS and NER taggers
如果按照GitHub主页所说的命令来下载,此时是不可以的。因为我其实并没有将Composer安装在Mac上,而只是放到了Tagger这个文件夹里,因此我不能使用:
$ composer require patrickschur/stanford-nlp-tagger
而是应该使用:
php composer.phar require patrickschur/stanford-nlp-tagger
前面的php composer.phar
相当于composer
。
这个时候我的Tagger文件夹里就慢慢出现了一个文件和一个文件夹,分别是:
composer.lock和vendor
这个vendor就是我们要用的词性标注工具扩展,我们目前并不需要打开这个vendor文件夹。
##第四步:下载标注工具
前面我说vendor只是“词性标注工具扩展”,因为真正的标注工具并不是这个,而是工具官网上标明的:
Download Stanford Tagger version 4.2.0 [75 MB]
我现在看到的版本是4.2.0,因为这个工具一直在更新。
这个工具下载后是一个名为stanford-tagger-4.2.0.zip
的压缩包,我们需要将这个包解压缩后放到vendor文件夹里面,解压缩后是一个名为stanford-postagger-full-2020-11-17
的文件夹。使用的版本不一样,这个文件夹名字后面的日期就不一样。
此时我们还不能使用这个标注工具,因为还有一个重要的工作没有完成,那就是安装Java。
##第五步: 安装Java
前往Java的下载页面:https://www.java.com/zh-CN/download/
从这里找到适配当前操作系统的版本下载并安装即可。
##第六步:通过代码来调用词性标注工具
GitHub页面的参考代码是:
$pos = new \StanfordTagger\POSTagger();
$pos->tag('My dog also likes eating sausage.');
但实际上这段代码还不够,应该这样写:
index.php
<?php
include "vendor/autoload.php";
$pos = new \StanfordTagger\POSTagger();
$result = $pos->tag('My dog also likes eating sausage.');
echo $result;
?>
要想成功运行这段代码,还需要在最上面加一句:include "vendor/autoload.php";
以后遇到这种需要通过composer安装的程序,一定要记住:要引入vendor文件夹里的autoload.php文件,这样才可以调用程序。
运行上面这段代码后,才能看到想要的结果:
My_PRP$ dog_NN also_RB likes_VBZ eating_JJ sausage_NN ._.
以上就是使用PHP调用斯坦福词性标注工具(Stanford POS Tagger)的方法。