{"id":19544355,"url":"https://github.com/chakki-works/namaco","last_synced_at":"2026-03-01T07:34:08.681Z","repository":{"id":85171239,"uuid":"106485574","full_name":"chakki-works/namaco","owner":"chakki-works","description":"Character Based Named Entity Recognition.","archived":false,"fork":false,"pushed_at":"2018-04-03T09:11:25.000Z","size":5498,"stargazers_count":40,"open_issues_count":5,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-26T17:47:33.972Z","etag":null,"topics":["deep-learning","keras","machine-learning","named-entity-recognition","natural-language-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chakki-works.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-10-11T00:24:21.000Z","updated_at":"2025-01-17T12:58:18.000Z","dependencies_parsed_at":"2023-03-04T21:00:18.090Z","dependency_job_id":null,"html_url":"https://github.com/chakki-works/namaco","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chakki-works/namaco","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chakki-works%2Fnamaco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chakki-works%2Fnamaco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chakki-works%2Fnamaco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chakki-works%2Fnamaco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chakki-works","download_url":"https://codeload.github.com/chakki-works/namaco/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chakki-works%2Fnamaco/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29964157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T06:55:38.174Z","status":"ssl_error","status_checked_at":"2026-03-01T06:53:04.810Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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","keras","machine-learning","named-entity-recognition","natural-language-processing"],"created_at":"2024-11-11T03:27:53.519Z","updated_at":"2026-03-01T07:34:08.662Z","avatar_url":"https://github.com/chakki-works.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# namaco\n***namaco*** is a library for character-based Named Entity Recognition.\nnamaco will especially focus on Japanese and Chinese named entity recognition.\n\n\u003c!--\nThe following picture is an expected completion image:\n\u003cimg src=\"https://github.com/Hironsan/anago/blob/docs/docs/images/example.ja2.png?raw=true\"\u003e\n--\u003e\n\n# Demo\nThe following demo shows Chinese Named Entity Recognition:\n\n![gif](/docs/ner_chinese.gif)\n\n\n## Feature Support\nnamaco would provide following features:\n* learning model by your data.\n* tagging sentences by learned model.\n\n\n## Install\nTo install namaco, simply run:\n\n```\n$ pip install namaco\n```\n\n## Data format\nThe data must be in the following format(tsv):\n\n```\n安\tB-PERSON\n倍\tE-PERSON\n首\tO\n相\tO\nが\tO\n訪\tO\n米\tS-LOC\nし\tO\nた\tO\n \n本\tB-DATE\n日\tE-DATE\n```\n\n## Get Started\n### Import\nFirst, import the necessary modules:\n```python\nimport os\nimport namaco\nfrom namaco.data.reader import load_data_and_labels\nfrom namaco.data.preprocess import prepare_preprocessor\nfrom namaco.config import ModelConfig, TrainingConfig\nfrom namaco.models import CharNER\n```\nThey include loading modules, a preprocessor and configs.\n\n\nThen, set parameters to use later:\n```python\nDATA_ROOT = 'data/ja/ner'\nSAVE_ROOT = './models'  # trained model\nLOG_ROOT = './logs'     # checkpoint, tensorboard\nmodel_file = os.path.join(SAVE_ROOT, 'model.h5')\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\n```\n\n### Loading data\nAfter importing the modules, read data for training and validation:\n```python\ntrain_path = os.path.join(DATA_ROOT, 'train.txt')\nvalid_path = os.path.join(DATA_ROOT, 'valid.txt')\nx_train, y_train = load_data_and_labels(train_path)\nx_valid, y_valid = load_data_and_labels(valid_path)\n```\n\nAfter reading the data, prepare preprocessor and model:\n```python\np = prepare_preprocessor(x_train, y_train)\nmodel = CharNER(model_config, p.vocab_size(), p.tag_size())\n```\n\nNow we are ready for training :)\n\n\n### Training a model\nLet's train a model. For training a model, we can use ***Trainer***. \nTrainer manages everything about training.\nPrepare an instance of Trainer class and give train data and valid data to train method:\n```python\ntrainer = namaco.Trainer(model,\n                         model.loss,\n                         training_config,\n                         log_dir=LOG_ROOT,\n                         save_path=model_file,\n                         preprocessor=p)\ntrainer.train(x_train, y_train, x_valid, y_valid)\n```\n\nIf training is progressing normally, progress bar would be displayed as follows:\n\n```commandline\n...\nEpoch 3/15\n702/703 [============================\u003e.] - ETA: 0s - loss: 60.0129 - f1: 89.70\n703/703 [==============================] - 319s - loss: 59.9278   \nEpoch 4/15\n702/703 [============================\u003e.] - ETA: 0s - loss: 59.9268 - f1: 90.03\n703/703 [==============================] - 324s - loss: 59.8417   \nEpoch 5/15\n702/703 [============================\u003e.] - ETA: 0s - loss: 58.9831 - f1: 90.67\n703/703 [==============================] - 297s - loss: 58.8993   \n...\n```\n\n\u003c!--\n### Evaluating a model\nTo evaluate the trained model, we can use ***Evaluator***.\nEvaluator performs evaluation.\nPrepare an instance of Evaluator class and give test data to eval method:\n\n```\nweights = 'model_weights.h5'\n\nevaluator = namaco.Evaluator(model_config, weights, save_path=SAVE_ROOT, preprocessor=p)\nevaluator.eval(x_test, y_test)\n```\n\nAfter evaluation, F1 value is output:\n```commandline\n- f1: 90.67\n```\n--\u003e\n### Tagging a sentence\nWe can use ***Tagger*** for tagging text.\nPrepare an instance of Tagger class and give text to tag method:\n```python\ntagger = namaco.Tagger(model_file, preprocessor=p, tokenizer=list)\n```\n\nLet's try to tag a sentence, `安倍首相が訪米した`\nWe can do it as follows:\n```python\n\u003e\u003e\u003e sent = '安倍首相が訪米した'\n\u003e\u003e\u003e tagger.analyze(sent)\n{\n  \"language\": \"jp\",\n  \"text\": \"安倍首相が訪米した\",\n  \"entities\": [\n    {\n      \"text\": \"安倍\",\n      \"type\": \"Person\",\n      \"score\": 0.972231\n      \"beginOffset\": 0,\n      \"endOffset\": 2,\n    },\n    {\n      \"text\": \"米\",\n      \"type\": \"Location\",\n      \"score\": 0.941431\n      \"beginOffset\": 6,\n      \"endOffset\": 7,\n    }\n  ]\n}\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchakki-works%2Fnamaco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchakki-works%2Fnamaco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchakki-works%2Fnamaco/lists"}