Team Ai
Datasetpublic

eduagarcia/multilingual_tokenizer_benchmark

Multilingual Tokenizer Benchmark More details of each subset like word count, character count, original sources, etc, can be found in the dataset_meta.yaml file in the repository root. Natural language word count functions Download spacy models pip install ntlk spacy pygments underthesea camel-tools python -m spacy download ko_core_news_sm python -m spacy download ja_core_news_sm python -m spacy download zh_core_web_sm import nltk nltk.download('punkt_tab')… See the full description on the dataset page: https://huggingface.co/datasets/eduagarcia/multilingual_tokenizer_benchmark.

sourceHugging Faceupdated 1y agoView on Hugging Face
2likes172downloads
Dataset Card

Multilingual Tokenizer Benchmark

More details of each subset like word count, character count, original sources, etc, can be found in the dataset_meta.yaml file in the repository root.

Natural language word count functions

Download spacy models

bash
pip install ntlk spacy pygments underthesea camel-tools

python -m spacy download ko_core_news_sm
python -m spacy download ja_core_news_sm
python -m spacy download zh_core_web_sm
python
import nltk
nltk.download('punkt_tab')
nltk.download('words')
from nltk import word_tokenize as word_tokenize_nltk
from underthesea import word_tokenize as word_tokenize_underthesea
from camel_tools.tokenizers.word import simple_word_tokenize as word_tokenize_camel_tools
import spacy

langs_nltk = {
    'en': 'english',
    'pt': 'portuguese',
    'it': 'italian',
    'pl': 'polish',
    'de': 'german',
    'es': 'spanish',
    'fr': 'french',
    'ru': 'russian',
}

langs_spacy = {
    'ja': spacy.load('ja_core_news_sm', disable=['parser', 'ner', 'lemmatizer', 'tagger', 'attribute_ruler']),
    'zh': spacy.load('zh_core_web_sm', disable=['parser', 'ner', 'lemmatizer', 'tagger', 'attribute_ruler']),
    'ko': spacy.load('ko_core_news_sm', disable=['parser', 'ner', 'lemmatizer', 'tagger', 'attribute_ruler']),
}

def word_tokenize_spacy(text, model):
    doc = model(text)
    return [token.text for token in doc if not token.is_space]

def word_tokenize(text, language):
    if language in langs_spacy:
        return word_tokenize_spacy(text, langs_spacy[language])
    elif language in langs_nltk:
        return word_tokenize_nltk(text, langs_nltk[language])
    elif language == 'vi':
        return word_tokenize_underthesea(text)
    elif language == 'ar':
        return word_tokenize_camel_tools(text)
    else:
        raise ValueError(f"Language {language} not supported")

#### Usage Example ####
word_count_pt = len(word_tokenize("Olá Mundo.", 'pt'))
word_count_ko = len(word_tokenize("이것은 한국어 문장입니다.", 'ko'))

Code word count function

python
import nltk
nltk.download('punkt_tab')
from nltk import word_tokenize

from pygments import lex
from pygments.lexers import get_lexer_by_name
from pygments.token import Token

NATURAL_LANGUAGE_PARENT_TOKEN_TYPES = {
    Token.Comment,
    Token.Literal.String,
    Token.Text,
    Token.Generic.Heading,    # For Markdown,
    Token.Generic.Subheading, # For Markdown,
    Token.Generic.Emph,       # For Markdown *italic*
    Token.Generic.Strong,     # For Markdown **bold**
    Token.Generic.Output,     # For shell output,
    Token.Generic.Error,      # Error messages
    Token.Generic.Traceback,  # Traceback messages
}

def _is_natural_language_like(tok_type) -> bool:
    for nl_parent_type in NATURAL_LANGUAGE_PARENT_TOKEN_TYPES:
        if tok_type in nl_parent_type: # This checks if tok_type is nl_parent_type OR a child
            return True
    return False

def pygments_tokenize(code: str, language: str) -> list[str]:
    lexer = get_lexer_by_name(language, stripnl=True, stripall=True)
    tokens = lex(code, lexer)

    result = []

    for tok_type, value in tokens:
        if _is_natural_language_like(tok_type):
            # Recursively tokenize comment or string content. Use the default english tokenizer.
            result.extend(word_tokenize(value))
        else:
            # Tokenize symbol/keyword/identifier at surface level
            result.append(value)

    return [t for t in result if t.strip() != '']

#### Usage Example ####
word_count_json = len(pygments_tokenize('{"hello": 1}', 'json'))
word_count_python = len(pygments_tokenize("lambda x: print('hello')", "python"))

