Appendices

Core Design Principles

The core design principle of Forte is the abstraction of NLP concepts and machine learning models, which provides better separation between data, model and tasks, but enables interactions between different components of the pipeline. Based on this, we make Forte:

  • Composable: Forte helps users to decompose a problem into data, models and tasks. The tasks can further be divided into sub-tasks. A complex use case can be solved by composing heterogeneous modules via straightforward python APIs or declarative configuration files. The components (e.g. models or tasks) in the pipeline can be flexibly swapped in and out, as long as the API contracts are matched. The approach greatly improves module reusability, enables fast development and makes the library flexible for user needs.

  • Generalizable and Extensible: Forte promotes generalization to support not only a wide range of NLP tasks, but also extensible for new tasks or new domains. In particular, Forte provides the Ontology system that helps users define types according to their tasks. Users can simply specify the type declaratively through JSON files. Our Code Generation tool will automatically generate python files ready to be used into your project. Check out our Ontology Generation documentation for more details.

  • Transparent Data Flow: Central to Forte’s composable architecture is a universal data format that supports seamless data flow between different steps. Forte advocates a transparent data flow to facilitate flexible process intervention and simple pipeline control. Combined with the general data format, Forte makes a perfect tool for data inspection, component swapping and result sharing. This is particularly helpful during team collaborations!

_images/forte_arch.png _images/forte_results.png

Glossary

Examples

Rich examples are included to demonstrate the use of Forte, including

implementation of cutting-edge models/algorithms and system construction.

More examples are continuously added…