cubebasis.xyz / app.py
whoisterencelee
trying all models
371bdf5
import gradio as gr
import torch
import os
import numpy
from sentence_transformers import SentenceTransformer
#sentence_model = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2")
#sentence_model = SentenceTransformer("all-mpnet-base-v2")
sentence_model = SentenceTransformer("mixedbread-ai/mxbai-embed-large-v1")
def getText( file ):
return open( file ).read()
def axis():
global v, a, s
doc = getText( './axis/v' )
embedding = sentence_model.encode( doc , show_progress_bar=False, normalize_embeddings=True )
torch.save( embedding , './embeds/v' )
v = embedding
doc = getText( './axis/a' )
embedding = sentence_model.encode( doc , show_progress_bar=False, normalize_embeddings=True )
torch.save( embedding , './embeds/a' )
a = embedding
doc = getText( './axis/s' )
embedding = sentence_model.encode( doc , show_progress_bar=False, normalize_embeddings=True )
torch.save( embedding , './embeds/s' )
s = embedding
def zxy( doc ):
global v, a, s
if not os.path.exists( './embeds/s' ):
axis() # run this to setup axis embeddings
else:
if not 'v' in globals() :
print( "loading axes from embeds" )
v = torch.load( './embeds/v' )
a = torch.load( './embeds/a' )
s = torch.load( './embeds/s' )
embedding = sentence_model.encode( doc , show_progress_bar=False , normalize_embeddings=True )
# torch.save( embedding , './embeds/new' )
z = ( 1.0 - embedding @ s ) / 2.0 # level 0 on top
x = ( 1.0 - embedding @ a ) / 2.0 # ring 0 in the middle
y = ( embedding @ v + 1.0 ) / 2.0 # sector 0 at twelve oclock
# add one to make positive / divide by two to make range 0-1
scale = 1
levels = 44
rings = 22
sectors = 44 * 4
zxy = [ numpy.rint( scale * levels * z ) , numpy.rint( scale * rings * x ) , numpy.rint( scale * sectors * y ) ]
return f"""L{ str( int( zxy[ 0 ] ) ) }/{ str( int( zxy[ 1 ] ) ) }/{ str( int( zxy[ 2 ] ) ) }
es={ embedding @ s } ex={ embedding @ a } ey={ embedding @ v }
z={ z } x={ x } y={ y }
{scale} {levels} {rings} {sectors}
"""
#iface = gr.Interface(fn=zxy, inputs="text", outputs="text")
#iface.launch()
#iface.launch(share=True) # make public