{"id":50350539,"url":"https://github.com/StarlangSoftware/TurkishMorphologicalAnalysis","last_synced_at":"2026-06-15T12:01:44.776Z","repository":{"id":45584454,"uuid":"135601538","full_name":"StarlangSoftware/TurkishMorphologicalAnalysis","owner":"StarlangSoftware","description":"Turkish Morphological Analysis library","archived":false,"fork":false,"pushed_at":"2026-03-17T11:03:00.000Z","size":5920,"stargazers_count":19,"open_issues_count":1,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-04-07T11:32:47.454Z","etag":null,"topics":["finite-state-machine","morphological-analyser","morphological-analysis","morphology","turkish"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StarlangSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-05-31T15:23:06.000Z","updated_at":"2026-03-17T11:03:04.000Z","dependencies_parsed_at":"2025-07-05T14:34:02.926Z","dependency_job_id":"999102c9-cf83-4639-ba41-f5119499f01d","html_url":"https://github.com/StarlangSoftware/TurkishMorphologicalAnalysis","commit_stats":null,"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/StarlangSoftware/TurkishMorphologicalAnalysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StarlangSoftware%2FTurkishMorphologicalAnalysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StarlangSoftware%2FTurkishMorphologicalAnalysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StarlangSoftware%2FTurkishMorphologicalAnalysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StarlangSoftware%2FTurkishMorphologicalAnalysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StarlangSoftware","download_url":"https://codeload.github.com/StarlangSoftware/TurkishMorphologicalAnalysis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StarlangSoftware%2FTurkishMorphologicalAnalysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34361403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["finite-state-machine","morphological-analyser","morphological-analysis","morphology","turkish"],"created_at":"2026-05-29T21:00:23.929Z","updated_at":"2026-06-15T12:01:44.771Z","avatar_url":"https://github.com/StarlangSoftware.png","language":"Java","funding_links":[],"categories":["人工智能"],"sub_categories":["自然语言处理"],"readme":"Morphological Analysis\n============\n\n## Morphology\n\nIn linguistics, the term morphology refers to the study of the internal structure of words. Each word is assumed to consist of one or more morphemes, which can be defined as the smallest linguistic unit having a particular meaning or grammatical function. One can come across morphologically simplex words, i.e. roots, as well as morphologically complex ones, such as compounds or affixed forms.\n\nBatı-lı-laş-tır-ıl-ama-yan-lar-dan-mış-ız \nwest-With-Make-Caus-Pass-Neg.Abil-Nom-Pl-Abl-Evid-A3Pl\n‘It appears that we are among the ones that cannot be westernized.’\n\nThe morphemes that constitute a word combine in a (more or less) strict order. Most morphologically complex words are in the ”ROOT-SUFFIX1-SUFFIX2-...” structure. Affixes have two types: (i) derivational affixes, which change the meaning and sometimes also the grammatical category of the base they are attached to, and (ii) inflectional affixes serving particular grammatical functions. In general, derivational suffixes precede inflectional ones. The order of derivational suffixes is reflected on the meaning of the derived form. For instance, consider the combination of the noun göz ‘eye’ with two derivational suffixes -lIK and -CI: Even though the same three morphemes are used, the meaning of a word like gözcülük ‘scouting’ is clearly different from that of gözlükçü ‘optician’.\n\n## Dilbaz\n\nHere we present a new morphological analyzer, which is (i) open: The latest version of source codes, the lexicon, and the morphotactic rule engine are all available here, (ii) extendible: One of the disadvantages of other morphological analyzers is that their lexicons are fixed or unmodifiable, which prevents to add new bare-forms to the morphological analyzer. In our morphological analyzer, the lexicon is in text form and is easily modifiable, (iii) fast: Morphological analysis is one of the core components of any NLP process. It must be very fast to handle huge corpora. Compared to other morphological analyzers, our analyzer is capable of analyzing hundreds of thousands words per second, which makes it one of the fastest Turkish morphological analyzers available.\n\nThe morphological analyzer consists of five main components, namely, a lexicon, a finite state transducer, a rule engine for suffixation, a trie data structure, and a least recently used (LRU) cache.\n\nIn this analyzer, we assume all idiosyncratic information to be encoded in the lexicon. While phonologically conditioned allomorphy will be dealt with by the transducer, other types of allomorphy, all exceptional forms to otherwise regular processes, as well as words formed through derivation (except for the few transparently compositional derivational suffixes are considered to be included in the lexicon.\n\nIn our morphological analyzer, finite state transducer is encoded in an xml file.\n\nTo overcome the irregularities and also to accelerate the search for the bareforms, we use a trie data structure in our morphological analyzer, and store all words in our lexicon in that data structure. For the regular words, we only store that word in our trie, whereas for irregular words we store both the original form and some prefix of that word. \n\nSimple Web Interface\n============\n[Link 1](http://104.247.163.162/nlptoolkit/turkish-morphological-analysis.html) [Link 2](https://starlangsoftware.github.io/nlptoolkit-web-simple/turkish-morphological-analysis.html)\n\nVideo Lectures\n============\n\n[\u003cimg src=video1.jpg width=\"50%\"\u003e](https://youtu.be/KxguxpbgDQc)[\u003cimg src=video2.jpg width=\"50%\"\u003e](https://youtu.be/UMmA2LMkAkw)[\u003cimg src=video3.jpg width=\"50%\"\u003e](https://youtu.be/dP97ovMSSfE)[\u003cimg src=video4.jpg width=\"50%\"\u003e](https://youtu.be/Tgmy5tts_pY)\n\nFor Developers\n============\n\nYou can also see [Python](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-Py), [Cython](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-Cy), [C++](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-CPP), [C](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-C), [Swift](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-Swift), [Js](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-Js), [Php](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-Php), or [C#](https://github.com/starlangsoftware/TurkishMorphologicalAnalysis-CS) repository.\n\n## Requirements\n\n* [Java Development Kit 8 or higher](#java), Open JDK or Oracle JDK\n* [Maven](#maven)\n* [Git](#git)\n\n### Java \n\nTo check if you have a compatible version of Java installed, use the following command:\n\n    java -version\n    \nIf you don't have a compatible version, you can download either [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) or [OpenJDK](https://openjdk.java.net/install/)    \n\n### Maven\nTo check if you have Maven installed, use the following command:\n\n    mvn --version\n    \nTo install Maven, you can follow the instructions [here](https://maven.apache.org/install.html).      \n\n### Git\n\nInstall the [latest version of Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).\n\n## Download Code\n\nIn order to work on code, create a fork from GitHub page. \nUse Git for cloning the code to your local or below line for Ubuntu:\n\n\tgit clone \u003cyour-fork-git-link\u003e\n\nA directory called MorphologicalAnalysis will be created. Or you can use below link for exploring the code:\n\n\tgit clone https://github.com/starlangsoftware/TurkishMorphologicalAnalysis.git\n\n## Open project with IntelliJ IDEA\n\nSteps for opening the cloned project:\n\n* Start IDE\n* Select **File | Open** from main menu\n* Choose `MorphologicalAnalysis/pom.xml` file\n* Select open as project option\n* Couple of seconds, dependencies with Maven will be downloaded. \n\n\n## Compile\n\n**From IDE**\n\nAfter being done with the downloading and Maven indexing, select **Build Project** option from **Build** menu. After compilation process, user can run Morphological Analysis.\n\n**From Console**\n\nGo to `MorphologicalAnalysis` directory and compile with \n\n     mvn compile \n\n## Generating jar files\n\n**From IDE**\n\nUse `package` of 'Lifecycle' from maven window on the right and from `MorphologicalAnalysis` root module.\n\n**From Console**\n\nUse below line to generate jar file:\n\n     mvn install\n\n## Maven Usage\n\n        \u003cdependency\u003e\n            \u003cgroupId\u003eio.github.starlangsoftware\u003c/groupId\u003e\n            \u003cartifactId\u003eMorphologicalAnalysis\u003c/artifactId\u003e\n            \u003cversion\u003e1.0.62\u003c/version\u003e\n        \u003c/dependency\u003e\n\nDetailed Description\n============\n\n+ [Creating FsmMorphologicalAnalyzer](#creating-fsmmorphologicalanalyzer)\n+ [Word level morphological analysis](#word-level-morphological-analysis)\n+ [Sentence level morphological analysis](#sentence-level-morphological-analysis)\n\n## Creating FsmMorphologicalAnalyzer \n\nFsmMorphologicalAnalyzer provides Turkish morphological analysis. This class can be created as follows:\n\n    FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer();\n    \nThis generates a new `TxtDictionary` type dictionary from [`turkish_dictionary.txt`](https://github.com/olcaytaner/Dictionary/tree/master/src/main/resources) with fixed cache size 100000 and by using [`turkish_finite_state_machine.xml`](https://github.com/olcaytaner/MorphologicalAnalysis/tree/master/src/main/resources). \n\nCreating a morphological analyzer with different cache size, dictionary or finite state machine is also possible. \n* With different cache size, \n\n        FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer(50000);   \n\n* Using a different dictionary,\n\n        FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer(\"my_turkish_dictionary.txt\");   \n\n* Specifying both finite state machine and dictionary, \n\n        FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer(\"fsm.xml\", \"my_turkish_dictionary.txt\") ;      \n    \n* Giving finite state machine and cache size with creating `TxtDictionary` object, \n        \n        TxtDictionary dictionary = new TxtDictionary(\"my_turkish_dictionary.txt\", new TurkishWordComparator());\n        FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer(\"fsm.xml\", dictionary, 50000) ;\n    \n* With different finite state machine and creating `TxtDictionary` object,\n       \n        TxtDictionary dictionary = new TxtDictionary(\"my_turkish_dictionary.txt\", new TurkishWordComparator(), \"my_turkish_misspelled.txt\");\n        FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer(\"fsm.xml\", dictionary);\n\n## Word level morphological analysis\n\nFor morphological analysis,  `morphologicalAnalysis(String word)` method of `FsmMorphologicalAnalyzer` is used. This returns `FsmParseList` object. \n\n\n    FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer();\n    String word = \"yarına\";\n    FsmParseList fsmParseList = fsm.morphologicalAnalysis(word);\n    for (int i = 0; i \u003c fsmParseList.size(); i++){\n      System.out.println(fsmParseList.getFsmParse(i).transitionList();\n    } \n      \nOutput\n\n    yar+NOUN+A3SG+P2SG+DAT\n    yar+NOUN+A3SG+P3SG+DAT\n    yarı+NOUN+A3SG+P2SG+DAT\n    yarın+NOUN+A3SG+PNON+DAT\n    \nFrom `FsmParseList`, a single `FsmParse` can be obtained as follows:\n\n    FsmParse parse = fsmParseList.getFsmParse(0);\n    System.out.println(parse.transitionList();   \n    \nOutput    \n    \n    yar+NOUN+A3SG+P2SG+DAT\n    \n## Sentence level morphological analysis\n`morphologicalAnalysis(Sentence sentence)` method of `FsmMorphologicalAnalyzer` is used. This returns `FsmParseList[]` object. \n\n    FsmMorphologicalAnalyzer fsm = new FsmMorphologicalAnalyzer();\n    Sentence sentence = new Sentence(\"Yarın doktora gidecekler\");\n    FsmParseList[] parseLists = fsm.morphologicalAnalysis(sentence);\n    for(int i = 0; i \u003c parseLists.length; i++){\n        for(int j = 0; j \u003c parseLists[i].size(); j++){\n            FsmParse parse = parseLists[i].getFsmParse(j);\n            System.out.println(parse.transitionList());\n        }\n        System.out.println(\"-----------------\");\n    }\n    \nOutput\n    \n    -----------------\n    yar+NOUN+A3SG+P2SG+NOM\n    yar+NOUN+A3SG+PNON+GEN\n    yar+VERB+POS+IMP+A2PL\n    yarı+NOUN+A3SG+P2SG+NOM\n    yarın+NOUN+A3SG+PNON+NOM\n    -----------------\n    doktor+NOUN+A3SG+PNON+DAT\n    doktora+NOUN+A3SG+PNON+NOM\n    -----------------\n    git+VERB+POS+FUT+A3PL\n    git+VERB+POS^DB+NOUN+FUTPART+A3PL+PNON+NOM\n\n# Cite\n\n\t@inproceedings{yildiz-etal-2019-open,\n    \ttitle = \"An Open, Extendible, and Fast {T}urkish Morphological Analyzer\",\n    \tauthor = {Y{\\i}ld{\\i}z, Olcay Taner  and\n      \tAvar, Beg{\\\"u}m  and\n      \tErcan, G{\\\"o}khan},\n    \tbooktitle = \"Proceedings of the International Conference on Recent Advances in Natural Language Processing (RANLP 2019)\",\n    \tmonth = sep,\n    \tyear = \"2019\",\n    \taddress = \"Varna, Bulgaria\",\n    \tpublisher = \"INCOMA Ltd.\",\n    \turl = \"https://www.aclweb.org/anthology/R19-1156\",\n    \tdoi = \"10.26615/978-954-452-056-4_156\",\n    \tpages = \"1364--1372\",\n\t}\n\t\nFor Contibutors\n============\n\n### Class Diagram\n\n\u003cimg src=\"classDiagram.png\"\u003e\n\n### pom.xml file\n1. Standard setup for packaging is similar to:\n```\n    \u003cgroupId\u003eio.github.starlangsoftware\u003c/groupId\u003e\n    \u003cartifactId\u003eAmr\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n    \u003cpackaging\u003ejar\u003c/packaging\u003e\n    \u003cname\u003eNlpToolkit.Amr\u003c/name\u003e\n    \u003cdescription\u003eAbstract Meaning Representation Library\u003c/description\u003e\n    \u003curl\u003ehttps://github.com/StarlangSoftware/Amr\u003c/url\u003e\n\n    \u003corganization\u003e\n        \u003cname\u003eio.github.starlangsoftware\u003c/name\u003e\n        \u003curl\u003ehttps://github.com/starlangsoftware\u003c/url\u003e\n    \u003c/organization\u003e\n\n    \u003clicenses\u003e\n        \u003clicense\u003e\n            \u003cname\u003eThe Apache Software License, Version 2.0\u003c/name\u003e\n            \u003curl\u003ehttp://www.apache.org/licenses/LICENSE-2.0.txt\u003c/url\u003e\n        \u003c/license\u003e\n    \u003c/licenses\u003e\n\n    \u003cdevelopers\u003e\n        \u003cdeveloper\u003e\n            \u003cname\u003eOlcay Taner Yildiz\u003c/name\u003e\n            \u003cemail\u003eolcay.yildiz@ozyegin.edu.tr\u003c/email\u003e\n            \u003corganization\u003eStarlang Software\u003c/organization\u003e\n            \u003corganizationUrl\u003ehttp://www.starlangyazilim.com\u003c/organizationUrl\u003e\n        \u003c/developer\u003e\n    \u003c/developers\u003e\n\n    \u003cscm\u003e\n        \u003cconnection\u003escm:git:git://github.com/starlangsoftware/amr.git\u003c/connection\u003e\n        \u003cdeveloperConnection\u003escm:git:ssh://github.com:starlangsoftware/amr.git\u003c/developerConnection\u003e\n        \u003curl\u003ehttp://github.com/starlangsoftware/amr/tree/master\u003c/url\u003e\n    \u003c/scm\u003e\n\n    \u003cproperties\u003e\n        \u003cmaven.compiler.source\u003e1.8\u003c/maven.compiler.source\u003e\n        \u003cmaven.compiler.target\u003e1.8\u003c/maven.compiler.target\u003e\n        \u003cproject.build.sourceEncoding\u003eUTF-8\u003c/project.build.sourceEncoding\u003e\n    \u003c/properties\u003e\n```\n2. Only top level dependencies should be added. Do not forget junit dependency.\n```\n    \u003cdependencies\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eio.github.starlangsoftware\u003c/groupId\u003e\n            \u003cartifactId\u003eAnnotatedSentence\u003c/artifactId\u003e\n            \u003cversion\u003e1.0.78\u003c/version\u003e\n        \u003c/dependency\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003ejunit\u003c/groupId\u003e\n            \u003cartifactId\u003ejunit\u003c/artifactId\u003e\n            \u003cversion\u003e4.13.1\u003c/version\u003e\n            \u003cscope\u003etest\u003c/scope\u003e\n        \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n```\n3. Maven compiler, gpg, source, javadoc plugings should be added.\n```\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n\t\t\u003cversion\u003e3.6.1\u003c/version\u003e\n\t\t\u003cconfiguration\u003e\n\t\t\t\u003csource\u003e1.8\u003c/source\u003e\n\t\t\t\u003ctarget\u003e1.8\u003c/target\u003e\n\t\t\u003c/configuration\u003e\n\t\u003c/plugin\u003e\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\u003cartifactId\u003emaven-gpg-plugin\u003c/artifactId\u003e\n\t\t\u003cversion\u003e1.6\u003c/version\u003e\n\t\t\u003cexecutions\u003e\n\t\t\t\u003cexecution\u003e\n\t\t\t\t\u003cid\u003esign-artifacts\u003c/id\u003e\n\t\t\t\t\u003cphase\u003everify\u003c/phase\u003e\n\t\t\t\t\u003cgoals\u003e\n\t\t\t\t\t\u003cgoal\u003esign\u003c/goal\u003e\n\t\t\t\t\u003c/goals\u003e\n\t\t\t\u003c/execution\u003e\n\t\t\u003c/executions\u003e\n\t\u003c/plugin\u003e\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\u003cartifactId\u003emaven-source-plugin\u003c/artifactId\u003e\n\t\t\u003cversion\u003e2.2.1\u003c/version\u003e\n\t\t\u003cexecutions\u003e\n\t\t\t\u003cexecution\u003e\n\t\t\t\t\u003cid\u003eattach-sources\u003c/id\u003e\n\t\t\t\t\u003cgoals\u003e\n\t\t\t\t\t\u003cgoal\u003ejar-no-fork\u003c/goal\u003e\n\t\t\t\t\u003c/goals\u003e\n\t\t\t\u003c/execution\u003e\n\t\t\u003c/executions\u003e\n\t\u003c/plugin\u003e\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\u003cartifactId\u003emaven-javadoc-plugin\u003c/artifactId\u003e\n\t\t\u003cconfiguration\u003e\n\t\t\t\u003csource\u003e8\u003c/source\u003e\n\t\t\u003c/configuration\u003e\n\t\t\u003cversion\u003e3.10.0\u003c/version\u003e\n\t\t\u003cexecutions\u003e\n\t\t\t\u003cexecution\u003e\n\t\t\t\t\u003cid\u003eattach-javadocs\u003c/id\u003e\n\t\t\t\t\u003cgoals\u003e\n\t\t\t\t\t\u003cgoal\u003ejar\u003c/goal\u003e\n\t\t\t\t\u003c/goals\u003e\n\t\t\t\u003c/execution\u003e\n\t\t\u003c/executions\u003e\n\t\u003c/plugin\u003e\n```\n4. Currently publishing plugin is Sonatype.\n```\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.sonatype.central\u003c/groupId\u003e\n\t\t\u003cartifactId\u003ecentral-publishing-maven-plugin\u003c/artifactId\u003e\n\t\t\u003cversion\u003e0.8.0\u003c/version\u003e\n\t\t\u003cextensions\u003etrue\u003c/extensions\u003e\n\t\t\u003cconfiguration\u003e\n\t\t\t\u003cpublishingServerId\u003ecentral\u003c/publishingServerId\u003e\n\t\t\t\u003cautoPublish\u003etrue\u003c/autoPublish\u003e\n\t\t\u003c/configuration\u003e\n\t\u003c/plugin\u003e\n```\n5. For UI jar files use assembly plugins.\n```\n\t\u003cplugin\u003e\n\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\u003cartifactId\u003emaven-assembly-plugin\u003c/artifactId\u003e\n\t\t\u003cversion\u003e2.2-beta-5\u003c/version\u003e\n\t\t\u003cexecutions\u003e\n\t\t\t\u003cexecution\u003e\n\t\t\t\t\u003cid\u003esentence-dependency\u003c/id\u003e\n\t\t\t\t\u003cphase\u003epackage\u003c/phase\u003e\n\t\t\t\t\u003cgoals\u003e\n\t\t\t\t\t\u003cgoal\u003esingle\u003c/goal\u003e\n\t\t\t\t\u003c/goals\u003e\n\t\t\t\t\u003cconfiguration\u003e\n\t\t\t\t\t\u003carchive\u003e\n\t\t\t\t\t\t\u003cmanifest\u003e\n\t\t\t\t\t\t\t\u003cmainClass\u003eAmr.Annotation.TestAmrFrame\u003c/mainClass\u003e\n\t\t\t\t\t\t\u003c/manifest\u003e\n\t\t\t\t\t\u003c/archive\u003e\n\t\t\t\t\t\u003cfinalName\u003eamr\u003c/finalName\u003e\n\t\t\t\t\u003c/configuration\u003e\n\t\t\t\u003c/execution\u003e\n\t\t\u003c/executions\u003e\n\t\t\u003cconfiguration\u003e\n\t\t\t\u003cdescriptorRefs\u003e\n\t\t\t\t\u003cdescriptorRef\u003ejar-with-dependencies\u003c/descriptorRef\u003e\n\t\t\t\u003c/descriptorRefs\u003e\n\t\t\t\u003cappendAssemblyId\u003efalse\u003c/appendAssemblyId\u003e\n\t\t\u003c/configuration\u003e\n\t\u003c/plugin\u003e\n```\n### Resources\n1. Add resources to the resources subdirectory. These will include image files (necessary for UI), data files, etc.\n   \n### Java files\n1. Do not forget to comment each function.\n```\n    /**\n     * Returns the value of a given layer.\n     * @param viewLayerType Layer for which the value questioned.\n     * @return The value of the given layer.\n     */\n    public String getLayerInfo(ViewLayerType viewLayerType){\n```\n2. Function names should follow caml case.\n```\n    public MorphologicalParse getParse()\n```\n3. Write toString methods, if necessary.\n4. Use Junit for writing test classes. Use test setup if necessary.\n```\npublic class AnnotatedSentenceTest {\n    AnnotatedSentence sentence0, sentence1, sentence2, sentence3, sentence4;\n    AnnotatedSentence sentence5, sentence6, sentence7, sentence8, sentence9;\n\n    @Before\n    public void setUp() throws Exception {\n        sentence0 = new AnnotatedSentence(new File(\"sentences/0000.dev\"));\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStarlangSoftware%2FTurkishMorphologicalAnalysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStarlangSoftware%2FTurkishMorphologicalAnalysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStarlangSoftware%2FTurkishMorphologicalAnalysis/lists"}