Per language stats

CodeLanguageNum. of DomainsNum. of DocsNum. of CharactersNum. of WordsNum. of BytesData Types
codeProgramming Languages18426017454895364523017621590C, C++, CSS, Dockerfile, Go, HTML, JSON, Java, JavaScript, Lua, Markdown, PHP, Python, Rust, SQL, Shell, TeX, TypeScript
enEnglish14851314087244281292914177905Biomedical, Books, Emoji Heavy, Finance, Legal, Live Speech, Lyrics, News, Poetry, Scientific Papers, Social Networks, Subtitles, Web, Wikipedia
esSpanish12773912786745240896613063395Biomedical, Books, Legal, Live Speech, Lyrics, News, Poetry, Scientific Papers, Social Networks, Subtitles, Web, Wikipedia
frFrench11681211477784220643011867606Biomedical, Finance, Legal, Live Speech, Lyrics, News, Poetry, Scientific Papers, Subtitles, Web, Wikipedia
ptPortuguese11770911546654220730711887461Biomedical, Books, Legal, Live Speech, Lyrics, News, Scientific Papers, Social Networks, Subtitles, Web, Wikipedia
zhChinese11107693999493221379910471916Biomedical, Emoji Heavy, Finance, Legal, Live Speech, Lyrics, News, Poetry, Subtitles, Web, Wikipedia
arArabic10124109909750200522617685166Biomedical, Books, Finance, Live Speech, Lyrics, News, Poetry, Subtitles, Web, Wikipedia
jaJapanese1011039380195220083969717840Books, Legal, Lyrics, News, Poetry, Scientific Papers, Social Networks, Subtitles, Web, Wikipedia
deGerman8511911016640184162211207161Biomedical, Legal, Lyrics, News, Scientific Papers, Subtitles, Web, Wikipedia
koKorean894986060455160282612532955Finance, Legal, Lyrics, News, Social Networks, Subtitles, Web, Wikipedia
ruRussian887299105314161253716277665Biomedical, Lyrics, News, Poetry, Scientific Papers, Subtitles, Web, Wikipedia
viVietnamese889738533015160250010911187Biomedical, Live Speech, Lyrics, News, Poetry, Subtitles, Web, Wikipedia
itItalian76976770647514083637792425Biomedical, Legal, Lyrics, Scientific Papers, Subtitles, Web, Wikipedia
plPolish63990727803812046907694868Legal, Lyrics, News, Subtitles, Web, Wikipedia

Sourced datasets:

HF DatasetNum. SubsetsLanguagesData Types
0bigcode/the-stack-smol17codeC, C++, CSS, Dockerfile, Go, HTML, Java, JavaScript, Lua, Markdown, PHP, Python, Rust, SQL, Shell, TeX, TypeScript
1badranx/opus_raw14ar, de, en, es, fr, it, ja, ko, pl, pt, ru, vi, zhSubtitles
2HuggingFaceFW/fineweb-212ar, de, es, fr, it, ja, ko, pl, pt, ru, vi, zhWeb
3sebastiandizon/genius-song-lyrics11de, en, es, fr, it, ja, ko, pl, pt, vi, zhLyrics
4rntc/pubmed_preprocess8de, en, es, fr, it, pt, ru, zhBiomedical
5wikimedia/wikipedia7de, it, ja, ko, pl, ru, viWikipedia
6joelniklaus/Multi_Legal_Pile6de, en, es, fr, it, plLegal
7almanach/HALvest5de, es, fr, it, ruScientific Papers
8premio-ai/TheArabicPile_Medical1arBiomedical
9ImruQays/Rasaif-Classical-Arabic-English-Parallel-texts1arBooks
10asas-ai/financial_news1arFinance
11bigscience-data/roots_ar_ted_talks_iwslt1arLive Speech
12premio-ai/TheArabicPile_Lyrics1arLyrics
13AIR-Bench/qa_news_ar1arNews
14premio-ai/TheArabicPile_Poetry1arPoetry
15bigscience-data/roots_ar_wikipedia1arWikipedia
16bigcode/starcoderdata1codeJSON
17AIR-Bench/qa_news_de1deNews
18orionweller/books_mds_incremental1enBooks
19ElKulako/stocktwits-emoji1enEmoji Heavy
20Orion-zhen/dpo-codealpaca-emoji1enEmoji Heavy
21Orion-zhen/dpo-mathinstuct-emoji1enEmoji Heavy
22Orion-zhen/dpo-physical-reasoning-emoji1enEmoji Heavy
23AIR-Bench/qa_finance_en1enFinance
24bigscience-data/roots_en_ted_talks_iwslt1enLive Speech
25orionweller/cc_news_mds_incremental1enNews
26DanFosing/public-domain-poetry1enPoetry
27orionweller/arxiv_mds_incremental1enScientific Papers
28orionweller/pes2o_mds_incremental1enScientific Papers
29orionweller/reddit_mds_incremental1enSocial Networks
30HuggingFaceFW/fineweb1enWeb
31orionweller/wikipedia_mds_incremental1enWikipedia
32jorgeortizfuentes/spanish_books1esBooks
33bigscience-data/roots_es_ted_talks_iwslt1esLive Speech
34LeoCordoba/CC-NEWS-ES1esNews
35andreamorgar/spanish_poetry1esPoetry
36jorge-henao/disco_poetry_spanish1esPoetry
37eduagarcia/scielo_abstracts1esScientific Papers
38Arconte/Dominican_reddit_raw_corpus1esSocial Networks
39bigscience-data/roots_es_wikipedia1esWikipedia
40AIR-Bench/qa_finance_fr1frFinance
41bigscience-data/roots_fr_ted_talks_iwslt1frLive Speech
42AIR-Bench/qa_news_fr1frNews
43kamarko/ccnews-french-subset1frNews
44manu/french_poetry1frPoetry
45bigscience-data/roots_fr_wikipedia1frWikipedia
46HiTZ/Multilingual-Medical-Corpus1itBiomedical
47globis-university/aozorabunko-clean1jaBooks
48geniacllm/hanrei1jaLegal
49kajuma/CC-news-2024-July-October-cleaned1jaNews
50p1atdev/modern_haiku1jaPoetry
51kunishou/J-ResearchCorpus1jaScientific Papers
52p1atdev/open2ch1jaSocial Networks
53BCCard/BCCard-Finance-Kor-QnA1koFinance
54jihye-moon/klac_legal_aid_counseling1koLegal
55joonhok-exo-ai/korean_law_open_data_precedents1koLegal
56AIR-Bench/qa_news_ko1koNews
57daekeun-ml/naver-news-summarization-ko1koNews
58werty1248/Korea-Related-Reddit-comments1koSocial Networks
59werty1248/Korea-Related-Reddit-posts1koSocial Networks
60WiktorS/polish-news1plNews
61winterkitsune/elka-pl-news1plNews
62eduagarcia/pd_books_pt1ptBooks
63eduagarcia/LegalPT_dedup1ptLegal
64bigscience-data/roots_pt_ted_talks_iwslt1ptLive Speech
65eduagarcia/cc_news_pt_v21ptNews
66eduagarcia/scielo_papers1ptScientific Papers
67carolina-c4ai/corpus-carolina1ptSocial Networks
68tallesl/quinquilharia1ptSocial Networks
69bigscience-data/roots_pt_wikipedia1ptWikipedia
70blinoff/medical_qa_ru_data1ruBiomedical
71sevenreasons/genius-lyrics-russian1ruLyrics
72AIR-Bench/qa_news_ru1ruNews
73IlyaGusev/ru_news1ruNews
740x7o/poemma-10k1ruPoetry
75AnyaSchen/russian_poetry_with_keywords1ruPoetry
76mlsa-iai-msu-lab/ru_sci_bench1ruScientific Papers
77VietAI/vi_pubmed1viBiomedical
78bigscience-data/roots_vi_ted_talks_iwslt1viLive Speech
79bigscience-data/roots_vi_binhvq_news_corpus1viNews
80bigscience-data/roots_vi_vietnamese_poetry1viPoetry
81DavidLanz/medical_pretrain1zhBiomedical
82Orion-zhen/dpo-emoji-zh1zhEmoji Heavy
83Orion-zhen/dpo-ruozhiba-emoji1zhEmoji Heavy
84shareAI/DPO-zh-en-emoji1zhEmoji Heavy
85Duxiaoman-DI/FinCorpus1zhFinance
86TigerResearch/tigerbot-law-plugin1zhLegal
87bigscience-data/roots_zh_ted_talks_iwslt1zhLive Speech
88dirtycomputer/chinese_lyrics1zhLyrics
89AIR-Bench/qa_news_zh1zhNews
90liswei/news-collection-zhtw1zhNews
91erhwenkuo/poetry-chinese-zhtw1zhPoetry
92bigscience-data/roots_zh-cn_wikipedia1zhWikipedia