Skip to main content

Python binding for nlpO3 Thai language processing library in Rust

Project description

pypi Python 3.6 License Downloads

nlpO3 Python binding

Python binding for nlpO3, a Thai natural language processing library in Rust.

Features

  • Thai word tokenizer
    • segment() - use maximal-matching dictionary-based tokenization algorithm and honor Thai Character Cluster boundaries
      • 2.5x faster than similar pure Python implementation (PyThaiNLP's newmm)
    • load_dict() - load a dictionary from plain text file (one word per line)

Dictionary file

  • For the interest of library size, nlpO3 does not assume what dictionary the developer would like to use. It does not come with a dictionary. A dictionary is needed for the dictionary-based word tokenizer.
  • For tokenization dictionary, try

Install

pip install nlpo3

Usage

Load file path/to/dict.file to memory and assign a name dict_name to it. Then tokenize a text with the dict_name dictionary:

from nlpo3 import load_dict, segment

load_dict("path/to/dict.file", "custom_dict")
segment("สวัสดีครับ", "dict_name")

it will return a list of strings:

['สวัสดี', 'ครับ']

(result depends on words included in the dictionary)

Use multithread mode, also use the dict_name dictionary:

segment("สวัสดีครับ", dict_name="dict_name", parallel=True)

Use safe mode to avoid long waiting time in some edge cases for text with lots of ambiguous word boundaries:

segment("สวัสดีครับ", dict_name="dict_name", safe=True)

Build

Requirements

  • Rust 2018 Edition
  • Python 3.6 or newer
  • Python Development Headers
    • Ubuntu: sudo apt-get install python3-dev
    • macOS: No action needed
  • PyO3 - already included in Cargo.toml
  • setuptools-rust

Steps

python -m pip install --upgrade build
python -m build

This should generate a wheel file, in dist/ directory, which can be installed by pip.

Issues

Please report issues at https://github.com/PyThaiNLP/nlpo3/issues

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nlpo3-1.3.0.tar.gz (16.0 kB view hashes)

Uploaded Source

Built Distributions

nlpo3-1.3.0-cp310-cp310-win_amd64.whl (552.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

nlpo3-1.3.0-cp310-cp310-win32.whl (501.2 kB view hashes)

Uploaded CPython 3.10 Windows x86

nlpo3-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

nlpo3-1.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

nlpo3-1.3.0-cp310-cp310-macosx_12_0_arm64.whl (691.3 kB view hashes)

Uploaded CPython 3.10 macOS 12.0+ ARM64

nlpo3-1.3.0-cp310-cp310-macosx_10_13_x86_64.whl (718.6 kB view hashes)

Uploaded CPython 3.10 macOS 10.13+ x86-64

nlpo3-1.3.0-cp39-cp39-win_amd64.whl (552.6 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

nlpo3-1.3.0-cp39-cp39-win32.whl (501.2 kB view hashes)

Uploaded CPython 3.9 Windows x86

nlpo3-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

nlpo3-1.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

nlpo3-1.3.0-cp39-cp39-macosx_12_0_arm64.whl (691.4 kB view hashes)

Uploaded CPython 3.9 macOS 12.0+ ARM64

nlpo3-1.3.0-cp39-cp39-macosx_10_13_x86_64.whl (718.6 kB view hashes)

Uploaded CPython 3.9 macOS 10.13+ x86-64

nlpo3-1.3.0-cp38-cp38-win_amd64.whl (552.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

nlpo3-1.3.0-cp38-cp38-win32.whl (501.1 kB view hashes)

Uploaded CPython 3.8 Windows x86

nlpo3-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

nlpo3-1.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

nlpo3-1.3.0-cp38-cp38-macosx_12_0_arm64.whl (691.5 kB view hashes)

Uploaded CPython 3.8 macOS 12.0+ ARM64

nlpo3-1.3.0-cp38-cp38-macosx_10_13_x86_64.whl (718.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.13+ x86-64

nlpo3-1.3.0-cp37-cp37m-win_amd64.whl (552.3 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

nlpo3-1.3.0-cp37-cp37m-win32.whl (501.0 kB view hashes)

Uploaded CPython 3.7m Windows x86

nlpo3-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

nlpo3-1.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

nlpo3-1.3.0-cp37-cp37m-macosx_10_13_x86_64.whl (718.6 kB view hashes)

Uploaded CPython 3.7m macOS 10.13+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page