Projeto | Huggingface | arxiv | Zenodo
Incorporar hierarquias com modelos de idiomas.
Notícias (Changelog)?
sentence-transformers>=3.4.0.dev0 ( v0.1.0 ). sentence-transformers<3.0.0 ) e correção de bug. ( v0.0.3 ) O transformador de hierarquia (HIT) é uma estrutura que permite que os modelos de linguagem baseados em codificadores de transformadores (LMS) aprendam estruturas hierárquicas no espaço hiperbólico. A idéia principal é construir uma bola Poincaré que circunscreve diretamente o espaço que incorpora a saída do LMS, alavancando a expansão exponencial do espaço hiperbólico para organizar incorporações de entidades hierarquicamente. Além de apresentar essa estrutura (consulte o código no Github), estamos comprometidos com o treinamento e a liberação de modelos de sucesso em vários hierachiies. Os modelos e conjuntos de dados estarão acessíveis no HuggingFace.
Este repositório segue um layout semelhante à biblioteca sentence-transformers . O modelo principal estende diretamente a arquitetura do transformador de frases. Também utilizamos deeponto para extrair hierarquias dos dados de origem e construir conjuntos de dados a partir de hierarquias, e geoopt para aritmética no espaço hiperbólico.
A liberação atual de
sentence-transformers=3.3.1contém bugs durante a avaliação, que foram corrigidos em seu github dev versãosentence-transformers=3.4.0.dev0, atualize a dependência manualmente até que o3.4.0oficial seja lançado.
# requiring Python>=3.9
pip install hierarchy_transformerspip install git+https://github.com/KRR-Oxford/HierarchyTransformers.gitNossos modelos de sucesso e conjuntos de dados são lançados no HUGGINGFACE HUB.
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 as incorporações da entidade para prever as relações de subsumo entre elas.
# 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 os scripts de exemplo em nosso repositório para reproduzir modelos existentes e treinar/avaliar seus próprios modelos.
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.
Se você achar útil este repositório ou os modelos lançados, cite nossa publicação:
Yuan ele, Zhangdie Yuan, Jiaoyan Chen, Ian Horrocks. Modelos de idiomas como codificadores de hierarquia. Para aparecer em 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}
}