{"id":26942376,"url":"https://github.com/neuw84/cvalue-termextraction","last_synced_at":"2025-07-04T08:04:38.117Z","repository":{"id":76666727,"uuid":"15145260","full_name":"Neuw84/CValue-TermExtraction","owner":"Neuw84","description":"A free implementation of the C-Value algorithm based on this paper http://personalpages.manchester.ac.uk/staff/sophia.ananiadou/ijodl2000.pdf","archived":false,"fork":false,"pushed_at":"2018-02-08T09:25:12.000Z","size":33,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T16:52:17.758Z","etag":null,"topics":["cvalue","java","keyword-extraction","nlp","pos-tagger"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Neuw84.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-12-12T19:26:18.000Z","updated_at":"2021-04-10T17:03:05.000Z","dependencies_parsed_at":"2023-02-27T15:45:44.734Z","dependency_job_id":null,"html_url":"https://github.com/Neuw84/CValue-TermExtraction","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Neuw84/CValue-TermExtraction","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neuw84%2FCValue-TermExtraction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neuw84%2FCValue-TermExtraction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neuw84%2FCValue-TermExtraction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neuw84%2FCValue-TermExtraction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neuw84","download_url":"https://codeload.github.com/Neuw84/CValue-TermExtraction/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neuw84%2FCValue-TermExtraction/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263472275,"owners_count":23471811,"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":["cvalue","java","keyword-extraction","nlp","pos-tagger"],"created_at":"2025-04-02T16:48:54.192Z","updated_at":"2025-07-04T08:04:38.105Z","avatar_url":"https://github.com/Neuw84.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"CValue-TermExtraction\n=====================\n\nA free Java 8 implementation of the C-Value algorithm based on this paper:\n\nhttp://personalpages.manchester.ac.uk/staff/sophia.ananiadou/ijodl2000.pdf\n\nThe CValue is an algorithm for keyphrase extraction that has good results without any trainning combining statistical measures with \nPOS information. \n\nIt supports English using Penn Treebank POS Tags for english and Spanish using EAGLES tag set.\n\nThis implementation requires a POS tagger to be used in order to work. For example The Illinois POS tagger could be used for English. \n\nhttp://cogcomp.cs.illinois.edu/page/software_view/POS\n\nFor Spanish it has been tested using Freeling. \n\nhttp://nlp.lsi.upc.edu/freeling/\n\nThe implementation has been tested with English, for documents that contains a lot of noise (like the extracted via OCR recognition) there are some fixes but the Filters for english should change to use Regular Expressions like the Spanish one in order to avoid problems with the Java Stack (although 26,000 papers have been tested with the current implementation). \n\nLicense: GPL V2\n\nTODO: \n\n     - Change the English filters to use regular expressions instead the reccursion approach. \n     - Implement the NC-Value measure (will require a corpus)\n\n\nThen an example parser for english that will provide the required data (using Illinois POS Tagger)\n\n\n```java\n\n    import LBJ2.nlp.SentenceSplitter;\n    import LBJ2.nlp.WordSplitter;\n    import LBJ2.nlp.seg.PlainToTokenParser;\n    import LBJ2.parse.Parser;\n    import edu.illinois.cs.cogcomp.lbj.chunk.Chunker;\n    import edu.illinois.cs.cogcomp.lbj.pos.POSTagger;\n    import edu.ehu.galan.cvalue.model.Token;\n     ......\n\n     List\u003cLinkedList\u003cToken\u003e\u003e tokenizedSentenceList;\n     List\u003cString\u003e sentenceList;\n     POSTagger tagger = new POSTagger();\n     Chunker chunker = new Chunker();\n     boolean first = true;\n     parser = new PlainToTokenParser(new WordSplitter(new SentenceSplitter(pFile)));\n     String sentence = \"\";\n     LinkedList\u003cToken\u003e tokenList = null;\n     for (LBJ2.nlp.seg.Token word = (LBJ2.nlp.seg.Token) parser.next(); word != null;\n            word = (LBJ2.nlp.seg.Token) parser.next()) {\n            String chunked = chunker.discreteValue(word);\n            tagger.discreteValue(word);\n            if (first) {\n                tokenList = new LinkedList\u003c\u003e();\n                tokenizedSentenceList.add(tokenList);\n                first = false;\n            }\n            tokenList.add(new Token(word.form, word.partOfSpeech, null, chunked));\n            sentence = sentence + \" \" + (word.form);\n            if (word.next == null) {\n                sentenceList.add(sentence);\n                first = true;\n                sentence = \"\";\n            }\n     }\n     parser.reset();\n     \n```\n\nThen The CValue can be processed then.....\n\n\n```java\n\n    Document doc=new Document(full_path,name);\n    doc.setSentenceList(sentences);\n    doc.setTokenList(tokenized_sentences); \n    CValueAlgortithm cvalue=new CValueAlgortithm();\n    cvalue.init(doc); // initializes the algorithm for processing the desired document. \n    cvalue.addNewProcessingFilter(use_one_of_the_provides); //for example the AdjNounFilter\n    cvalue.runAlgorithm(); //process the CValue algorithm with the provided filters\n    doc.getTermList(); //get the results\n```\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuw84%2Fcvalue-termextraction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneuw84%2Fcvalue-termextraction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuw84%2Fcvalue-termextraction/lists"}