Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Ask DeepWiki

🧩 KeywordTemplateMatcher

A lightweight Python utility for expanding and matching natural language templates with slots, optional phrases, and alternatives. It supports fuzzy matching and slot extraction, making it ideal for prototyping NLU systems, voice assistants, or rule-based query matching.


🔧 Features

  • ✅ Template expansion with:
    • Optional phrases ([optional])
    • Alternatives ((choice1|choice2))
    • Slots ({slot_name})
  • ✅ Slot substitution with provided dictionaries
  • ✅ Fuzzy matching with confidence scoring using rapidfuzz
  • ✅ Simple template structure, extensible for any language/grammar rules
  • ✅ Built-in integration with simplematch for fuzzy slot matching

📦 Installation

pip install keyword-template-matcher

🚀 Usage

1. Expanding a Template with Slots

from kw_template_matcher import expand_slots

template = "change [the ]brightness to {brightness_level} and color to {color_name}"
slots = {
    "brightness_level": ["low", "medium", "high"],
    "color_name": ["red", "green", "blue"]
}

for sentence in expand_slots(template, slots):
    print(sentence)

Output:

change the brightness to low and color to red
change brightness to high and color to blue
... (all combinations)

2. Template Matching

from kw_template_matcher import TemplateMatcher

matcher = TemplateMatcher()
matcher.add_templates([
    "[hello,] (call me|my name is) {name}",
    "tell me a [{joke_type}] joke"
])

query = "hello, my name is Alice"
results = matcher.match(query)

for match in results:
    print(match)

🧠 How It Works

Template Syntax

Syntax Description
{slot} Placeholder to be replaced with values
[optional] Optional word or phrase
(a|b|c) Alternatives - only one is chosen

🧪 Test Example Templates

templates = [
    "[hello,] (call me|my name is) {name}",
    "tell me a [{joke_type}] joke",
    "play {query} [in ({device_name}|{skill_name}|{zone_name})]"
]

Produces expansions like:

- call me {name}
- hello, my name is {name}
- tell me a {joke_type} joke
- play {query}
- play {query} in {device_name}

🤝 Contributions

PRs, issues, and suggestions welcome! Feel free to open an issue or submit a pull request if you'd like to improve the matcher.


💬 Acknowledgements

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keyword_template_matcher-0.1.3a1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keyword_template_matcher-0.1.3a1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file keyword_template_matcher-0.1.3a1.tar.gz.

File metadata

File hashes

Hashes for keyword_template_matcher-0.1.3a1.tar.gz
Algorithm Hash digest
SHA256 a2ff43ad57a2c3e11ce0a6b03aff2629b0b04975397cdfb0074ec5195622b798
MD5 35899731973b4400c8a686b19a8f0ffa
BLAKE2b-256 6efeee0a7d9ba6b8752161262c5d81fa40304a7f14ebf1ef15678e605ffaed5a

See more details on using hashes here.

File details

Details for the file keyword_template_matcher-0.1.3a1-py3-none-any.whl.

File metadata

File hashes

Hashes for keyword_template_matcher-0.1.3a1-py3-none-any.whl
Algorithm Hash digest
SHA256 02b7aac5584a30d68993c5d2deadc3a8fa6574f7c4758be6c8a426fa06e5b888
MD5 a6f206d0fd834b74d6571d0fd957587b
BLAKE2b-256 5ff062dce26a40df58abf778b08af7a00eb739394d1ec2358a6a88d34290b27e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page