A machine reading system to support the LogX program.
You can run all project tests with the following command:
sbt test
We use ScalaTest with FlatSpec
and Matchers
for BDD-style unit tests.
-
Entity tests:
reader/src/test/scala/org/parsertongue/mr/logx/entities
-
Event/relation tests:
reader/src/test/scala/org/parsertongue/mr/logx/events
You can generate API documentation using the following command:
sbt doc
This will generate HTML pages documenting the API for each subproject:
-
reader
: reader/target/scala-2.12/api/index.html -
rest
: rest/target/scala-2.12/api/index.html
The core of the LogX machine reading system is defined in the reader
subproject. Currently, the reader is powered by a combination of Odin and statistical models for parsing and tagging.
We publish releases in the form of docker images:
- logx.cloud container registry: gitlab-registry.logx.cloud/team/bbn/logx-reader
DockerHub: parsertongue/logx-reader-rest-api- no longer maintained
The project can be built using either docker or sbt; however, the recommended method is to use docker.
We construct our docker images using the sbt native-packager plugin:
sbt dockerize
For information on additional tasks (generating Dockerfiles, publishing images, etc.), see this section of the native-packager
documentation.
The REST API server can be launched directly using SBT:
sbt web
After building the docker image, launch a container using the following command:
docker run --name="logx-reader" \
-it \
--restart "on-failure" \
-e "HOME=/app" \
-p "0.0.0.0:9000:9000" \
"gitlab-registry.logx.cloud/team/bbn/logx-reader:latest"
Navigate to localhost:9000/api to interactively explore the API through the OpenAPI 3.0 specification.
See this gist for sample input and output corresponding to the /api/extract
endpoint.
To avoid reloading NLP models during development, point the reader to the external version of the grammar outside of
src/main/resources
using the RULES_PREFIX
environment variable and launch the REST API server in development mode:
# assumes you've cloned to ~/repos/clu-ling/logx-reader
# adjust as needed
RULES_PREFIX=file://$HOME/repos/clu-ling/logx-reader/reader/grammars/logx sbt web
Alter files under reader/grammars/logx
You can use the parsertongue/odin-tutorial:latest
docker image for the Odin tutorial to visualize the output of the logx-reader
using TAG. See the following docker-compose.yml
fragment:
version: "2.3"
services:
# use localhost:8880/playground for the visualizer
frontend:
image: parsertongue/odin-tutorial:local
restart: always
ports:
- "8880:7777"
environment:
ODIN_API_BASE_URL: reader:9000/api
For feature requests and bug reports, please open an issue.