{"id":41177625,"url":"https://github.com/oliverguhr/fullstop-deep-punctuation-prediction","last_synced_at":"2026-01-22T20:00:06.043Z","repository":{"id":40356051,"uuid":"368794489","full_name":"oliverguhr/fullstop-deep-punctuation-prediction","owner":"oliverguhr","description":"A model that predicts the punctuation of English, Italian, French and German texts. ","archived":false,"fork":false,"pushed_at":"2023-02-22T11:38:08.000Z","size":97722,"stargazers_count":27,"open_issues_count":0,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-05-19T05:45:35.452Z","etag":null,"topics":["deep-learning","multilingual","nlp","transformer"],"latest_commit_sha":null,"homepage":"https://huggingface.co/oliverguhr/fullstop-punctuation-multilang-large","language":"Python","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/oliverguhr.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":"2021-05-19T08:19:00.000Z","updated_at":"2023-05-16T11:22:28.000Z","dependencies_parsed_at":"2022-07-08T16:47:23.670Z","dependency_job_id":null,"html_url":"https://github.com/oliverguhr/fullstop-deep-punctuation-prediction","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/oliverguhr/fullstop-deep-punctuation-prediction","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverguhr%2Ffullstop-deep-punctuation-prediction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverguhr%2Ffullstop-deep-punctuation-prediction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverguhr%2Ffullstop-deep-punctuation-prediction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverguhr%2Ffullstop-deep-punctuation-prediction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oliverguhr","download_url":"https://codeload.github.com/oliverguhr/fullstop-deep-punctuation-prediction/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverguhr%2Ffullstop-deep-punctuation-prediction/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28670230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T19:36:09.361Z","status":"ssl_error","status_checked_at":"2026-01-22T19:36:05.567Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["deep-learning","multilingual","nlp","transformer"],"created_at":"2026-01-22T20:00:05.955Z","updated_at":"2026-01-22T20:00:06.031Z","avatar_url":"https://github.com/oliverguhr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FullStop: Multilingual Deep Models for Punctuation Prediction\n\nThis work describes our contribution to the SEPP-NLG Shared Task in multilingual sentence segmentation and punctuation prediction.\nThe goal of this task consists in training NLP models that can predict the end of sentence (EOS) and punctuation marks on automatically\ngenerated or transcribed texts. We show that these tasks benefit from crosslingual transfer by successfully employing multilingual deep\nlanguage models. Our multilingual model achieves an average F1-score of 0.94 for EOS prediction on English, German, French, and\nItalian texts and an average F1-score of 0.78 for punctuation mark prediction.\n\n[Video Sample](https://user-images.githubusercontent.com/3495355/150677531-13f2037d-8673-4e34-8769-0da1784c2fe7.mp4)\n\n## How to use:\n\nIf you like to use the model on your own texts, you can [use our python package](https://github.com/oliverguhr/deepmultilingualpunctuation/).\n\n## Install \n\nTo get started install the package from [pypi](https://pypi.org/project/deepmultilingualpunctuation/):\n\n```bash\npip install deepmultilingualpunctuation\n```\n\nMake sure your system has `cmake` installed, it's a prerequisite.\n\n## Usage\nThe ```PunctuationModel``` class an process texts of any length. Note that processing of very long texts can be time consuming.\n\n### Restore Punctuation\n```python\nfrom deepmultilingualpunctuation import PunctuationModel\n\nmodel = PunctuationModel()\ntext = \"My name is Clara and I live in Berkeley California Ist das eine Frage Frau Müller\"\nresult = model.restore_punctuation(text)\nprint(result)\n```\n\n**output**\n\u003e My name is Clara and I live in Berkeley, California. Ist das eine Frage, Frau Müller?\n\n\n### Predict Labels \n```python\nfrom deepmultilingualpunctuation import PunctuationModel\n\nmodel = PunctuationModel()\ntext = \"My name is Clara and I live in Berkeley California Ist das eine Frage Frau Müller\"\nclean_text = model.preprocess(text)\nlabled_words = model.predict(clean_text)\nprint(labled_words)\n```\n\n**output**\n\n\u003e [['My', '0', 0.9999887], ['name', '0', 0.99998665], ['is', '0', 0.9998579], ['Clara', '0', 0.6752215], ['and', '0', 0.99990904], ['I', '0', 0.9999877], ['live', '0', 0.9999839], ['in', '0', 0.9999515], ['Berkeley', ',', 0.99800044], ['California', '.', 0.99534047], ['Ist', '0', 0.99998784], ['das', '0', 0.99999154], ['eine', '0', 0.9999918], ['Frage', ',', 0.99622655], ['Frau', '0', 0.9999889], ['Müller', '?', 0.99863917]]\n\n\n\n## Results \n\nThe performance differs for the single punctuation markers as hyphens and colons, in many cases, are optional and can be substituted by either a comma or a full stop. The model achieves the following F1 scores for the different languages:\n\n| Label         | EN    | DE    | FR    | IT    |\n| ------------- | ----- | ----- | ----- | ----- |\n| 0             | 0.991 | 0.997 | 0.992 | 0.989 |\n| .             | 0.948 | 0.961 | 0.945 | 0.942 |\n| ?             | 0.890 | 0.893 | 0.871 | 0.832 |\n| ,             | 0.819 | 0.945 | 0.831 | 0.798 |\n| :             | 0.575 | 0.652 | 0.620 | 0.588 |\n| -             | 0.425 | 0.435 | 0.431 | 0.421 |\n| macro average | 0.775 | 0.814 | 0.782 | 0.762 |\n\n### Available Models\n\n| Languages                                  | Model                                                        |\n| ------------------------------------------ | ------------------------------------------------------------ |\n| English, Italian, French and German        | [oliverguhr/fullstop-punctuation-multilang-large](https://huggingface.co/oliverguhr/fullstop-punctuation-multilang-large) |\n| English, Italian, French, German and Dutch | [oliverguhr/fullstop-punctuation-multilingual-base](https://huggingface.co/oliverguhr/fullstop-punctuation-multilingual-base) |\n| Dutch                                      | [oliverguhr/fullstop-dutch-punctuation-prediction](https://huggingface.co/oliverguhr/fullstop-dutch-punctuation-prediction) |\n| Catalan                                    | [softcatala/fullstop-catalan-punctuation-prediction](https://huggingface.co/softcatala/fullstop-catalan-punctuation-prediction) |\n\nYou can use different models by setting the model parameter:\n\n```python\nmodel = PunctuationModel(model = \"oliverguhr/fullstop-dutch-punctuation-prediction\")\n```\n\n### Training other languages\n\nSee [training other languages](./other_languages/readme.md)\n\n\n## How to reproduce\n\nIn order to reproduce our experiments you can execute following code:\n\n```\n# setup\npip install -r requirements.txt\nsh download-dataset.sh\n\n# training\npython model_test_suite.py 1\npython model_test_suite.py 2\n\n# test\nsh predict_all_task_1_models.sh\nsh predict_all_task_2_models.sh\n```\n\n### Competition Website\n\nhttps://sites.google.com/view/sentence-segmentation/\n\n### Data\n\nhttps://drive.switch.ch/index.php/s/g3fMhMZU2uo32mf\n\n## Cite us\n\n```\n@article{guhr-EtAl:2021:fullstop,\n  title={FullStop: Multilingual Deep Models for Punctuation Prediction},\n  author    = {Guhr, Oliver  and  Schumann, Anne-Kathrin  and  Bahrmann, Frank  and  Böhme, Hans Joachim},\n  booktitle      = {Proceedings of the Swiss Text Analytics Conference 2021},\n  month          = {June},\n  year           = {2021},\n  address        = {Winterthur, Switzerland},\n  publisher      = {CEUR Workshop Proceedings},  \n  url       = {http://ceur-ws.org/Vol-2957/sepp_paper4.pdf}\n}\n```\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverguhr%2Ffullstop-deep-punctuation-prediction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foliverguhr%2Ffullstop-deep-punctuation-prediction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverguhr%2Ffullstop-deep-punctuation-prediction/lists"}