Skip to main content

No project description provided

Project description

jagger-python

Python binding for Jagger(C++ implementation of Pattern-based Japanese Morphological Analyzer) : https://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jagger/index.en.html

Install

$ python -m pip install jagger

This does not install model files.

You can download precompiled KWDLC model from https://github.com/lighttransport/jagger-python/releases/download/v0.1.0/model_kwdlc.tar.gz (Note that KWDLC has unclear license/TermOfUse. Use it at your own risk)

Example

import jagger

model_path = "model/kwdlc/patterns"

tokenizer = jagger.Jagger()
tokenizer.load_model(model_path)

text = "吾輩は猫である。名前はまだない。"
toks = tokenizer.tokenize(text)

for tok in toks:
    print(tok.surface(), tok.feature())
print("EOS")

"""
吾輩    名詞,普通名詞,*,*,吾輩,わがはい,代表表記:我が輩/わがはい カテゴリ:人
は      助詞,副助詞,*,*,は,は,*
猫      名詞,普通名詞,*,*,猫,ねこ,*
である  判定詞,*,判定詞,デアル列基本形,だ,である,*
。      特殊,句点,*,*,。,。,*
名前    名詞,普通名詞,*,*,名前,なまえ,*
は      助詞,副助詞,*,*,は,は,*
まだ    副詞,*,*,*,まだ,まだ,*
ない    形容詞,*,イ形容詞アウオ段,基本形,ない,ない,*
。      特殊,句点,*,*,。,。,*
EOS
"""

# print tags
for tok in toks:
    # print tag(split feature() by comma)
    print(tok.surface())
    for i in range(tok.n_tags()):
        print("  tag[{}] = {}".format(i, tok.tag(i)))
print("EOS")

Batch processing(experimental)

tokenize_batch tokenizes multiple lines(delimited by newline('\n', '\r', or '\r\n')) at once. Splitting lines is done in C++ side.

import jagger

model_path = "model/kwdlc/patterns"

tokenizer = jagger.Jagger()
tokenizer.load_model(model_path)

text = """
吾輩は猫である。
名前はまだない。
明日の天気は晴れです。
"""

# optional: set C++ threads(CPU cores) to use
# default: Use all CPU cores.
# tokenizer.set_threads(4)

toks_list = tokenizer.tokenize_batch(text)

for toks in toks_list:
    for tok in toks:
        print(tok.surface(), tok.feature())

Train a model.

Pyhthon interface for training a model is not provided yet. For a while, you can build C++ trainer cli using CMake(Windows supported). See train/ for details.

Limitation

Single line string must be less than 262,144 bytes(~= 87,000 UTF-8 Japanese chars).

Jagger version

Jagger version used in this Python binding is

2023-02-18

For developer

Edit dev_mode=True in to enable asan + debug build

Run python script with

$ LD_PRELOAD=$(gcc -print-file-name=libasan.so) python FILE.py

or

$ LD_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so) python FILE.py

Releasing

Version is created automatically using setuptools_scm.

  • tag it: git tag vX.Y.Z
  • push tag: git push --tags

TODO

  • Provide a model file trained from Wikipedia, UniDic, etc(clearer & permissive licencing&TermOfUse).
    • Use GiNZA for morphological analysis.
  • Split feature vector(CSV) considering quote char when extracting tags.
    • e.g. 'a,b,"c,d",e' => ["a", "b", "c,d", "e"]
  • Optimize C++ <-> Python interface

License

Python binding is available under 2-clause BSD licence.

Jagger and ccedar_core.h is licensed under GPLv2/LGPLv2.1/BSD triple licenses.

Third party licences

  • stack_container.h: BSD like license.
  • nanocsv.h MIT license.

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

jagger-0.1.20.tar.gz (606.7 kB view hashes)

Uploaded Source

Built Distributions

