Advertisement
Fen1848

Untitled

Jan 27th, 2024
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.59 KB | None | 0 0
  1. Процесс — это просто экземпляр выполняемой программы, включая текущие значения счетчика команд, регистров и переменных.
  2.  
  3. т.е. программа, входные и выходные данные и состояние
  4. (!) Программа vs процесс - может быть один раз загружен код, но экземпляра 2!
  5.  
  6.  
  7.  
  8.  
  9.  
  10. ROOT + '/bin/libsearch_py_emulator_lib.so'
  11.  
  12.  
  13. #!/usr/bin/env python3
  14.  
  15. import embedder
  16. import lemmatizer
  17.  
  18. import ctypes
  19. import math
  20. import sys
  21.  
  22. ROOT = sys.argv[1]
  23.  
  24. so_object = ctypes.CDLL(ROOT + '/bin/libsearch_py_emulator_lib.so')
  25. embedder.init_so(so_object)
  26. so_object.EmbedText.restype = ctypes.POINTER(ctypes.c_float)
  27.  
  28. lemmatizer.init_so(so_object)
  29.  
  30. lemm_instance = lemmatizer.Instance(so_object, ROOT + '/third-party/aot')
  31. emb_instance = embedder.Instance(so_object, ROOT + '/data/e5/sentencepiece.bpe.model', ROOT + '/data/e5/traced_e5.pt')
  32.  
  33. for line in sys.stdin:
  34.     line = line.strip()
  35.     if not line:
  36.         continue
  37.  
  38.     src_emb = emb_instance(line)
  39.     lemm_emb = emb_instance(lemm_instance(line))
  40.  
  41.     assert len(src_emb) == len(lemm_emb)
  42.  
  43.     cos_dist = 0
  44.     norm_src = 0
  45.     norm_lem = 0
  46.     for sc, lc in zip(src_emb, lemm_emb):
  47.         cos_dist += sc * lc
  48.         norm_src += sc * sc
  49.         norm_lem += lc * lc
  50.  
  51.     cos_dist /= (math.sqrt(norm_src) * math.sqrt(norm_lem))
  52.     print(f'Src = {line}, emb = {lemm_instance(line)}, cos_dist = {cos_dist}')
  53.  
  54. lemm_instance.deinit()
  55. emb_instance.deinit()
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement