An HTTP REST server frontend for Stanford Core NLP written in Clojure.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/corenlpd
test/corenlpd/test
.dockerignore
.gitignore
.travis.yml
Dockerfile
LICENSE
Procfile
README.md
corenlpd.conf
docker-compose.yml
project.clj

README.md

corenlpd

Build Status

An HTTP REST server frontend for Stanford Core NLP written in Clojure using the Luminus framework.

Installation

Docker

From source directory:

docker build -t corenlpd .
docker run -d --name corenlpd -p 5900:5900 corenlpd

docker-compose

From source directory:

docker-compose up -d

Manual Install

You can install this on a normal machine or run it on AWS Elastic Beanstalk (see below).

You will need Leiningen 2.0 or above installed.

To install as an Upstart service, copy source to /usr/local/bin/corenlpd (or change path in corenlpd.conf) and run:

lein uberjar

Add a user for the service (as root):

sudo adduser --disabled-password --gecos "" corenlpd

Add corenlpd to sudoers.d (as root):

sudo sh -c "echo \"corenlpd ALL=NOPASSWD: /usr/local/bin/corenlpd/target/corenlpd.jar\" >> /etc/sudoers.d/corenlpd"
sudo chmod 0440 /etc/sudoers.d/corenlpd

OR add corenlpd to suders directly (as root):

sudo sh -c "echo \"corenlpd ALL=NOPASSWD: /usr/local/bin/corenlpd/target/corenlpd.jar\" >> /etc/sudoers"

(Or remove the setuid and setgid entries in corenlpd.conf and run as the invoking user at your own risk.)

Then copy corenlpd.conf to /etc/init to install the Upstart job and run:

service corenlpd start

AWS Elastic Beanstalk Deployment

Docker

To deploy on AWS Elastic Beanstalk with Docker:

eb init

Select Docker as the application type and create a new environment:

eb create --vpc corenlpd-docker-prod

Use --vpc to create a Beanstalk app with an internal load balancer that'd not exposed to the Internet.

eb use corenlpd-docker prod
eb deploy

Regular (Tomcat 8)

See the documentation for environment variables and the command line needed to set them. These only need to be set once.

You'll need to create a Tomcat 8 / Java 8 AWS environment (otherwise it'll default to Java 7 and fail). After than, when you have the repo, switch to the master branch and:

eb init

Choose us-east-1 for the region and corenlpd for the app (change as needed). The init, create, and use steps only have to be done once.

eb create corenlpd-prod
eb use corenlpd-prod

Please make sure you're in the master branch when deploying to avoid deploying the wrong branch! After the first deploy, from the master branch just do:

lein beanstalk deploy corenlpd-prod

Note that lein must be used for deployment in this case. eb deploy does not properly set things up to run this Clojure app as it assumes a Java app.

Running during development

To run as a server:

Or:

lein run

By default, the server runs on port 5900 for testing. In production, set the PORT environment variable.

Testing

lein test

API

Endpoints

GET /parse

It takes one argument, text and returns the parsed XML:

GET /parse?text=This+is+a+sentence.

GET /parse-with-pos

It takes one argument, text and returns the parsed XML. The argument must have POS tags seperated by a slash:

GET /parse-with-pos?text=Document/VB+software/NN+./.

License

MIT (See LICENSE)

Copyright © 2016 Lucian Hontau