jagger-0.1.20-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (177.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

jagger-0.1.20-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (177.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

jagger-0.1.20-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (177.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

jagger-0.1.20-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (178.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp312-cp312-win_arm64.whl (141.8 kB view hashes)

Uploaded CPython 3.12 Windows ARM64

jagger-0.1.20-cp312-cp312-win_amd64.whl (146.9 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

jagger-0.1.20-cp312-cp312-win32.whl (133.4 kB view hashes)

Uploaded CPython 3.12 Windows x86

jagger-0.1.20-cp312-cp312-musllinux_1_1_x86_64.whl (707.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp312-cp312-musllinux_1_1_i686.whl (767.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

jagger-0.1.20-cp312-cp312-musllinux_1_1_aarch64.whl (692.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (191.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

jagger-0.1.20-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (199.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

jagger-0.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (185.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp312-cp312-macosx_11_0_arm64.whl (151.6 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

jagger-0.1.20-cp312-cp312-macosx_10_9_x86_64.whl (157.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

jagger-0.1.20-cp312-cp312-macosx_10_9_universal2.whl (266.4 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

jagger-0.1.20-cp311-cp311-win_arm64.whl (143.6 kB view hashes)

Uploaded CPython 3.11 Windows ARM64

jagger-0.1.20-cp311-cp311-win_amd64.whl (147.7 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

jagger-0.1.20-cp311-cp311-win32.whl (134.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

jagger-0.1.20-cp311-cp311-musllinux_1_1_x86_64.whl (708.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp311-cp311-musllinux_1_1_i686.whl (768.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

jagger-0.1.20-cp311-cp311-musllinux_1_1_aarch64.whl (693.9 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (191.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

jagger-0.1.20-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (199.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

jagger-0.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (186.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp311-cp311-macosx_11_0_arm64.whl (153.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

jagger-0.1.20-cp311-cp311-macosx_10_9_x86_64.whl (159.7 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

jagger-0.1.20-cp311-cp311-macosx_10_9_universal2.whl (270.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

jagger-0.1.20-cp310-cp310-win_arm64.whl (143.1 kB view hashes)

Uploaded CPython 3.10 Windows ARM64

jagger-0.1.20-cp310-cp310-win_amd64.whl (146.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

jagger-0.1.20-cp310-cp310-win32.whl (134.2 kB view hashes)

Uploaded CPython 3.10 Windows x86

jagger-0.1.20-cp310-cp310-musllinux_1_1_x86_64.whl (707.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp310-cp310-musllinux_1_1_i686.whl (767.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

jagger-0.1.20-cp310-cp310-musllinux_1_1_aarch64.whl (692.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (190.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

jagger-0.1.20-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (198.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

jagger-0.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (184.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp310-cp310-macosx_11_0_arm64.whl (152.5 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

jagger-0.1.20-cp310-cp310-macosx_10_9_x86_64.whl (158.1 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

jagger-0.1.20-cp310-cp310-macosx_10_9_universal2.whl (267.8 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

jagger-0.1.20-cp39-cp39-win_arm64.whl (142.9 kB view hashes)

Uploaded CPython 3.9 Windows ARM64

jagger-0.1.20-cp39-cp39-win_amd64.whl (146.9 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

jagger-0.1.20-cp39-cp39-win32.whl (134.3 kB view hashes)

Uploaded CPython 3.9 Windows x86

jagger-0.1.20-cp39-cp39-musllinux_1_1_x86_64.whl (707.4 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp39-cp39-musllinux_1_1_i686.whl (767.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

jagger-0.1.20-cp39-cp39-musllinux_1_1_aarch64.whl (693.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (190.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

jagger-0.1.20-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (198.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

jagger-0.1.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (185.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp39-cp39-macosx_11_0_arm64.whl (152.7 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

jagger-0.1.20-cp39-cp39-macosx_10_9_x86_64.whl (158.2 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

jagger-0.1.20-cp39-cp39-macosx_10_9_universal2.whl (268.1 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

jagger-0.1.20-cp38-cp38-win_amd64.whl (146.5 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

jagger-0.1.20-cp38-cp38-win32.whl (134.1 kB view hashes)

Uploaded CPython 3.8 Windows x86

jagger-0.1.20-cp38-cp38-musllinux_1_1_x86_64.whl (707.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp38-cp38-musllinux_1_1_i686.whl (767.6 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

jagger-0.1.20-cp38-cp38-musllinux_1_1_aarch64.whl (692.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (190.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

jagger-0.1.20-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (198.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

jagger-0.1.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (184.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp38-cp38-macosx_11_0_arm64.whl (152.4 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

jagger-0.1.20-cp38-cp38-macosx_10_9_x86_64.whl (158.0 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

jagger-0.1.20-cp38-cp38-macosx_10_9_universal2.whl (267.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

jagger-0.1.20-cp37-cp37m-win_amd64.whl (147.5 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

jagger-0.1.20-cp37-cp37m-win32.whl (134.7 kB view hashes)

Uploaded CPython 3.7m Windows x86

jagger-0.1.20-cp37-cp37m-musllinux_1_1_x86_64.whl (710.7 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp37-cp37m-musllinux_1_1_i686.whl (771.0 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

jagger-0.1.20-cp37-cp37m-musllinux_1_1_aarch64.whl (696.1 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (191.7 kB view hashes)

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

jagger-0.1.20-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (201.7 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

jagger-0.1.20-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (188.6 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp37-cp37m-macosx_10_9_x86_64.whl (157.3 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

jagger-0.1.20-cp36-cp36m-win_amd64.whl (113.5 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

jagger-0.1.20-cp36-cp36m-win32.whl (99.7 kB view hashes)

Uploaded CPython 3.6m Windows x86

jagger-0.1.20-cp36-cp36m-musllinux_1_1_x86_64.whl (673.2 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

jagger-0.1.20-cp36-cp36m-musllinux_1_1_i686.whl (733.3 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

jagger-0.1.20-cp36-cp36m-musllinux_1_1_aarch64.whl (658.7 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ ARM64

jagger-0.1.20-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (154.2 kB view hashes)

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

jagger-0.1.20-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (164.2 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

jagger-0.1.20-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (151.0 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

jagger-0.1.20-cp36-cp36m-macosx_10_9_x86_64.whl (119.6 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ 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