Downloads · 30 days
38
5% of all-time downloads
Hierarchy-Transformers/HiT-MPNet-WordNetNoun
HiT-MPNet-WordNetNoun is a feature extraction model from Hierarchy-Transformers. Use it when you need embeddings to search or compare text. It is set up for hierarchy-transformers. The card lists the license as apache-2.0.
A Hierarchy Transformer Encoder (HiT) model that explicitly encodes entities according to their hierarchical relationships.
Downloads · 30 days
38
5% of all-time downloads
All-time downloads
720
Public
Parameters
109M
1.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors438 MB · 100%
From the Hugging Face model README
A Hierarchy Transformer Encoder (HiT) model that explicitly encodes entities according to their hierarchical relationships.
HiT-MPNet-WordNetNoun is a HiT model trained on WordNet's subsumption (hypernym) hierarchy of noun entities.
| Version | Model Revision | Note |
|---|---|---|
| v1.0 (Random Negatives) | main or v1-random-negatives | The variant trained on random negatives, as detailed in the paper. |
| v1.0 (Hard Negatives) | v1-hard-negatives | The variant trained on hard negatives, as detailed in the paper. |
HiT models are used to encode entities (presented as texts) and predict their hierarhical relationships in hyperbolic space.
Install hierarchy_transformers (check our repository) through pip or GitHub.
Use the code below to get started with the model.
from hierarchy_transformers import HierarchyTransformer
# load the model
model = HierarchyTransformer.from_pretrained('Hierarchy-Transformers/HiT-MiniLM-L12-WordNetNoun')
# entity names to be encoded.
entity_names = ["computer", "personal computer", "fruit", "berry"]
# get the entity embeddings
entity_embeddings = model.encode(entity_names)
Use the entity embeddings to predict the subsumption relationships between them.
# suppose we want to compare "personal computer" and "computer", "berry" and "fruit"
child_entity_embeddings = model.encode(["personal computer", "berry"], convert_to_tensor=True)
parent_entity_embeddings = model.encode(["computer", "fruit"], convert_to_tensor=True)
# compute the hyperbolic distances and norms of entity embeddings
dists = model.manifold.dist(child_entity_embeddings, parent_entity_embeddings)
child_norms = model.manifold.dist0(child_entity_embeddings)
parent_norms = model.manifold.dist0(parent_entity_embeddings)
# use the empirical function for subsumption prediction proposed in the paper
# `centri_score_weight` and the overall threshold are determined on the validation set
subsumption_scores = - (dists + centri_score_weight * (parent_norms - child_norms))
Use the example scripts in our repository to reproduce existing models and train/evaluate your own models.
HierarchyTransformer(
(0): Transformer({'max_seq_length': 128, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False})
)
Yuan He, Zhangdie Yuan, Jiaoyan Chen, Ian Horrocks. Language Models as Hierarchy Encoders. Advances in Neural Information Processing Systems 37 (NeurIPS 2024).
@article{he2024language,
title={Language models as hierarchy encoders},
author={He, Yuan and Yuan, Moy and Chen, Jiaoyan and Horrocks, Ian},
journal={Advances in Neural Information Processing Systems},
volume={37},
pages={14690--14711},
year={2024}
}
For any queries or feedback, please contact Yuan He (yuan.he(at)cs.ox.ac.uk).