{"id":26031673,"url":"https://github.com/apache/uima-uimafit","last_synced_at":"2025-04-10T02:42:59.982Z","repository":{"id":12416448,"uuid":"15070665","full_name":"apache/uima-uimafit","owner":"apache","description":"Apache UIMA uimaFIT","archived":false,"fork":false,"pushed_at":"2024-11-27T16:09:09.000Z","size":2474,"stargazers_count":32,"open_issues_count":1,"forks_count":20,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-03T04:17:11.935Z","etag":null,"topics":["apache","java","text-analysis","uima"],"latest_commit_sha":null,"homepage":"https://uima.apache.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2013-12-10T08:00:25.000Z","updated_at":"2023-06-29T13:39:59.000Z","dependencies_parsed_at":"2023-11-13T09:30:23.392Z","dependency_job_id":"b1adac25-c953-43da-871f-7f6391a80ed1","html_url":"https://github.com/apache/uima-uimafit","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fuima-uimafit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fuima-uimafit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fuima-uimafit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fuima-uimafit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/uima-uimafit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247715220,"owners_count":20984016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache","java","text-analysis","uima"],"created_at":"2025-03-06T20:20:09.432Z","updated_at":"2025-04-10T02:42:59.962Z","avatar_url":"https://github.com/apache.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://img.shields.io/maven-central/v/org.apache.uima/uimafit-core?style=for-the-badge)](https://search.maven.org/search?q=g:org.apache.uima%20a:uimafit*)\n\nApache uimaFIT (TM)\n===================\n\n\nWhat is uimaFIT?\n----------------\n\nConfiguring UIMA components is generally achieved by creating XML descriptor\nfiles which tell the framework at runtime how components should be\ninstantiated and deployed. These XML descriptor files are very tightly\ncoupled with the Java implementation of the components they describe.\nWe have found that it is very difficult to keep the two consistent\nwith each other especially when code refactoring is very frequent.\nuimaFIT provides Java annotations for describing UIMA components which\ncan be used to directly describe the UIMA components in the code. This\ngreatly simplifies refactoring a component definition (e.g. changing a\nconfiguration parameter name). It also makes it possible to generate\nXML descriptor files as part of the build cycle rather than being\nperformed manually in parallel with code creation. uimaFIT also makes\nit easy to instantiate UIMA components without using XML descriptor\nfiles at all by providing a number of convenience factory methods\nwhich allow programmatic/dynamic instantiation of UIMA components.\nThis makes uimaFIT an ideal library for testing UIMA components\nbecause the component can be easily instantiated and invoked without\nrequiring a descriptor file to be created first. uimaFIT is also\nhelpful in research environments in which programmatic/dynamic\ninstantiation of a pipeline can simplify experimentation. For example,\nwhen performing 10-fold cross-validation across a number of\nexperimental conditions it can be quite laborious to create a\ndifferent set of descriptor files for each run or even a script that\ngenerates such descriptor files. uimaFIT is type system agnostic and\ndoes not depend on (or provide) a specific type system.\n\nuimaFIT is a library that provides factories, injection, and testing \nutilities for UIMA. The following list highlights some of the features \nuimaFIT provides:\n\n* **Factories:** simplify instantiating UIMA components programmatically \n  without descriptor files. For example, to instantiate an AnalysisEngine a\n  call like this could be made:\n\n      AnalysisEngineFactory.createEngine(MyAEImpl.class, myTypeSystem,\n        paramName1, paramValue2, \n        paramName2, paramValue2, \n        ...)\n\n* **Injection:** handles the binding of configuration parameter values to the \n  corresponding member variables in the analysis engines and handles the binding of \n  external resources. For example, to bind a configuration parameter just annotate \n  a member variable with `@ConfigurationParameter`. External resources can likewise \n  by injected via the `@ExternalResource` annotation.\n  Then add one line of code to your initialize method:\n\n      ConfigurationParameterInitializer.initialize(this, uimaContext).\n\n   This is handled automatically if you extend the uimaFIT `JCasAnnotator_ImplBase` class. \n\n* **Testing:** uimaFIT simplifies testing in a number of ways described in the \n   documentation. By making it easy to instantiate your components without \n   descriptor files a large amount of difficult-to-maintain and unnecessary XML can \n   be eliminated from your test code. This makes tests easier to write and \n   maintain. Also, running components as a pipeline can be accomplished with a\n   method call like this:\n\n      SimplePipeline.runPipeline(reader, ae1, ..., aeN, consumer1, ... consumerN)\n\nuimaFIT is a part of the Apache UIMA(TM) project. uimaFIT can only be used in \nconjunction with a compatible version of the Java version of the Apache UIMA SDK. \nFor your convenience, the binary distribution package of uimaFIT includes all \nlibraries necessary to use uimaFIT. In particular for novice users, it is strongly \nadvised to obtain a copy of the full UIMA SDK separately.\n\n\nAvailability\n------------\n\nuimaFIT is licensed under the Apache License 2.0 and is available from the Apache UIMA project:\n\n  https://uima.apache.org\n  https://github.com/apache/uima-uimafit\n\nuimaFIT is available via Maven Central. If you use Maven for your build \nenvironment, then you can add uimaFIT as a dependency to your pom.xml file with the \nfollowing:\n\n    \u003cdependencies\u003e\n      \u003cdependency\u003e\n        \u003cgroupId\u003eorg.apache.uima\u003c/groupId\u003e\n        \u003cartifactId\u003euimafit-core\u003c/artifactId\u003e\n        \u003cversion\u003e3.5.0\u003c/version\u003e\n      \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n    \nIf you want to manage the version for multiple uimaFIT dependencies, you can import the BOM:\n\n    \u003cdependencyManagement\u003e\n      \u003cdependencies\u003e\n        \u003cdependency\u003e\n          \u003cgroupId\u003eorg.apache.uima\u003c/groupId\u003e\n          \u003cartifactId\u003euimafit-bom\u003c/artifactId\u003e\n          \u003cversion\u003e3.5.0\u003c/version\u003e\n          \u003ctype\u003epom\u003c/type\u003e\n          \u003cscope\u003eimport\u003c/scope\u003e\n        \u003c/dependency\u003e\n      \u003c/dependencies\u003e\n    \u003cdependencyManagement\u003e\n\n\nModules\n-------\n\n- **uimafit-core** - the main uimaFIT module\n- **uimafit-cpe** - support for the Collection Processing Engine \n  (multi-threaded pipelines)\n- **uimafit-maven** - a Maven plugin to automatically enhance UIMA components with \n  uimaFIT metadata and to generate XML descriptors for uimaFIT-enabled components.\n- **uimafit-junit** - convenience code facilitating the implementation of UIMA/\n  uimaFIT tests in JUnit tests\n- **uimafit-assertj** - adds assertions for UIMA/uimaFIT types via the AssertJ \n  framework\n- **uimafit-spring** - an experimental module serving as a proof-of-concept for the \n  integration of UIMA with the Spring Framework. It is currently not considered \n  finished and uses invasive reflection in order to patch the UIMA framework such \n  that it passes all components created by UIMA through Spring to provide for the\n  wiring of Spring context dependencies. This module is made available for\n  the adventurous but currently not considered stable, finished, or even a\n  proper part of the package. E.g. it is not included in the binary\n  distribution package.\n\n\nReference\n---------\n\nIf you use uimaFIT to support academic research, then please consider citing the \nfollowing paper as appropriate:\n\n    @InProceedings{ogren-bethard:2009:SETQA-NLP,\n      author    = {Ogren, Philip  and  Bethard, Steven},\n      title     = {Building Test Suites for {UIMA} Components},\n      booktitle = {Proceedings of the Workshop on Software Engineering, Testing, and Quality Assurance for Natural Language Processing (SETQA-NLP 2009)},\n      month     = {June},\n      year      = {2009},\n      address   = {Boulder, Colorado},\n      publisher = {Association for Computational Linguistics},\n      pages     = {1--4},\n      url       = {http://www.aclweb.org/anthology/W/W09/W09-1501}\n    }\n\nHistory\n-------\n\nSince end of 2012, uimaFIT is part of the Apache UIMA project.\n\nApache uimaFIT was formerly known as uimaFIT, which in turn was formerly known as UUTUC.\n\nBefore uimaFIT has become an sub-project within the Apache UIMA project, it is was collaborative\neffort between the Center for Computational Pharmacology at the University of Colorado Denver, the\nCenter for Computational Language and Education Research at the University of Colorado at Boulder,\nand the Ubiquitous Knowledge Processing (UKP) Lab at the Technische Universität Darmstadt.\n\nThe initial uimaFIT development team was:\n\nPhilip Ogren, University of Colorado, USA\nRichard Eckart de Castilho, Technische Universität Darmstadt, Germany\nSteven Bethard, Stanford University, USA\n\nwith contributions from Niklas Jakob, Fabio Mancinelli, Chris Roeder, Philipp Wetzler, Shuo Yang,\nTorsten Zesch.\n\n\nSupport\n-------\n\nPlease direct questions to user@uima.apache.org.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fuima-uimafit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fuima-uimafit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fuima-uimafit/lists"}