Files
Mehvar/src/modules/__pycache__/segmenter.cpython-312.pyc
T

25 lines
5.4 KiB
Plaintext
Raw Normal View History

2026-06-29 16:24:27 +03:30
Ë
nr>jõãó@ddlZddlZddlmZddlmZGdd«Zy)éN)ÚSentenceTransformer)Úcosine_similaritycó,eZdZdZdZdZdZddZy)Ú Segmentercó¸td«tdddi¬«|_td«|_td«|_td«|_td «y)
NzLoading models :zC:/Models/bge-m3Úuse_safetensorsF)Ú model_kwargszC:/Models/multilingual-e5-largezC:/Models/LaBSE_LocalzC:/Models/ParsRobertaz4 models loaded successfully)ÚprintrÚ model_bgeÚmodel_e5Ú model_labseÚmodel_parsroberta)Úselfs ú;/home/aliakbar/Desktop/Projects/Mehvar/modules/segmenter.pyÚ__init__zSegmenter.__init__sSÜ
Ð Ô,Ð-?ÐO`ÐbgÐNhÔiˆŒÜ+Ð,MÓŒ
Ü.Ð/FÓÔÜ!4Ð5LÓ!MˆÔä
Ðcóì|jj||g«}|jj||g«}|jj||g«}|jj||g«}t |dg|dg«dd}t |dg|dg«dd}t |dg|dg«dd} t |dg|dg«dd}
t
j||| |
g«S)uiمحاسبه میانگین شباهت کسینوسی از Û´ مدل برای دو متن داده شدهré)r Úencoder r
rrÚnpÚmean) rÚtext1Útext2Úemb_bgeÚemb_e5Ú emb_labseÚemb_parsrobertaÚsim_bgeÚsim_e5Ú sim_labseÚsim_parsrobertas rÚget_similaritieszSegmenter.get_similaritiessà—..×°¨Ó7ˆØ×% u¨e nÓØ×+¨U°E¨NÓ;ˆ Ø×À¸Óä# W¨Q¡Z L°7¸1±:°,ÓÑBÀ1ÑEˆÜ" F¨1¡I ¸±° Ó<¸QÑÑÜ% ¡| n°yÀ±|°nÓEÀaÑÑKˆ Ü+¨_¸QÑ-?Ð,@À?ÐSTÑCUÐBVÓWÐXYÑZÐ[\Ñ]ˆôw‰w˜ ¨°OÐErcóg}t|«}t|«D]o}||}t|dd«D]}|||k\r||}Œn||}t||«D]}|||k\r||}Œn|||z
|||z
z}|j|«Œq|S)uhمحاسبه عمق دره‌ها (Gap Scores) با Ø§Ø³ØªÙØ§Ø¯Ù‡ از قله‌های Ú†Ù¾ Ùˆ راستéÿÿÿÿ)ÚlenÚrangeÚappend) rÚ similaritiesÚ depth_scoresÚiÚ left_peakÚ
right_peakÚdepths rÚcalculate_depth_scoresz Segmenter.calculate_depth_scores!àˆ Ü  Ó ˆäq–ˆAØ$ Q™ˆ˜1˜b %Ø ? /Ø ,¨Q¡ð  & a™ˆ˜1˜a[Ø ‘? jÒ0Ø!-¨a¡‘Jáð   ¨a¡Ñ0°ZÀ,ÈqÁ/Ñ5QÑRˆ × Ñ  Õ &ð!ð$Ðrcó¸|jdd«}tjd|«Dcgc]#}|j«sŒ|j«Œ%}}|Scc}w)u0جداسازی متن اولیه به جملاتÚ
Ú u(?<=[.!?ØŸ]) +)ÚreplaceÚreÚsplitÚstrip)rÚtextÚsÚ sentencess rÚextract_sentenceszSegmenter.extract_sentences:sNà|‰|˜D &ˆÜ(*¯©Ð1BÀDÔ(IÓWÑ(I 1ÈQÏWÉWÍYQ—W‘W•YÐ(Iˆ ÐÐùòXs «AÁANcót|«}|dkr|gSg}t|dz
«D].}|j||||dz«}|j|«Œ0|j |«} |rrd|cxkr|krgnndt j | «|dz
d}
t|
«}
g} d} |
D]}
| j|| |
dz«|
dz} Œ | j|| d«| St j| «}t j| «}|||zz}g} |dg}tt|««D]D}| ||k\r#| ||kDr| j|«||dzg}Œ.|j||dz«ŒF|r| j|«| S)u 
Ø¯Ø±ÛŒØ§ÙØª جملات یا واحدهای معنایی Ùˆ کلاسترینگ آن‌ها.
اگر پارامتر force_count ارسال شود، الگوریتم موظ٠است دقیقاً همان تعداد سگمنت تولید کند.