Tokenizes utterances that contain a mix of English and Chinese words.
Last updated 2 years ago by anton-ivanov .
Unlicense · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install mixed-english-and-chinese-tokenizer 
SYNC missed versions from official npm registry.

Mixed English and Chinese Tokenizer

Tokenizes sentences containing a mix of Chinese and English words.

Optionally, lemmatizes English words. English contractions such as "don't" are always changed to full forms such as "do not".

Supports Cantonese / Taiwanese / Mandarin. Defaults to producing output in Traditional Chinese (see options below).


In order for this to work, you need the CEDICT dictionary. Search for "cedict_ts.u8", download the file and place it into the root folder of your Node.js application.


const MEACT = require('mixed-english-and-chinese-tokenizer');

let m = new MEACT();

(async() => {
		/* Produces ['hello', 'what', 'is', 'up', '边度', '有', '柜员机', '呀']: */
		await m.tokenize(`hello, what's up, 邊度有櫃員機呀?`),

		/* Produces ['hello', 'what', 'be', 'up', '边度', '有', '柜员机', '呀']: */
		await m.tokenize(`hello, what's up, 邊度有櫃員機呀?`),

	m = null; // free up memory occupied by CEDICT


async tokenize(text)

Returns an array of tokens from string. Punctuation is excluded.

let m = new MEACT();

let tokens = await m.tokenize('I am here'); // ['I', 'am', 'here'];

async lemmatize(text)

The same as tokenize(), except that English words are converted into lemmas.

For example, 'doing' will be changed to 'do'.

let m = new MEACT();

let tokens = await m.lemmatize('I am here'); // ['I', 'be', 'here'];


The constructor takes an optional options object.

  • options.simplified - Boolean. Whether to use Simplified Chinese. Default is false and all output is forced to Traditional Chinese, even if it is in Simplified Chinese.
  • options.lemmaCache - Object. An object storing the cache of all English lemmas. Lemmatizing an English word is computationally expensive (50-400 ms). For that reason, you may want to use an object that will cache the lemmas. You could store that object globally or save it to disk. The code would look roughly like this:
let lemmaCache = readLemmaCacheFromDisk(); // assume you stored it somewhere

const m = new MEACT({ lemmaCache });
let lemmatized = m.lemmatize(text);

// lemmaCache has been updated with new lemmas, save it to disk. Next time the
// same sentence will be lemmatized much faster.

Current Tags

  • 1.1.0                                ...           latest (2 years ago)

8 Versions

  • 1.1.0                                ...           2 years ago
  • 1.0.8                                ...           2 years ago
  • 1.0.6                                ...           2 years ago
  • 1.0.5                                ...           2 years ago
  • 1.0.3                                ...           2 years ago
  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Maintainers (1)
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 4
Dependencies (4)
Dev Dependencies (1)
Dependents (0)

Copyright 2014 - 2017 © taobao.org |