This is a sentence-transformers model finetuned from sentence-transformers/all-MiniLM-L12-v2 for matching Tekla Structures attributes with natural language queries. It enables semantic search and attribute matching by mapping natural language descriptions to Tekla attribute names.
Training Dataset: Synthetically generated Tekla attribute-query pairs (35,590 samples)
Language: English
License: GNU General Public License v3.0
Model Overview
This model is specifically designed for Tekla Structures attribute matching. It converts natural language queries (e.g., "bolt name from catalog") into embeddings that can be matched against Tekla attribute names (e.g., "BOLT_FULL_NAME").
Hugging Face:Sentence Transformers on Hugging Face
Usage
Direct Usage (Sentence Transformers)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
python
1# Example: Tekla Attribute Matching2from sentence_transformers import SentenceTransformer, util
34# Load the model5model = SentenceTransformer("teknovizier/minilm-tekla-attr-embed-v1")67# Tekla attributes to match against8attributes =["TOP_LEVEL","PRODUCT_NAME","POUR_PHASE","BOLT_FULL_NAME"]910# User queries (natural language)11queries =["object top level","product name","pour phase","bolt name from catalog"]1213# Get embeddings14attr_embeddings = model.encode(attributes)15query_embeddings = model.encode(queries)1617# Calculate similarities and find best matches18similarities = util.cos_sim(query_embeddings, attr_embeddings)19for i, query inenumerate(queries):20 best_match_idx = similarities[i].argmax().item()21print(f"'{query}' → '{attributes[best_match_idx]}' (score: {similarities[i][best_match_idx]:.3f})")2223# Output:24# 'object top level' → 'TOP_LEVEL' (score: 0.822)25# 'product name' → 'PRODUCT_NAME' (score: 0.879)26# 'pour phase' → 'POUR_PHASE' (score: 0.953)27# 'bolt name from catalog' → 'BOLT_FULL_NAME' (score: 0.670)
Text Normalization
For optimal performance, text should be normalized before encoding:
Convert to lowercase
Replace underscores and hyphens with spaces
Remove non-alphanumeric characters
Example: "BOLT_NAME_FROM_CATALOG" → "bolt name from catalog"
The model is trained on normalized text, so applying this normalization to both queries and attribute names will yield the best matching results.
Limitations
Synthetic Training Data
This model is trained on synthetically generated data created using Claude Opus. While the synthetic data generation process includes quality filtering and validation, the model's performance on real-world user queries may differ from its performance on synthetic training examples.
Domain Specificity
The model is specifically fine-tuned for Tekla Structures attribute matching and may not generalize well to:
Other BIM or engineering software
General natural language understanding tasks
Attribute names from other software systems
Text Normalization Dependency
Optimal performance requires consistent text normalization (lowercasing, underscore/hyphen replacement). Queries that don't follow this normalization pattern may yield suboptimal matches.
Training Details
Training Dataset
Tekla Attribute Matching Dataset
Size: 35,590 training samples (query-attribute pairs)
Data Source: Synthetically generated using Claude Opus (Anthropic's AI model)
1@inproceedings{reimers-2019-sentence-bert,
2 title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
3 author = "Reimers, Nils and Gurevych, Iryna",
4 booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
5 month = "11",
6 year = "2019",
7 publisher = "Association for Computational Linguistics",
8 url = "https://arxiv.org/abs/1908.10084",
9}
MultipleNegativesRankingLoss
bibtex
1@misc{henderson2017efficient,
2 title={Efficient Natural Language Response Suggestion for Smart Reply},
3 author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
4 year={2017},
5 eprint={1705.00652},
6 archivePrefix={arXiv},
7 primaryClass={cs.CL}
8}