Skip to main content

Khl Logo

No Water - Ice Only

Preparing russian hockey news for machine learning.

Unify -> Simplify -> Preprocess text and feed your neural model.

Installation

Khl is available on PyPI:

$ pip install khl

It requires Python 3.8+ to run.

Usage

To get started right away with basic usage:

from khl import text_to_codes

coder = {
    '': 0,     # placeholder
    '???': 1,  # unknown
    '.': 2,
    'и': 3,
    'в': 4,
    '-': 5,
    ':': 6,
    'матч': 7,
    'за': 8,
    'забить': 9,
    'гол': 10,
    'per': 11,   # person entity
    'org': 12,   # organization entity
    'loc': 13,   # location entity
    'date': 14,  # date entity
    'против': 15,
    'год': 16,
    'pers': 17,  # few persons entity
    'orgs': 18,  # few organizations entity
    'свой': 19
}

text = """
    1 апреля 2023 года в Москве в матче ⅛ финала против „Спартака” Иван Иванов забил свой 100—й гол за карьеру.
    «Динамо Мск» - «Спартак» 2:1 ОТ (1:0 0:1 0:0 1:0) Голы забили: Иванов, Петров и Сидоров.
"""

codes = text_to_codes(
    text=text,
    coder=coder,
    stop_words_=["за", "и", "свой"],  # stop words to drop
    replace_ners_=True,               # replace named entities ("Иван Иванов" -> "per", "Спартак" -> "org", "Москва" -> "loc")
    replace_dates_=True,              # replace dates ("1 апреля 2023 года" -> "date")
    replace_penalties_=True,          # replace penalties ("5+20" -> "pen")
    exclude_unknown=True,             # drop lemma that not presented in coder
    max_len=20,                       # get sequence of codes of length 20
)
# codes = [0, 0, 0, 14, 4, 13, 4, 7, 15, 12, 11, 9, 10, 2, 18, 10, 9, 6, 17, 2]

text_to_codes is a very high level function. What's happens under hood see in Lower level usage.

What is coder?

coder is just a dictionary where each lemma is represented with unique integer code. Note that first two elements are reserved for placeholder and unknown elements.

It is possible to get coder from frequency dictionary file (see in Get lemmas coder). Frequency dictionary file is a json-file with dictionary where key is lemma and value is how many times this lemma occurred in your whole dataset. Preferably it should be sorted in descending order of values.
example_frequency_dictionary.json:

{
  ".": 1000,
  "и": 500,
  "в": 400,
  "-": 300,
  ":": 300,
  "матч": 290,
  "за": 250,
  "забить": 240,
  "гол": 230,
  "per": 200,
  "org": 150,
  "loc": 150,
  "date": 100,
  "против": 90,
  "год": 70,
  "pers": 40,
  "orgs": 30,
  "свой": 20
}

You could make and use your own frequency dictionary or download this dictionary created by myself.

Lower level usage

1. Make imports

from khl import stop_words
from khl import utils
from khl import preprocess

2. Get lemmas coder

coder = preprocess.get_coder("example_frequency_dictionary.json")

3. Define text

text = """
    1 апреля 2023 года в Москве в матче ⅛ финала против „Спартака” Иван Иванов забил свой 100—й гол за карьеру.
    «Динамо Мск» - «Спартак» 2:1 ОТ (1:0 0:1 0:0 1:0) Голы забили: Иванов, Петров и Сидоров.
"""

4. Unify

unified_text = utils.unify(text)
# "1 апреля 2023 года в Москве в матче 1/8 финала против 'Спартака' Иван Иванов забил свой 100-й гол за карьеру. 'Динамо Мск' - 'Спартак' 2:1 ОТ (1:0 0:1 0:0 1:0) Голы забили: Иванов, Петров и Сидоров."

5. Simplify

simplified_text = utils.simplify(
    text=unified_text,
    replace_ners_=True,
    replace_dates_=True,
    replace_penalties_=True,
)
# 'date в loc в матче финала против org per забил свой гол за карьеру. org org Голы забили: per per per.'

6. Lemmatize

lemmas = preprocess.lemmatize(text=simplified_text, stop_words_=stop_words)
# ['date', 'в', 'loc', 'в', 'матч', 'финал', 'против', 'org', 'per', 'забить', 'гол', 'карьера', '.', 'orgs', 'гол', 'забить', ':', 'pers', '.']

7. Transform to codes

codes = preprocess.lemmas_to_codes(
    lemmas=lemmas,
    coder=coder,
    exclude_unknown=True,
    max_len=20,
)
# [0, 0, 0, 14, 4, 13, 4, 7, 15, 12, 11, 9, 10, 2, 18, 10, 9, 6, 17, 2]

8. Transform to lemmas back (just to look which lemmas are presented in codes sequence)

print(
    preprocess.codes_to_lemmas(codes=codes, coder=coder)
)
# ['', '', '', 'date', 'в', 'loc', 'в', 'матч', 'против', 'org', 'per', 'забить', 'гол', '.', 'orgs', 'гол', 'забить', ':', 'pers', '.']

Metadata

Release files for khl 2.0.2

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

Source distribution (sdist)

Source distribution for khl 2.0.2
File Size Uploaded
khl-2.0.2.tar.gz 21.7 kB Details

Built distribution (wheel)

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

Total release size: 42.1 kB

Release files / khl-2.0.2.tar.gz

Download URL khl-2.0.2.tar.gz
Size 21.7 kB
Tags Source
SHA-256 checksum
How to use checksums
23c288c90304a2efb9c63e3c4a512a542d05a150cd068cf40f820f87c0298337
BLAKE2b-256 checksum
How to use checksums
6f9eaa41785eebb3f314f51a2ba52bbc80a8ceef4a06889a44eb12149ddcd38f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.2 CPython/3.8.10 Linux/5.15.0-89-generic

Release files / khl-2.0.2-py3-none-any.whl

Download URL khl-2.0.2-py3-none-any.whl
Size 20.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a736205310f1c66428fb1fa8a916cb875f0dbe72f38bb8f524847bb6cd29ea3f
BLAKE2b-256 checksum
How to use checksums
d00528c5eabff72031db481d18e9d598af63bc23bd7720c0ef245a36f64b7a4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.2 CPython/3.8.10 Linux/5.15.0-89-generic

Release history Release notifications | RSS feed

This release

2.0.2 This release

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

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