Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Процесс — это просто экземпляр выполняемой программы, включая текущие значения счетчика команд, регистров и переменных.
- т.е. программа, входные и выходные данные и состояние
- (!) Программа vs процесс - может быть один раз загружен код, но экземпляра 2!
- ROOT + '/bin/libsearch_py_emulator_lib.so'
- #!/usr/bin/env python3
- import embedder
- import lemmatizer
- import ctypes
- import math
- import sys
- ROOT = sys.argv[1]
- so_object = ctypes.CDLL(ROOT + '/bin/libsearch_py_emulator_lib.so')
- embedder.init_so(so_object)
- so_object.EmbedText.restype = ctypes.POINTER(ctypes.c_float)
- lemmatizer.init_so(so_object)
- lemm_instance = lemmatizer.Instance(so_object, ROOT + '/third-party/aot')
- emb_instance = embedder.Instance(so_object, ROOT + '/data/e5/sentencepiece.bpe.model', ROOT + '/data/e5/traced_e5.pt')
- for line in sys.stdin:
- line = line.strip()
- if not line:
- continue
- src_emb = emb_instance(line)
- lemm_emb = emb_instance(lemm_instance(line))
- assert len(src_emb) == len(lemm_emb)
- cos_dist = 0
- norm_src = 0
- norm_lem = 0
- for sc, lc in zip(src_emb, lemm_emb):
- cos_dist += sc * lc
- norm_src += sc * sc
- norm_lem += lc * lc
- cos_dist /= (math.sqrt(norm_src) * math.sqrt(norm_lem))
- print(f'Src = {line}, emb = {lemm_instance(line)}, cos_dist = {cos_dist}')
- lemm_instance.deinit()
- emb_instance.deinit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement