Проект | Объятие | arxiv | Зенодо
Внедрение иерархий с языковыми моделями.
Новости (изменение)?
sentence-transformers>=3.4.0.dev0 ( v0.1.0 ). sentence-transformers<3.0.0 ) и исправлением ошибки. ( v0.0.3 ) Трансформатор иерархии (HIT)-это структура, которая позволяет языковым моделям на основе трансформатора на основе энкодеров (LMS) изучать иерархические структуры в гиперболическом пространстве. Основная идея состоит в том, чтобы построить шар Пуанкаре, который непосредственно ограничивает выходное пространство LMS, используя экспоненциальное расширение гиперболического пространства для организации иерархически встроенных сущностей. В дополнение к представлению этой структуры (см. Код на GitHub), мы стремимся к обучению и выпуску моделей попадания в различные иерачи. Модели и наборы данных будут доступны на Huggingface.
Этот репозиторий следует за аналогичным макетом, как и библиотека sentence-transformers . Основная модель напрямую расширяет архитектуру трансформатора предложений. Мы также используем deeponto для извлечения иерархий из исходных данных и построения наборов данных из иерархий и geoopt для арифметики в гиперболическом пространстве.
Текущий выпуск
sentence-transformers=3.3.1содержит ошибки во время оценки, которые были зафиксированы в их версии Github Devsentence-transformers=3.4.0.dev0, пожалуйста, обновите зависимость вручную до тех пор, пока официальный3.4.0не будет опубликован.
# requiring Python>=3.9
pip install hierarchy_transformerspip install git+https://github.com/KRR-Oxford/HierarchyTransformers.gitНаши модели HIT и наборы данных выпущены в центре HuggingFace.
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 )Используйте встраиваемые сущности, чтобы предсказать соотношение субъекта между ними.
# 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 ))Используйте примеры сценариев в нашем репозитории, чтобы воспроизвести существующие модели и обучать/оценить свои собственные модели.
Copyright 2023 Yuan He.
All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at *<http://www.apache.org/licenses/LICENSE-2.0>*
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Если вы найдете этот репозиторий или выпущенные модели полезны, пожалуйста, укажите нашу публикацию:
Юань он, Чжанди Юань, Цзяян Чен, Ян Хоррокс. Языковые модели как иерархические кодеры. Появиться в Neurips 2024. /Arxiv / /Neurips /
@article{he2024language,
title={Language Models as Hierarchy Encoders},
author={He, Yuan and Yuan, Zhangdie and Chen, Jiaoyan and Horrocks, Ian},
journal={arXiv preprint arXiv:2401.11374},
year={2024}
}