{"id":13413547,"url":"https://github.com/a2800276/porter","last_synced_at":"2026-03-04T02:15:13.520Z","repository":{"id":57496902,"uuid":"12893197","full_name":"a2800276/porter","owner":"a2800276","description":"porter stemmer","archived":false,"fork":false,"pushed_at":"2013-10-03T11:10:18.000Z","size":392,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-31T20:52:34.010Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/a2800276.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}},"created_at":"2013-09-17T11:10:16.000Z","updated_at":"2022-12-19T17:32:36.000Z","dependencies_parsed_at":"2022-08-28T13:41:48.243Z","dependency_job_id":null,"html_url":"https://github.com/a2800276/porter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2800276%2Fporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2800276%2Fporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2800276%2Fporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2800276%2Fporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/a2800276","download_url":"https://codeload.github.com/a2800276/porter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221498771,"owners_count":16833059,"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":[],"created_at":"2024-07-30T20:01:42.910Z","updated_at":"2026-03-04T02:15:08.498Z","avatar_url":"https://github.com/a2800276.png","language":"Go","readme":"Porter Stemmer for Go\n=====================\n\nThis is a fairly straighforward port of Martin Porter's C implementation\nof the Porter stemming algorithm. The C version this port is based on is\navailable for download here:\n[http://tartarus.org/~martin/PorterStemmer/c_thread_safe.txt](http://tartarus.org/~martin/PorterStemmer/c_thread_safe.txt)\n\nThe original algorithm is described in the paper:\n\n    M.F. Porter, 1980, An algorithm for suffix stripping, Program, 14(3) pp\n    130-137.\n\n\nWhile the internal implementation and interface is nearly identical to\nthe original implementation, the Go interface is much simplified. The\nstemmer can be called as follows:\n\n    import \"porter\"\n    ...\n    stemmed := porter.Stem(word_to_stem)\n\nInstalling\n----------\n\n    go get github.com/a2800276/porter\n\nto use the stemmer when installed using goinstall, import:\n\n    import \"github.com/a2800276/porter\"\n\nLimitations\n-----------\n\nWhile the implementation is fairly robust, this is a work in progress.\nIn particular, a new interface will likely be provided to prevent\nexcessive conversions between `string`s and `[]byte`. Currently, on\ncalling `Stem` the string argument is converted to a byte slice which\nthe algorithm works on and is converted back into a string before\nreturning.\n\nAlso, the implementation is not particularly robust at handling Unicode\ninput, currently, only bytes with the high bit set are ignored. It's up\nto the caller to make sure the string contains only ASCII characters.\nSince the algorithm itself operates on English words only, this doens't\nrestrict the functionality, but it is nuisance.\n\nTODO:\n----- \n* byte slice API to void roundtripping to string and back \n","funding_links":[],"categories":["Natural Language Processing","Relational Databases","自然語言處理","\u003cspan id=\"自然语言处理-natural-language-processing\"\u003e自然语言处理 Natural Language Processing\u003c/span\u003e","自然语言处理","Microsoft Office","Bot Building"],"sub_categories":["Uncategorized","Middlewares","Advanced Console UIs","高級控制台界面","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","形态分析","Strings","暂未分类","高级控制台界面","Morphological Analyzers","交流","暂未分类这些库被放在这里是因为其他类别似乎都不适合。"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa2800276%2Fporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fa2800276%2Fporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa2800276%2Fporter/lists"}