{ "info": { "author": "Khoa Duong", "author_email": "dnanhkhoa@live.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Text Processing :: Linguistic" ], "description": "# python-vncorenlp\r\n\r\n[![PyPI](https://img.shields.io/pypi/v/vncorenlp.svg)]()\r\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/vncorenlp.svg)]()\r\n\r\nA Python wrapper for [VnCoreNLP](https://github.com/vncorenlp/VnCoreNLP) using a bidirectional communication channel.\r\n\r\n## Table Of Contents\r\n\r\n * [Prerequisites](#prerequisites)\r\n * [Installation](#installation)\r\n * [Example Usage](#example-usage)\r\n * [Use An Existing Server](#use-an-existing-server)\r\n * [Debug](#debug)\r\n * [Some Use Cases](#some-use-cases)\r\n * [License](#license)\r\n\r\n## Prerequisites\r\n\r\n- Java 1.8+ ([JRE](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) or [JDK](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html))\r\n- VnCoreNLP ([Github](https://github.com/vncorenlp/VnCoreNLP) or [Download](https://github.com/vncorenlp/VnCoreNLP/archive/master.zip))\r\n\r\n## Installation\r\n\r\nYou can install this package from PyPI using [pip](http://www.pip-installer.org):\r\n\r\n```\r\n$ [sudo] pip install vncorenlp\r\n```\r\n\r\nFor Windows users, please ensure that you run the `Command Prompt` with **admin** privileges.\r\n\r\n## Example Usage\r\n\r\nA simple example of how to use `vncorenlp`:\r\n\r\n```python\r\n#!/usr/bin/python\r\n# -*- coding: utf-8 -*-\r\nimport logging\r\n\r\nfrom vncorenlp import VnCoreNLP\r\n\r\n\r\ndef simple_usage():\r\n # Uncomment this line for debugging\r\n # logging.basicConfig(level=logging.DEBUG)\r\n\r\n vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar'\r\n\r\n sentences = 'VTV \u0111\u1ed3ng \u00fd chia s\u1ebb b\u1ea3n quy\u1ec1n World Cup 2018 cho HTV \u0111\u1ec3 khai th\u00e1c. ' \\\r\n 'Nh\u01b0ng c\u1ea3 hai nh\u00e0 \u0111\u00e0i \u0111\u1ec1u ph\u1ea3i ch\u1edd s\u1ef1 \u0111\u1ed3ng \u00fd c\u1ee7a FIFA m\u1edbi th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y.'\r\n\r\n # Use \"with ... as\" to close the server automatically\r\n with VnCoreNLP(vncorenlp_file) as vncorenlp:\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n print('POS Tagging:', vncorenlp.pos_tag(sentences))\r\n print('Named-Entity Recognizing:', vncorenlp.ner(sentences))\r\n print('Dependency Parsing:', vncorenlp.dep_parse(sentences))\r\n print('Annotating:', vncorenlp.annotate(sentences))\r\n print('Language:', vncorenlp.detect_language(sentences))\r\n\r\n # In this way, you have to close the server manually by calling close function\r\n vncorenlp = VnCoreNLP(vncorenlp_file)\r\n\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n print('POS Tagging:', vncorenlp.pos_tag(sentences))\r\n print('Named-Entity Recognizing:', vncorenlp.ner(sentences))\r\n print('Dependency Parsing:', vncorenlp.dep_parse(sentences))\r\n print('Annotating:', vncorenlp.annotate(sentences))\r\n print('Language:', vncorenlp.detect_language(sentences))\r\n\r\n # Do not forget to close the server\r\n vncorenlp.close()\r\n\r\n\r\nif __name__ == '__main__':\r\n simple_usage()\r\n```\r\n\r\nAnd here is the output:\r\n\r\n```\r\nTokenizing:\r\n[\r\n ['VTV', '\u0111\u1ed3ng_\u00fd', 'chia_s\u1ebb', 'b\u1ea3n_quy\u1ec1n', 'World_Cup', '2018', 'cho', 'HTV', '\u0111\u1ec3', 'khai_th\u00e1c', '.'],\r\n ['Nh\u01b0ng', 'c\u1ea3', 'hai', 'nh\u00e0', '\u0111\u00e0i', '\u0111\u1ec1u', 'ph\u1ea3i', 'ch\u1edd', 's\u1ef1', '\u0111\u1ed3ng_\u00fd', 'c\u1ee7a', 'FIFA', 'm\u1edbi', 'th\u1ef1c_hi\u1ec7n', '\u0111\u01b0\u1ee3c', '\u0111i\u1ec1u', 'n\u00e0y', '.']\r\n]\r\n \r\n \r\nPOS Tagging:\r\n[\r\n [('VTV', 'Ny'), ('\u0111\u1ed3ng_\u00fd', 'V'), ('chia_s\u1ebb', 'V'), ('b\u1ea3n_quy\u1ec1n', 'N'), ('World_Cup', 'N'), ('2018', 'M'), ('cho', 'E'), ('HTV', 'Ny'), ('\u0111\u1ec3', 'E'), ('khai_th\u00e1c', 'V'), ('.', 'CH')],\r\n [('Nh\u01b0ng', 'C'), ('c\u1ea3', 'P'), ('hai', 'M'), ('nh\u00e0', 'N'), ('\u0111\u00e0i', 'N'), ('\u0111\u1ec1u', 'R'), ('ph\u1ea3i', 'V'), ('ch\u1edd', 'V'), ('s\u1ef1', 'Nc'), ('\u0111\u1ed3ng_\u00fd', 'V'), ('c\u1ee7a', 'E'), ('FIFA', 'Np'), ('m\u1edbi', 'R'), ('th\u1ef1c_hi\u1ec7n', 'V'), ('\u0111\u01b0\u1ee3c', 'R'), ('\u0111i\u1ec1u', 'N'), ('n\u00e0y', 'P'), ('.', 'CH')]\r\n]\r\n \r\n \r\nNamed-Entity Recognizing:\r\n[\r\n [('VTV', 'O'), ('\u0111\u1ed3ng_\u00fd', 'O'), ('chia_s\u1ebb', 'O'), ('b\u1ea3n_quy\u1ec1n', 'O'), ('World_Cup', 'O'), ('2018', 'O'), ('cho', 'O'), ('HTV', 'O'), ('\u0111\u1ec3', 'O'), ('khai_th\u00e1c', 'O'), ('.', 'O')],\r\n [('Nh\u01b0ng', 'O'), ('c\u1ea3', 'O'), ('hai', 'O'), ('nh\u00e0', 'O'), ('\u0111\u00e0i', 'O'), ('\u0111\u1ec1u', 'O'), ('ph\u1ea3i', 'O'), ('ch\u1edd', 'O'), ('s\u1ef1', 'O'), ('\u0111\u1ed3ng_\u00fd', 'O'), ('c\u1ee7a', 'O'), ('FIFA', 'B-ORG'), ('m\u1edbi', 'O'), ('th\u1ef1c_hi\u1ec7n', 'O'), ('\u0111\u01b0\u1ee3c', 'O'), ('\u0111i\u1ec1u', 'O'), ('n\u00e0y', 'O'), ('.', 'O')]\r\n]\r\n \r\n \r\nDependency Parsing:\r\n[\r\n [('sub', 2, 1), ('root', 0, 2), ('vmod', 2, 3), ('dob', 3, 4), ('nmod', 4, 5), ('det', 5, 6), ('iob', 3, 7), ('pob', 7, 8), ('prp', 3, 9), ('vmod', 9, 10), ('punct', 2, 11)],\r\n [('dep', 7, 1), ('nmod', 4, 2), ('det', 4, 3), ('sub', 7, 4), ('nmod', 4, 5), ('adv', 7, 6), ('root', 0, 7), ('vmod', 7, 8), ('dob', 8, 9), ('nmod', 9, 10), ('nmod', 9, 11), ('pob', 11, 12), ('adv', 14, 13), ('vmod', 7, 14), ('adv', 14, 15), ('dob', 14, 16), ('det', 16, 17), ('punct', 7, 18)]\r\n]\r\n \r\n \r\nAnnotating:\r\n{\r\n \"sentences\": [\r\n [\r\n {\r\n \"index\": 1,\r\n \"form\": \"VTV\",\r\n \"posTag\": \"Ny\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 2,\r\n \"depLabel\": \"sub\"\r\n },\r\n {\r\n \"index\": 2,\r\n \"form\": \"\u0111\u1ed3ng_\u00fd\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 0,\r\n \"depLabel\": \"root\"\r\n },\r\n {\r\n \"index\": 3,\r\n \"form\": \"chia_s\u1ebb\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 2,\r\n \"depLabel\": \"vmod\"\r\n },\r\n {\r\n \"index\": 4,\r\n \"form\": \"b\u1ea3n_quy\u1ec1n\",\r\n \"posTag\": \"N\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 3,\r\n \"depLabel\": \"dob\"\r\n },\r\n {\r\n \"index\": 5,\r\n \"form\": \"World_Cup\",\r\n \"posTag\": \"N\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 4,\r\n \"depLabel\": \"nmod\"\r\n },\r\n {\r\n \"index\": 6,\r\n \"form\": \"2018\",\r\n \"posTag\": \"M\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 5,\r\n \"depLabel\": \"det\"\r\n },\r\n {\r\n \"index\": 7,\r\n \"form\": \"cho\",\r\n \"posTag\": \"E\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 3,\r\n \"depLabel\": \"iob\"\r\n },\r\n {\r\n \"index\": 8,\r\n \"form\": \"HTV\",\r\n \"posTag\": \"Ny\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"pob\"\r\n },\r\n {\r\n \"index\": 9,\r\n \"form\": \"\u0111\u1ec3\",\r\n \"posTag\": \"E\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 3,\r\n \"depLabel\": \"prp\"\r\n },\r\n {\r\n \"index\": 10,\r\n \"form\": \"khai_th\u00e1c\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 9,\r\n \"depLabel\": \"vmod\"\r\n },\r\n {\r\n \"index\": 11,\r\n \"form\": \".\",\r\n \"posTag\": \"CH\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 2,\r\n \"depLabel\": \"punct\"\r\n }\r\n ],\r\n [\r\n {\r\n \"index\": 1,\r\n \"form\": \"Nh\u01b0ng\",\r\n \"posTag\": \"C\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"dep\"\r\n },\r\n {\r\n \"index\": 2,\r\n \"form\": \"c\u1ea3\",\r\n \"posTag\": \"P\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 4,\r\n \"depLabel\": \"nmod\"\r\n },\r\n {\r\n \"index\": 3,\r\n \"form\": \"hai\",\r\n \"posTag\": \"M\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 4,\r\n \"depLabel\": \"det\"\r\n },\r\n {\r\n \"index\": 4,\r\n \"form\": \"nh\u00e0\",\r\n \"posTag\": \"N\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"sub\"\r\n },\r\n {\r\n \"index\": 5,\r\n \"form\": \"\u0111\u00e0i\",\r\n \"posTag\": \"N\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 4,\r\n \"depLabel\": \"nmod\"\r\n },\r\n {\r\n \"index\": 6,\r\n \"form\": \"\u0111\u1ec1u\",\r\n \"posTag\": \"R\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"adv\"\r\n },\r\n {\r\n \"index\": 7,\r\n \"form\": \"ph\u1ea3i\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 0,\r\n \"depLabel\": \"root\"\r\n },\r\n {\r\n \"index\": 8,\r\n \"form\": \"ch\u1edd\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"vmod\"\r\n },\r\n {\r\n \"index\": 9,\r\n \"form\": \"s\u1ef1\",\r\n \"posTag\": \"Nc\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 8,\r\n \"depLabel\": \"dob\"\r\n },\r\n {\r\n \"index\": 10,\r\n \"form\": \"\u0111\u1ed3ng_\u00fd\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 9,\r\n \"depLabel\": \"nmod\"\r\n },\r\n {\r\n \"index\": 11,\r\n \"form\": \"c\u1ee7a\",\r\n \"posTag\": \"E\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 9,\r\n \"depLabel\": \"nmod\"\r\n },\r\n {\r\n \"index\": 12,\r\n \"form\": \"FIFA\",\r\n \"posTag\": \"Np\",\r\n \"nerLabel\": \"B-ORG\",\r\n \"head\": 11,\r\n \"depLabel\": \"pob\"\r\n },\r\n {\r\n \"index\": 13,\r\n \"form\": \"m\u1edbi\",\r\n \"posTag\": \"R\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 14,\r\n \"depLabel\": \"adv\"\r\n },\r\n {\r\n \"index\": 14,\r\n \"form\": \"th\u1ef1c_hi\u1ec7n\",\r\n \"posTag\": \"V\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"vmod\"\r\n },\r\n {\r\n \"index\": 15,\r\n \"form\": \"\u0111\u01b0\u1ee3c\",\r\n \"posTag\": \"R\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 14,\r\n \"depLabel\": \"adv\"\r\n },\r\n {\r\n \"index\": 16,\r\n \"form\": \"\u0111i\u1ec1u\",\r\n \"posTag\": \"N\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 14,\r\n \"depLabel\": \"dob\"\r\n },\r\n {\r\n \"index\": 17,\r\n \"form\": \"n\u00e0y\",\r\n \"posTag\": \"P\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 16,\r\n \"depLabel\": \"det\"\r\n },\r\n {\r\n \"index\": 18,\r\n \"form\": \".\",\r\n \"posTag\": \"CH\",\r\n \"nerLabel\": \"O\",\r\n \"head\": 7,\r\n \"depLabel\": \"punct\"\r\n }\r\n ]\r\n ]\r\n}\r\n \r\n \r\nLanguage: vi\r\n```\r\n\r\n## Use An Existing Server\r\n\r\nFirst, you need to start the VnCoreNLPServer using this command:\r\n\r\n```\r\n$ vncorenlp -Xmx2g -p 9000 -a \"wseg,pos,ner,parse\"\r\n```\r\n\r\nThe parameter `-Xmx2g` means that the VM can allocate a maximum of 2 GB for the Heap Space.\r\n\r\nAnd then connect to the server using this code:\r\n\r\n```python\r\n# Use the existing server\r\nwith VnCoreNLP(address='http://127.0.0.1', port=9000) as vncorenlp:\r\n ...\r\n```\r\n\r\n## Debug\r\n\r\nThere are 3 ways to enable debugging:\r\n\r\n```python\r\n#!/usr/bin/python\r\n# -*- coding: utf-8 -*-\r\nimport logging\r\nimport sys\r\n\r\nfrom vncorenlp import VnCoreNLP\r\n\r\n\r\n# 1. Use the global logger\r\n# logging.basicConfig(level=logging.DEBUG)\r\n\r\ndef simple_usage():\r\n vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar'\r\n\r\n sentences = 'VTV \u0111\u1ed3ng \u00fd chia s\u1ebb b\u1ea3n quy\u1ec1n World Cup 2018 cho HTV \u0111\u1ec3 khai th\u00e1c. ' \\\r\n 'Nh\u01b0ng c\u1ea3 hai nh\u00e0 \u0111\u00e0i \u0111\u1ec1u ph\u1ea3i ch\u1edd s\u1ef1 \u0111\u1ed3ng \u00fd c\u1ee7a FIFA m\u1edbi th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y.'\r\n\r\n # Use \"with ... as\" to close the server automatically\r\n vncorenlp = VnCoreNLP(vncorenlp_file)\r\n\r\n # 2. Set up the local logger here\r\n logger = vncorenlp.logger\r\n logger.setLevel(logging.DEBUG)\r\n # Add stdout\r\n ch = logging.StreamHandler(sys.stdout)\r\n ch.setLevel(logging.DEBUG)\r\n # Add formatter\r\n formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')\r\n ch.setFormatter(formatter)\r\n logger.addHandler(ch)\r\n\r\n with vncorenlp:\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n print('POS Tagging:', vncorenlp.pos_tag(sentences))\r\n print('Named-Entity Recognizing:', vncorenlp.ner(sentences))\r\n print('Dependency Parsing:', vncorenlp.dep_parse(sentences))\r\n print('Annotating:', vncorenlp.annotate(sentences))\r\n print('Language:', vncorenlp.detect_language(sentences))\r\n\r\n # In this way, you have to close the server manually by calling close function\r\n vncorenlp = VnCoreNLP(vncorenlp_file)\r\n\r\n # 3. Set up the local logger here\r\n logger = vncorenlp.logger\r\n logger.setLevel(logging.DEBUG)\r\n # Add stdout\r\n ch = logging.StreamHandler(sys.stdout)\r\n ch.setLevel(logging.DEBUG)\r\n # Add formatter\r\n formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')\r\n ch.setFormatter(formatter)\r\n logger.addHandler(ch)\r\n\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n print('POS Tagging:', vncorenlp.pos_tag(sentences))\r\n print('Named-Entity Recognizing:', vncorenlp.ner(sentences))\r\n print('Dependency Parsing:', vncorenlp.dep_parse(sentences))\r\n print('Annotating:', vncorenlp.annotate(sentences))\r\n print('Language:', vncorenlp.detect_language(sentences))\r\n\r\n # Do not forget to close the server\r\n vncorenlp.close()\r\n\r\n\r\nif __name__ == '__main__':\r\n simple_usage()\r\n```\r\n\r\n## Some Use Cases\r\n\r\n```python\r\n#!/usr/bin/python\r\n# -*- coding: utf-8 -*-\r\nimport logging\r\n\r\nfrom vncorenlp import VnCoreNLP\r\n\r\nlogging.basicConfig(level=logging.DEBUG)\r\n\r\n\r\ndef simple_usage():\r\n vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar'\r\n\r\n sentences = 'VTV \u0111\u1ed3ng \u00fd chia s\u1ebb b\u1ea3n quy\u1ec1n World Cup 2018 cho HTV \u0111\u1ec3 khai th\u00e1c. ' \\\r\n 'Nh\u01b0ng c\u1ea3 hai nh\u00e0 \u0111\u00e0i \u0111\u1ec1u ph\u1ea3i ch\u1edd s\u1ef1 \u0111\u1ed3ng \u00fd c\u1ee7a FIFA m\u1edbi th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y.'\r\n\r\n # Use only word segmentation\r\n with VnCoreNLP(vncorenlp_file, annotators=\"wseg\") as vncorenlp:\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n\r\n # Specify the maximum heap size\r\n with VnCoreNLP(vncorenlp_file, annotators=\"wseg\", max_heap_size='-Xmx4g') as vncorenlp:\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n\r\n # For debugging\r\n with VnCoreNLP(vncorenlp_file, annotators=\"wseg\", max_heap_size='-Xmx4g', quiet=False) as vncorenlp:\r\n print('Tokenizing:', vncorenlp.tokenize(sentences))\r\n\r\n\r\nif __name__ == '__main__':\r\n simple_usage()\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dnanhkhoa/python-vncorenlp", "keywords": "python-vncorenlp vncorenlp nlp vietnamese-nlp parser word-segmentation tokenizer pos-tagger named-entity-recognition ner dependency-parser", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "vncorenlp", "package_url": "https://pypi.org/project/vncorenlp/", "platform": "", "project_url": "https://pypi.org/project/vncorenlp/", "project_urls": { "Homepage": "https://github.com/dnanhkhoa/python-vncorenlp" }, "release_url": "https://pypi.org/project/vncorenlp/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "A Python wrapper for VnCoreNLP using a bidirectional communication channel.", "version": "1.0.3" }, "last_serial": 4099964, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "7f7b2b82e508b581598fac2b4a466349", "sha256": "c2b0fe891a4cc94320539dcc662b27bb0e65be0888cdbd5efc49cc42a642bd3e" }, "downloads": -1, "filename": "vncorenlp-1.0.2.tar.gz", "has_sig": false, "md5_digest": "7f7b2b82e508b581598fac2b4a466349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2648391, "upload_time": "2018-06-09T20:24:48", "url": "https://files.pythonhosted.org/packages/89/7d/368dfc9a9fc031a05827402af835ca95fb18693204f9cc630d49d4dcc6b8/vncorenlp-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "0e41711b4170458d8f6e9d8c42100250", "sha256": "c307c7ff108d2a74436d877246f237300ce465b52d7556c00e3d47d01bff1f1d" }, "downloads": -1, "filename": "vncorenlp-1.0.3.tar.gz", "has_sig": false, "md5_digest": "0e41711b4170458d8f6e9d8c42100250", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2648781, "upload_time": "2018-07-25T09:29:08", "url": "https://files.pythonhosted.org/packages/71/c2/96a60cf75421ecc740829fa920c617b3dd7fa6791e17554e7c6f3e7d7fca/vncorenlp-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0e41711b4170458d8f6e9d8c42100250", "sha256": "c307c7ff108d2a74436d877246f237300ce465b52d7556c00e3d47d01bff1f1d" }, "downloads": -1, "filename": "vncorenlp-1.0.3.tar.gz", "has_sig": false, "md5_digest": "0e41711b4170458d8f6e9d8c42100250", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2648781, "upload_time": "2018-07-25T09:29:08", "url": "https://files.pythonhosted.org/packages/71/c2/96a60cf75421ecc740829fa920c617b3dd7fa6791e17554e7c6f3e7d7fca/vncorenlp-1.0.3.tar.gz" } ] }