Skip to main content

SudachiPy

PyPi version Build Status

SudachiPy is a Python version of Sudachi, a Japanese morphological analyzer.

Sudachi & SudachiPy are developed in WAP Tokushima Laboratory of AI and NLP, an institute under Works Applications that focuses on Natural Language Processing (NLP).

Warning: SudachiPy is still under development, and some of the functions are still not complete. Please use it at your own risk.

Breaking changes

v0.3.0

  • resources/ directory was moved to sudachipy/.

V0.2.2

  • Distribute SudachiPy package via PyPI
    • pip install SudachiPy

v0.2.0

  • User dictionary feature added

Easy Setup

SudachiPy requires Python3.5+.

Step 1: Install SudachiPy

SudachiPy is distributed from PyPI. You can install SudachiPy by executing pip install SudachiPy from the command line.

$ pip install SudachiPy

SudachiPy(>=v0.3.0) refers to system.dic of SudachiDict_core (not included in SudachiPy) package by default. Please proceed to Step 2 to install the dict package.

Step 2: Install SudachiDict_core

The default dict package SudachiDict_core is distributed from our download site. Run pip install like below:

$ pip install https://object-storage.tyo2.conoha.io/v1/nc_2520839e1f9641b08211a5c85243124a/sudachi/SudachiDict_core-20190718.tar.gz

Usage

As a command

After installing SudachiPy, you may also use it in the terminal via command sudachipy.

You can excute sudachipy with standard input by this way:

$ sudachipy

sudachipy has 4 subcommands (in default tokenize)

$ sudachipy tokenize -h
usage: sudachipy tokenize [-h] [-r file] [-m {A,B,C}] [-o file] [-a] [-d] [-v]
                          [file [file ...]]

Tokenize Text

positional arguments:
  file           text written in utf-8

optional arguments:
  -h, --help     show this help message and exit
  -r file        the setting file in JSON format
  -m {A,B,C}     the mode of splitting
  -o file        the output file
  -a             print all of the fields
  -d             print the debug information
  -v, --version  print sudachipy version
$ sudachipy link -h
usage: sudachipy link [-h] [-t {small,core,full}] [-u]

Link Default Dict Package

optional arguments:
  -h, --help            show this help message and exit
  -t {small,core,full}  dict dict
  -u                    unlink sudachidict
$ sudachipy build -h
usage: sudachipy build [-h] [-o file] [-d string] -m file file [file ...]

Build Sudachi Dictionary

positional arguments:
  file        source files with CSV format (one of more)

optional arguments:
  -h, --help  show this help message and exit
  -o file     output file (default: system.dic)
  -d string   description comment to be embedded on dictionary

required named arguments:
  -m file     connection matrix file with MeCab's matrix.def format
$ sudachipy ubuild -h
usage: sudachipy ubuild [-h] [-d string] [-o file] [-s file] file [file ...]

Build User Dictionary

positional arguments:
  file        source files with CSV format (one or more)

optional arguments:
  -h, --help  show this help message and exit
  -d string   description comment to be embedded on dictionary
  -o file     output file (default: user.dic)
  -s file     system dictionary (default: ${SUDACHIPY}/resouces/system.dic)

As a Python package

Here is an example usage;

from sudachipy import tokenizer
from sudachipy import dictionary


tokenizer_obj = dictionary.Dictionary().create()


# Multi-granular tokenization
# (following results are w/ `system_full.dic`
# you may not be able to replicate this particular example w/ `system_core.dic`)

mode = tokenizer.Tokenizer.SplitMode.C
[m.surface() for m in tokenizer_obj.tokenize("医薬品安全管理責任者", mode)]
# => ['医薬品安全管理責任者']

mode = tokenizer.Tokenizer.SplitMode.B
[m.surface() for m in tokenizer_obj.tokenize("医薬品安全管理責任者", mode)]
# => ['医薬品', '安全', '管理', '責任者']

mode = tokenizer.Tokenizer.SplitMode.A
[m.surface() for m in tokenizer_obj.tokenize("医薬品安全管理責任者", mode)]
# => ['医薬', '品', '安全', '管理', '責任', '者']


# Morpheme information

m = tokenizer_obj.tokenize("食べ", mode)[0]

m.surface() # => '食べ'
m.dictionary_form() # => '食べる'
m.reading_form() # => 'タベ'
m.part_of_speech() # => ['動詞', '一般', '*', '*', '下一段-バ行', '連用形-一般']


# Normalization

tokenizer_obj.tokenize("附属", mode)[0].normalized_form()
# => '付属'
tokenizer_obj.tokenize("SUMMER", mode)[0].normalized_form()
# => 'サマー'
tokenizer_obj.tokenize("シュミレーション", mode)[0].normalized_form()
# => 'シミュレーション'

Install dict packages

You can download and install the built dictionaries from Python packages · WorksApplications/SudachiDict.

$ pip install SudachiDict_full-20190531.tar.gz

You can change the default dict package by executing link command.

$ sudachipy link -t full

You can remove default dict setting.

$ sudachipy link -u

Customized dictionary

If you need to apply customized system.dic, place sudachi.json to anywhere you like, and overwrite systemDict value with the relative path from sudachi.json to your system.dic.

{
    "systemDict" : "relative/path/to/system.dic",
    ...
}

Then you can specify sudachi.json with -r option.

$ sudachipy -r path/to/sudachi.json

In the end, we would like to make a flow to get these resources via the code, like NLTK (e.g., import nltk; nltk.download()) or spaCy (e.g., $python -m spacy download en).

For developer

Code format

You can use ./scripts/format.sh and check if your code is in rule. flake8 flake8-import-order flake8-buitins is required. See requirements.txt

Test

You can use ./script/test.sh and check if not your change cause regression.

Metadata

Release files for SudachiPy 0.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SudachiPy 0.3.6
File Size Uploaded
SudachiPy-0.3.6.tar.gz 46.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SudachiPy 0.3.6
File Interpreter ABI Platform
SudachiPy-0.3.6-py3-none-any.whl Python 3 none any Details

Total release size: 109.4 kB

Release files / SudachiPy-0.3.6.tar.gz

Download URL SudachiPy-0.3.6.tar.gz
Size 46.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5220f85607b46fbea23f1df14d058d33160eba71ce11045b0cbbe818d026f9e7
BLAKE2b-256 checksum
How to use checksums
1ac8aa3be6de5d4d6ba4329cde1c629c54a477697bae8deb660d6e475cae908a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

Release files / SudachiPy-0.3.6-py3-none-any.whl

Download URL SudachiPy-0.3.6-py3-none-any.whl
Size 62.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
115416ad8ce14c302d764c2e1777eec1cb14c2b3776ad2ec1c430ab2fa9ef114
BLAKE2b-256 checksum
How to use checksums
f9a68eb0fdc3ebee66b9add4de41914793132d9cab455ebc5e43645e099d0c11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

Release history Release notifications | RSS feed

0.7.0

12 release files

0.6.9

18 release files

0.6.8

19 release files

0.6.7

16 release files

0.6.6

13 release files

0.6.5

13 release files

0.6.4

13 release files

0.6.3

16 release files

0.6.0

16 release files

0.5.4

10 release files

0.5.3

10 release files

0.5.2

10 release files

0.5.0

10 release files

0.4.9

10 release files

0.4.8

1 release file

0.4.7

1 release file

0.4.6

4 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.9

2 release files

0.3.8

2 release files

This release

0.3.6 This release

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page