From fc303c12d6a1fad300217328e81040b9600ddd3d Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 15 May 2023 08:19:09 +0000 Subject: automatic import of python-vncorenlp --- .gitignore | 1 + python-vncorenlp.spec | 1530 +++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 1532 insertions(+) create mode 100644 python-vncorenlp.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..489b55e 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/vncorenlp-1.0.3.tar.gz diff --git a/python-vncorenlp.spec b/python-vncorenlp.spec new file mode 100644 index 0000000..8f64a8d --- /dev/null +++ b/python-vncorenlp.spec @@ -0,0 +1,1530 @@ +%global _empty_manifest_terminate_build 0 +Name: python-vncorenlp +Version: 1.0.3 +Release: 1 +Summary: A Python wrapper for VnCoreNLP using a bidirectional communication channel. +License: MIT +URL: https://github.com/dnanhkhoa/python-vncorenlp +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/71/c2/96a60cf75421ecc740829fa920c617b3dd7fa6791e17554e7c6f3e7d7fca/vncorenlp-1.0.3.tar.gz +BuildArch: noarch + + +%description +# python-vncorenlp + +[![PyPI](https://img.shields.io/pypi/v/vncorenlp.svg)]() +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/vncorenlp.svg)]() + +A Python wrapper for [VnCoreNLP](https://github.com/vncorenlp/VnCoreNLP) using a bidirectional communication channel. + +## Table Of Contents + + * [Prerequisites](#prerequisites) + * [Installation](#installation) + * [Example Usage](#example-usage) + * [Use An Existing Server](#use-an-existing-server) + * [Debug](#debug) + * [Some Use Cases](#some-use-cases) + * [License](#license) + +## Prerequisites + +- 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)) +- VnCoreNLP ([Github](https://github.com/vncorenlp/VnCoreNLP) or [Download](https://github.com/vncorenlp/VnCoreNLP/archive/master.zip)) + +## Installation + +You can install this package from PyPI using [pip](http://www.pip-installer.org): + +``` +$ [sudo] pip install vncorenlp +``` + +For Windows users, please ensure that you run the `Command Prompt` with **admin** privileges. + +## Example Usage + +A simple example of how to use `vncorenlp`: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + + +def simple_usage(): + # Uncomment this line for debugging + # logging.basicConfig(level=logging.DEBUG) + + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + with VnCoreNLP(vncorenlp_file) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +And here is the output: + +``` +Tokenizing: +[ + ['VTV', 'đồng_ý', 'chia_sẻ', 'bản_quyền', 'World_Cup', '2018', 'cho', 'HTV', 'để', 'khai_thác', '.'], + ['Nhưng', 'cả', 'hai', 'nhà', 'đài', 'đều', 'phải', 'chờ', 'sự', 'đồng_ý', 'của', 'FIFA', 'mới', 'thực_hiện', 'được', 'điều', 'này', '.'] +] + + +POS Tagging: +[ + [('VTV', 'Ny'), ('đồng_ý', 'V'), ('chia_sẻ', 'V'), ('bản_quyền', 'N'), ('World_Cup', 'N'), ('2018', 'M'), ('cho', 'E'), ('HTV', 'Ny'), ('để', 'E'), ('khai_thác', 'V'), ('.', 'CH')], + [('Nhưng', 'C'), ('cả', 'P'), ('hai', 'M'), ('nhà', 'N'), ('đài', 'N'), ('đều', 'R'), ('phải', 'V'), ('chờ', 'V'), ('sự', 'Nc'), ('đồng_ý', 'V'), ('của', 'E'), ('FIFA', 'Np'), ('mới', 'R'), ('thực_hiện', 'V'), ('được', 'R'), ('điều', 'N'), ('này', 'P'), ('.', 'CH')] +] + + +Named-Entity Recognizing: +[ + [('VTV', 'O'), ('đồng_ý', 'O'), ('chia_sẻ', 'O'), ('bản_quyền', 'O'), ('World_Cup', 'O'), ('2018', 'O'), ('cho', 'O'), ('HTV', 'O'), ('để', 'O'), ('khai_thác', 'O'), ('.', 'O')], + [('Nhưng', 'O'), ('cả', 'O'), ('hai', 'O'), ('nhà', 'O'), ('đài', 'O'), ('đều', 'O'), ('phải', 'O'), ('chờ', 'O'), ('sự', 'O'), ('đồng_ý', 'O'), ('của', 'O'), ('FIFA', 'B-ORG'), ('mới', 'O'), ('thực_hiện', 'O'), ('được', 'O'), ('điều', 'O'), ('này', 'O'), ('.', 'O')] +] + + +Dependency Parsing: +[ + [('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)], + [('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)] +] + + +Annotating: +{ + "sentences": [ + [ + { + "index": 1, + "form": "VTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 2, + "depLabel": "sub" + }, + { + "index": 2, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 3, + "form": "chia_sẻ", + "posTag": "V", + "nerLabel": "O", + "head": 2, + "depLabel": "vmod" + }, + { + "index": 4, + "form": "bản_quyền", + "posTag": "N", + "nerLabel": "O", + "head": 3, + "depLabel": "dob" + }, + { + "index": 5, + "form": "World_Cup", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "2018", + "posTag": "M", + "nerLabel": "O", + "head": 5, + "depLabel": "det" + }, + { + "index": 7, + "form": "cho", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "iob" + }, + { + "index": 8, + "form": "HTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 7, + "depLabel": "pob" + }, + { + "index": 9, + "form": "để", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "prp" + }, + { + "index": 10, + "form": "khai_thác", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "vmod" + }, + { + "index": 11, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 2, + "depLabel": "punct" + } + ], + [ + { + "index": 1, + "form": "Nhưng", + "posTag": "C", + "nerLabel": "O", + "head": 7, + "depLabel": "dep" + }, + { + "index": 2, + "form": "cả", + "posTag": "P", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 3, + "form": "hai", + "posTag": "M", + "nerLabel": "O", + "head": 4, + "depLabel": "det" + }, + { + "index": 4, + "form": "nhà", + "posTag": "N", + "nerLabel": "O", + "head": 7, + "depLabel": "sub" + }, + { + "index": 5, + "form": "đài", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "đều", + "posTag": "R", + "nerLabel": "O", + "head": 7, + "depLabel": "adv" + }, + { + "index": 7, + "form": "phải", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 8, + "form": "chờ", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 9, + "form": "sự", + "posTag": "Nc", + "nerLabel": "O", + "head": 8, + "depLabel": "dob" + }, + { + "index": 10, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 11, + "form": "của", + "posTag": "E", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 12, + "form": "FIFA", + "posTag": "Np", + "nerLabel": "B-ORG", + "head": 11, + "depLabel": "pob" + }, + { + "index": 13, + "form": "mới", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 14, + "form": "thực_hiện", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 15, + "form": "được", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 16, + "form": "điều", + "posTag": "N", + "nerLabel": "O", + "head": 14, + "depLabel": "dob" + }, + { + "index": 17, + "form": "này", + "posTag": "P", + "nerLabel": "O", + "head": 16, + "depLabel": "det" + }, + { + "index": 18, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 7, + "depLabel": "punct" + } + ] + ] +} + + +Language: vi +``` + +## Use An Existing Server + +First, you need to start the VnCoreNLPServer using this command: + +``` +$ vncorenlp -Xmx2g -p 9000 -a "wseg,pos,ner,parse" +``` + +The parameter `-Xmx2g` means that the VM can allocate a maximum of 2 GB for the Heap Space. + +And then connect to the server using this code: + +```python +# Use the existing server +with VnCoreNLP(address='http://127.0.0.1', port=9000) as vncorenlp: + ... +``` + +## Debug + +There are 3 ways to enable debugging: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging +import sys + +from vncorenlp import VnCoreNLP + + +# 1. Use the global logger +# logging.basicConfig(level=logging.DEBUG) + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 2. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + with vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 3. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +## Some Use Cases + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + +logging.basicConfig(level=logging.DEBUG) + + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use only word segmentation + with VnCoreNLP(vncorenlp_file, annotators="wseg") as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # Specify the maximum heap size + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g') as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # For debugging + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g', quiet=False) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + +if __name__ == '__main__': + simple_usage() +``` + +## License + +MIT + + +%package -n python3-vncorenlp +Summary: A Python wrapper for VnCoreNLP using a bidirectional communication channel. +Provides: python-vncorenlp +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-vncorenlp +# python-vncorenlp + +[![PyPI](https://img.shields.io/pypi/v/vncorenlp.svg)]() +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/vncorenlp.svg)]() + +A Python wrapper for [VnCoreNLP](https://github.com/vncorenlp/VnCoreNLP) using a bidirectional communication channel. + +## Table Of Contents + + * [Prerequisites](#prerequisites) + * [Installation](#installation) + * [Example Usage](#example-usage) + * [Use An Existing Server](#use-an-existing-server) + * [Debug](#debug) + * [Some Use Cases](#some-use-cases) + * [License](#license) + +## Prerequisites + +- 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)) +- VnCoreNLP ([Github](https://github.com/vncorenlp/VnCoreNLP) or [Download](https://github.com/vncorenlp/VnCoreNLP/archive/master.zip)) + +## Installation + +You can install this package from PyPI using [pip](http://www.pip-installer.org): + +``` +$ [sudo] pip install vncorenlp +``` + +For Windows users, please ensure that you run the `Command Prompt` with **admin** privileges. + +## Example Usage + +A simple example of how to use `vncorenlp`: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + + +def simple_usage(): + # Uncomment this line for debugging + # logging.basicConfig(level=logging.DEBUG) + + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + with VnCoreNLP(vncorenlp_file) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +And here is the output: + +``` +Tokenizing: +[ + ['VTV', 'đồng_ý', 'chia_sẻ', 'bản_quyền', 'World_Cup', '2018', 'cho', 'HTV', 'để', 'khai_thác', '.'], + ['Nhưng', 'cả', 'hai', 'nhà', 'đài', 'đều', 'phải', 'chờ', 'sự', 'đồng_ý', 'của', 'FIFA', 'mới', 'thực_hiện', 'được', 'điều', 'này', '.'] +] + + +POS Tagging: +[ + [('VTV', 'Ny'), ('đồng_ý', 'V'), ('chia_sẻ', 'V'), ('bản_quyền', 'N'), ('World_Cup', 'N'), ('2018', 'M'), ('cho', 'E'), ('HTV', 'Ny'), ('để', 'E'), ('khai_thác', 'V'), ('.', 'CH')], + [('Nhưng', 'C'), ('cả', 'P'), ('hai', 'M'), ('nhà', 'N'), ('đài', 'N'), ('đều', 'R'), ('phải', 'V'), ('chờ', 'V'), ('sự', 'Nc'), ('đồng_ý', 'V'), ('của', 'E'), ('FIFA', 'Np'), ('mới', 'R'), ('thực_hiện', 'V'), ('được', 'R'), ('điều', 'N'), ('này', 'P'), ('.', 'CH')] +] + + +Named-Entity Recognizing: +[ + [('VTV', 'O'), ('đồng_ý', 'O'), ('chia_sẻ', 'O'), ('bản_quyền', 'O'), ('World_Cup', 'O'), ('2018', 'O'), ('cho', 'O'), ('HTV', 'O'), ('để', 'O'), ('khai_thác', 'O'), ('.', 'O')], + [('Nhưng', 'O'), ('cả', 'O'), ('hai', 'O'), ('nhà', 'O'), ('đài', 'O'), ('đều', 'O'), ('phải', 'O'), ('chờ', 'O'), ('sự', 'O'), ('đồng_ý', 'O'), ('của', 'O'), ('FIFA', 'B-ORG'), ('mới', 'O'), ('thực_hiện', 'O'), ('được', 'O'), ('điều', 'O'), ('này', 'O'), ('.', 'O')] +] + + +Dependency Parsing: +[ + [('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)], + [('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)] +] + + +Annotating: +{ + "sentences": [ + [ + { + "index": 1, + "form": "VTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 2, + "depLabel": "sub" + }, + { + "index": 2, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 3, + "form": "chia_sẻ", + "posTag": "V", + "nerLabel": "O", + "head": 2, + "depLabel": "vmod" + }, + { + "index": 4, + "form": "bản_quyền", + "posTag": "N", + "nerLabel": "O", + "head": 3, + "depLabel": "dob" + }, + { + "index": 5, + "form": "World_Cup", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "2018", + "posTag": "M", + "nerLabel": "O", + "head": 5, + "depLabel": "det" + }, + { + "index": 7, + "form": "cho", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "iob" + }, + { + "index": 8, + "form": "HTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 7, + "depLabel": "pob" + }, + { + "index": 9, + "form": "để", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "prp" + }, + { + "index": 10, + "form": "khai_thác", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "vmod" + }, + { + "index": 11, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 2, + "depLabel": "punct" + } + ], + [ + { + "index": 1, + "form": "Nhưng", + "posTag": "C", + "nerLabel": "O", + "head": 7, + "depLabel": "dep" + }, + { + "index": 2, + "form": "cả", + "posTag": "P", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 3, + "form": "hai", + "posTag": "M", + "nerLabel": "O", + "head": 4, + "depLabel": "det" + }, + { + "index": 4, + "form": "nhà", + "posTag": "N", + "nerLabel": "O", + "head": 7, + "depLabel": "sub" + }, + { + "index": 5, + "form": "đài", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "đều", + "posTag": "R", + "nerLabel": "O", + "head": 7, + "depLabel": "adv" + }, + { + "index": 7, + "form": "phải", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 8, + "form": "chờ", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 9, + "form": "sự", + "posTag": "Nc", + "nerLabel": "O", + "head": 8, + "depLabel": "dob" + }, + { + "index": 10, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 11, + "form": "của", + "posTag": "E", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 12, + "form": "FIFA", + "posTag": "Np", + "nerLabel": "B-ORG", + "head": 11, + "depLabel": "pob" + }, + { + "index": 13, + "form": "mới", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 14, + "form": "thực_hiện", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 15, + "form": "được", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 16, + "form": "điều", + "posTag": "N", + "nerLabel": "O", + "head": 14, + "depLabel": "dob" + }, + { + "index": 17, + "form": "này", + "posTag": "P", + "nerLabel": "O", + "head": 16, + "depLabel": "det" + }, + { + "index": 18, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 7, + "depLabel": "punct" + } + ] + ] +} + + +Language: vi +``` + +## Use An Existing Server + +First, you need to start the VnCoreNLPServer using this command: + +``` +$ vncorenlp -Xmx2g -p 9000 -a "wseg,pos,ner,parse" +``` + +The parameter `-Xmx2g` means that the VM can allocate a maximum of 2 GB for the Heap Space. + +And then connect to the server using this code: + +```python +# Use the existing server +with VnCoreNLP(address='http://127.0.0.1', port=9000) as vncorenlp: + ... +``` + +## Debug + +There are 3 ways to enable debugging: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging +import sys + +from vncorenlp import VnCoreNLP + + +# 1. Use the global logger +# logging.basicConfig(level=logging.DEBUG) + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 2. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + with vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 3. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +## Some Use Cases + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + +logging.basicConfig(level=logging.DEBUG) + + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use only word segmentation + with VnCoreNLP(vncorenlp_file, annotators="wseg") as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # Specify the maximum heap size + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g') as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # For debugging + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g', quiet=False) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + +if __name__ == '__main__': + simple_usage() +``` + +## License + +MIT + + +%package help +Summary: Development documents and examples for vncorenlp +Provides: python3-vncorenlp-doc +%description help +# python-vncorenlp + +[![PyPI](https://img.shields.io/pypi/v/vncorenlp.svg)]() +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/vncorenlp.svg)]() + +A Python wrapper for [VnCoreNLP](https://github.com/vncorenlp/VnCoreNLP) using a bidirectional communication channel. + +## Table Of Contents + + * [Prerequisites](#prerequisites) + * [Installation](#installation) + * [Example Usage](#example-usage) + * [Use An Existing Server](#use-an-existing-server) + * [Debug](#debug) + * [Some Use Cases](#some-use-cases) + * [License](#license) + +## Prerequisites + +- 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)) +- VnCoreNLP ([Github](https://github.com/vncorenlp/VnCoreNLP) or [Download](https://github.com/vncorenlp/VnCoreNLP/archive/master.zip)) + +## Installation + +You can install this package from PyPI using [pip](http://www.pip-installer.org): + +``` +$ [sudo] pip install vncorenlp +``` + +For Windows users, please ensure that you run the `Command Prompt` with **admin** privileges. + +## Example Usage + +A simple example of how to use `vncorenlp`: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + + +def simple_usage(): + # Uncomment this line for debugging + # logging.basicConfig(level=logging.DEBUG) + + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + with VnCoreNLP(vncorenlp_file) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +And here is the output: + +``` +Tokenizing: +[ + ['VTV', 'đồng_ý', 'chia_sẻ', 'bản_quyền', 'World_Cup', '2018', 'cho', 'HTV', 'để', 'khai_thác', '.'], + ['Nhưng', 'cả', 'hai', 'nhà', 'đài', 'đều', 'phải', 'chờ', 'sự', 'đồng_ý', 'của', 'FIFA', 'mới', 'thực_hiện', 'được', 'điều', 'này', '.'] +] + + +POS Tagging: +[ + [('VTV', 'Ny'), ('đồng_ý', 'V'), ('chia_sẻ', 'V'), ('bản_quyền', 'N'), ('World_Cup', 'N'), ('2018', 'M'), ('cho', 'E'), ('HTV', 'Ny'), ('để', 'E'), ('khai_thác', 'V'), ('.', 'CH')], + [('Nhưng', 'C'), ('cả', 'P'), ('hai', 'M'), ('nhà', 'N'), ('đài', 'N'), ('đều', 'R'), ('phải', 'V'), ('chờ', 'V'), ('sự', 'Nc'), ('đồng_ý', 'V'), ('của', 'E'), ('FIFA', 'Np'), ('mới', 'R'), ('thực_hiện', 'V'), ('được', 'R'), ('điều', 'N'), ('này', 'P'), ('.', 'CH')] +] + + +Named-Entity Recognizing: +[ + [('VTV', 'O'), ('đồng_ý', 'O'), ('chia_sẻ', 'O'), ('bản_quyền', 'O'), ('World_Cup', 'O'), ('2018', 'O'), ('cho', 'O'), ('HTV', 'O'), ('để', 'O'), ('khai_thác', 'O'), ('.', 'O')], + [('Nhưng', 'O'), ('cả', 'O'), ('hai', 'O'), ('nhà', 'O'), ('đài', 'O'), ('đều', 'O'), ('phải', 'O'), ('chờ', 'O'), ('sự', 'O'), ('đồng_ý', 'O'), ('của', 'O'), ('FIFA', 'B-ORG'), ('mới', 'O'), ('thực_hiện', 'O'), ('được', 'O'), ('điều', 'O'), ('này', 'O'), ('.', 'O')] +] + + +Dependency Parsing: +[ + [('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)], + [('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)] +] + + +Annotating: +{ + "sentences": [ + [ + { + "index": 1, + "form": "VTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 2, + "depLabel": "sub" + }, + { + "index": 2, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 3, + "form": "chia_sẻ", + "posTag": "V", + "nerLabel": "O", + "head": 2, + "depLabel": "vmod" + }, + { + "index": 4, + "form": "bản_quyền", + "posTag": "N", + "nerLabel": "O", + "head": 3, + "depLabel": "dob" + }, + { + "index": 5, + "form": "World_Cup", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "2018", + "posTag": "M", + "nerLabel": "O", + "head": 5, + "depLabel": "det" + }, + { + "index": 7, + "form": "cho", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "iob" + }, + { + "index": 8, + "form": "HTV", + "posTag": "Ny", + "nerLabel": "O", + "head": 7, + "depLabel": "pob" + }, + { + "index": 9, + "form": "để", + "posTag": "E", + "nerLabel": "O", + "head": 3, + "depLabel": "prp" + }, + { + "index": 10, + "form": "khai_thác", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "vmod" + }, + { + "index": 11, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 2, + "depLabel": "punct" + } + ], + [ + { + "index": 1, + "form": "Nhưng", + "posTag": "C", + "nerLabel": "O", + "head": 7, + "depLabel": "dep" + }, + { + "index": 2, + "form": "cả", + "posTag": "P", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 3, + "form": "hai", + "posTag": "M", + "nerLabel": "O", + "head": 4, + "depLabel": "det" + }, + { + "index": 4, + "form": "nhà", + "posTag": "N", + "nerLabel": "O", + "head": 7, + "depLabel": "sub" + }, + { + "index": 5, + "form": "đài", + "posTag": "N", + "nerLabel": "O", + "head": 4, + "depLabel": "nmod" + }, + { + "index": 6, + "form": "đều", + "posTag": "R", + "nerLabel": "O", + "head": 7, + "depLabel": "adv" + }, + { + "index": 7, + "form": "phải", + "posTag": "V", + "nerLabel": "O", + "head": 0, + "depLabel": "root" + }, + { + "index": 8, + "form": "chờ", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 9, + "form": "sự", + "posTag": "Nc", + "nerLabel": "O", + "head": 8, + "depLabel": "dob" + }, + { + "index": 10, + "form": "đồng_ý", + "posTag": "V", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 11, + "form": "của", + "posTag": "E", + "nerLabel": "O", + "head": 9, + "depLabel": "nmod" + }, + { + "index": 12, + "form": "FIFA", + "posTag": "Np", + "nerLabel": "B-ORG", + "head": 11, + "depLabel": "pob" + }, + { + "index": 13, + "form": "mới", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 14, + "form": "thực_hiện", + "posTag": "V", + "nerLabel": "O", + "head": 7, + "depLabel": "vmod" + }, + { + "index": 15, + "form": "được", + "posTag": "R", + "nerLabel": "O", + "head": 14, + "depLabel": "adv" + }, + { + "index": 16, + "form": "điều", + "posTag": "N", + "nerLabel": "O", + "head": 14, + "depLabel": "dob" + }, + { + "index": 17, + "form": "này", + "posTag": "P", + "nerLabel": "O", + "head": 16, + "depLabel": "det" + }, + { + "index": 18, + "form": ".", + "posTag": "CH", + "nerLabel": "O", + "head": 7, + "depLabel": "punct" + } + ] + ] +} + + +Language: vi +``` + +## Use An Existing Server + +First, you need to start the VnCoreNLPServer using this command: + +``` +$ vncorenlp -Xmx2g -p 9000 -a "wseg,pos,ner,parse" +``` + +The parameter `-Xmx2g` means that the VM can allocate a maximum of 2 GB for the Heap Space. + +And then connect to the server using this code: + +```python +# Use the existing server +with VnCoreNLP(address='http://127.0.0.1', port=9000) as vncorenlp: + ... +``` + +## Debug + +There are 3 ways to enable debugging: + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging +import sys + +from vncorenlp import VnCoreNLP + + +# 1. Use the global logger +# logging.basicConfig(level=logging.DEBUG) + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use "with ... as" to close the server automatically + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 2. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + with vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # In this way, you have to close the server manually by calling close function + vncorenlp = VnCoreNLP(vncorenlp_file) + + # 3. Set up the local logger here + logger = vncorenlp.logger + logger.setLevel(logging.DEBUG) + # Add stdout + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(logging.DEBUG) + # Add formatter + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + print('Tokenizing:', vncorenlp.tokenize(sentences)) + print('POS Tagging:', vncorenlp.pos_tag(sentences)) + print('Named-Entity Recognizing:', vncorenlp.ner(sentences)) + print('Dependency Parsing:', vncorenlp.dep_parse(sentences)) + print('Annotating:', vncorenlp.annotate(sentences)) + print('Language:', vncorenlp.detect_language(sentences)) + + # Do not forget to close the server + vncorenlp.close() + + +if __name__ == '__main__': + simple_usage() +``` + +## Some Use Cases + +```python +#!/usr/bin/python +# -*- coding: utf-8 -*- +import logging + +from vncorenlp import VnCoreNLP + +logging.basicConfig(level=logging.DEBUG) + + +def simple_usage(): + vncorenlp_file = r'.../VnCoreNLP-1.0.1/VnCoreNLP-1.0.1.jar' + + sentences = 'VTV đồng ý chia sẻ bản quyền World Cup 2018 cho HTV để khai thác. ' \ + 'Nhưng cả hai nhà đài đều phải chờ sự đồng ý của FIFA mới thực hiện được điều này.' + + # Use only word segmentation + with VnCoreNLP(vncorenlp_file, annotators="wseg") as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # Specify the maximum heap size + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g') as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + # For debugging + with VnCoreNLP(vncorenlp_file, annotators="wseg", max_heap_size='-Xmx4g', quiet=False) as vncorenlp: + print('Tokenizing:', vncorenlp.tokenize(sentences)) + + +if __name__ == '__main__': + simple_usage() +``` + +## License + +MIT + + +%prep +%autosetup -n vncorenlp-1.0.3 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-vncorenlp -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot - 1.0.3-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..b5bf1ca --- /dev/null +++ b/sources @@ -0,0 +1 @@ +0e41711b4170458d8f6e9d8c42100250 vncorenlp-1.0.3.tar.gz -- cgit v1.2.3