mghareeb32 commited on
Commit
d43b3ee
·
1 Parent(s): 028aa90

Better search UI.

Browse files
Files changed (5) hide show
  1. .streamlit/config.toml +5 -0
  2. app.py +37 -29
  3. complete.tmp +148 -60
  4. garood.tmp +148 -58
  5. wisdom_extract.py +78 -87
.streamlit/config.toml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ [theme]
2
+ backgroundColor="#222222"
3
+ secondaryBackgroundColor="#111111"
4
+ primaryColor="#44BBFF"
5
+ textColor="#FFFFFF"
app.py CHANGED
@@ -23,22 +23,20 @@ code {
23
  </style>
24
  """, unsafe_allow_html=True)
25
 
26
- # CACHING
27
- @st.cache_data
28
- def read_wisdom(fname):
29
- return wisdom_extract.read_wisdom(fname)
30
- @st.cache_data
31
- def wx_embedding_similarity(queries, list):
32
- return wisdom_extract.wx_embedding_similarity(queries, list)
33
- @st.cache_data
34
- def hf_embedding_similarity(queries, list):
35
- wisdom_extract.hf_embedding_similarity(queries, list)
36
- @st.cache_data
37
- def closest_embedding(queries, wisdom):
38
- return wisdom_extract.closest_embedding(queries, wisdom)
39
  @st.cache_data
40
- def query_transform(query):
41
- return wisdom_extract.query_transform(query)
 
 
42
 
43
  tabs = st.tabs(["بحث", "وزن", "إتمام"])
44
 
@@ -49,25 +47,35 @@ with tabs[0]:
49
  label="إبحث في الشعر",
50
  value=query,
51
  )
52
- st.divider()
53
- # FIND MATCHES
 
 
 
 
 
 
 
 
 
 
54
  table = []
55
- for score, verse, reason in closest_embedding(
56
- query_transform(query),
57
- read_wisdom("sample/1.wis.txt"),
58
- ):
59
- table.append([verse, f"{score * 100:.1f}%", reason])
60
- for idx, val in enumerate(table[:7]):
61
- verse, score, reason = val
62
- cols = st.columns([1, 8, 1, 1, 1])
63
  with cols[0]:
64
  st.write(idx)
65
  with cols[1]:
66
  st.write(verse)
67
  with cols[2]:
68
- st.write(score)
69
  with cols[3]:
70
- st.markdown("", help=reason[0][1])
 
 
71
 
72
  with tabs[1]:
73
  BH = garood.config()['bahr']['kamil_1']
@@ -78,7 +86,7 @@ with tabs[1]:
78
  label="قم بوزن الشطر",
79
  value=query,
80
  )
81
- st.divider()
82
  with cols[1]:
83
  st.selectbox("البحر", ["الكامل"], key="tab1")
84
  cols = st.columns([6, 3, 3])
@@ -105,7 +113,7 @@ with tabs[2]:
105
  with cols[1]:
106
  st.selectbox("البحر", ["الكامل"], key="tab2")
107
  with cols[0]:
108
- AR = wisdom_extract.allam("allam/shakl.txt", {"input": query}).strip()
109
  with st.spinner('جاري توليد الإقتراحات...'):
110
  poss = complete.gen(query)
111
  with st.spinner(f"جاري التصفية من {len(poss)} اقتراحا..."):
 
23
  </style>
24
  """, unsafe_allow_html=True)
25
 
26
+
27
+ @st.cache_resource
28
+ def sim_model():
29
+ return wisdom_extract.hf_model()
30
+
31
+ POETS = {
32
+ "sample/1.wis.txt": "زهير بن أبي سلمى",
33
+ "sample/2.wis.txt": "المتنبي",
34
+ }
 
 
 
 
35
  @st.cache_data
36
+ def wisdom():
37
+ return wisdom_extract.read_wisdom(
38
+ sim_model(), POETS.keys())
39
+
40
 
41
  tabs = st.tabs(["بحث", "وزن", "إتمام"])
42
 
 
47
  label="إبحث في الشعر",
48
  value=query,
49
  )
50
+
51
+ with st.spinner('جاري تحميل النموذج...'):
52
+ sim_model()
53
+ with st.spinner('جاري تجهيز الأشعار المحفوظة...'):
54
+ _, verses, meaning_embed, reason, srcs = wisdom()
55
+ with st.spinner('جاري تحليل كلمات البحث...'):
56
+ queries = wisdom_extract.query_transform(query)
57
+ with st.spinner('جاري البحث في الأشعار...'):
58
+ queries_embed = sim_model().encode(queries)
59
+ closest_poems = wisdom_extract.closest_embedding(
60
+ sim_model(), queries_embed, verses, meaning_embed, reason, srcs)
61
+
62
  table = []
63
+ for score, verse, reason, src in closest_poems:
64
+ table.append([verse, f"{score * 100:.1f}%", reason, src])
65
+
66
+ for idx, val in enumerate(table[:5]):
67
+ verse, score, reason, src = val
68
+ cols = st.columns([.5, 6.5, 2.5, 1, .5])
 
 
69
  with cols[0]:
70
  st.write(idx)
71
  with cols[1]:
72
  st.write(verse)
73
  with cols[2]:
74
+ st.write(f"– {POETS[src]}")
75
  with cols[3]:
76
+ st.write(score)
77
+ with cols[4]:
78
+ st.markdown("", help="\n\n".join(r[1] for i, r in enumerate(reason) if i < 3))
79
 
80
  with tabs[1]:
81
  BH = garood.config()['bahr']['kamil_1']
 
86
  label="قم بوزن الشطر",
87
  value=query,
88
  )
89
+
90
  with cols[1]:
91
  st.selectbox("البحر", ["الكامل"], key="tab1")
92
  cols = st.columns([6, 3, 3])
 
113
  with cols[1]:
114
  st.selectbox("البحر", ["الكامل"], key="tab2")
115
  with cols[0]:
116
+ AR = wisdom_extract.allam("allam/shakl.txt", {"input": query}).strip()
117
  with st.spinner('جاري توليد الإقتراحات...'):
118
  poss = complete.gen(query)
119
  with st.spinner(f"جاري التصفية من {len(poss)} اقتراحا..."):
complete.tmp CHANGED
@@ -1,63 +1,151 @@
1
  SUGGESTING...
2
- كم حدث الأصحاب عن فتانا
3
- كم حدث الأصحاب عن هواننا
4
- كم حدث الأصحاب عن مكاننا
5
- كم حدث الأصحاب عن مفاخر
6
- كم حدث الأصحاب عن حكايات الجدات
7
- كم حدث الأصحاب عن علوم الطبيعة
8
- كم حدث الأصحاب عن قصص من قبل
9
- كم حدث الأصحاب من حركاته
10
- كم حدث الأصحاب عن آراء في السياسة
11
- كم حدث الأصحاب عن مزايدة
12
- كم حدث الأصحاب عما في غد
13
- كم حدث الأصحاب عن جرحكم
14
- كم حدث الأصحاب عن حبكم
15
- كم حدث الأصحاب عن زماننا
16
- كم حدث الأصحاب عن حرب وكدر
17
- كم حدث الأصحاب عن بطولات الأبطال
18
- كم حدث الأصحاب عن يومكم
19
- كم حدث الأصحاب عن أسرار
20
- كم حدث الأصحاب عن علم وخبر
21
- كم حدث الأصحاب عن حب وفرح
22
- كم حدث الأصحاب من بادرة
23
- كم حدث الأصحاب عن أشياخه
24
- كم حدث الأصحاب عن خير و شر
25
- كم حدث الأصحاب عن قصص التضحية
26
- كم حدث الأصحاب عن قصص الغابرين
27
- كم حدث الأصحاب عن تجارب السنين
28
- كم حدث الأصحاب عن نقاشات بين الدول
29
- كم حدث الأصحاب عن أساتذته
30
- كم حدث الأصحاب عن مغامرة
31
- كم حدث الأصحاب عن لقائنا
32
  TASHKEELING...
33
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ فَتَانَا
34
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ جَرْحِكُمْ
35
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ حُبِّكُمْ
36
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ حِكَايَاتِ الْجَدَّاتِ
37
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عُلُومِ الطَّبِيعَةِ
38
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ زَمَانِنَا
39
- كَمْ حَدَّثَ الْأَصْحَابَ عَنْ مَفَاخِرِ
40
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ مَزَايِدَةٍ
41
- كَمْ حَدْثَ الْأَصْحَابُ عَمَّا فِي غَدِ
42
- كَمْ حَدَثَ الْأَصْحَابَ مِنْ حَرَكَاتِهِ
43
- كَمْ حَدَّثَ الْأَصْحَابُ عَنِ حَرْبٍ وَكَدَرِ
44
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ قِصَصٍ مِنْ قَبْلُ
45
- كَمْ حَدَّثَ الْأَصْحَابَ عَنْ بَطَوَلَاتِ الْأَبْطَالِ
46
- كَمْ حَدَّثَ الْأَصْحَابُ عَن مَكَانِنا
47
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ أَرَاء فِي السِِّيَاسَةِ
48
- كَمْ حَدَّثَ الْأَصْحَابَ عَنْ هَوَانِنَا
49
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ أَسْرَارِ
50
- كَمْ حَدَّثَ الْأَصْحَابُ عَنِ أُسَاتِذَتِهِ
51
- كَمْ حَدَثَ الْأَصْحَابَ مِنْ بَادِرَةٍ
52
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ مُغَامَرَةٍ
53
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ أَشْيَاخِهِ
54
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ تَجَارُبِ السِّنِينَ
55
- كَمْ حَدَّثَ الْأَصْحَابَ عَن خَيْرٍ وَ شَرٍّ
56
- كَمْ حَدَّثَ الْأَصْحَابَ عَنْ قِصَصِ الْغَابِرِينَ
57
- كَمْ حَدَثَ الْأَصْحَابُ عَن قَصَصِ التَّضْحِيَةِ
58
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ نِقَاشَاتٍ بَيْنَ الدُّوَلِ
59
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ لِقَائِنَا
60
- كَمْ حَدَّثَ الْأَصْحَابُ عَن يَوْمِكُمْ * كَمْ حَدَّثَ الْأَحْصَابُ عَن يَوْمِكُمْ
61
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عِلْمٍ وَخَبَرِ
62
- كَمْ حَدَثَ الْأَصْحَابُ عَنْ حُبٍّ وَفَرَحِ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  EVALUATING...
 
1
  SUGGESTING...
2
+ كم حدث الأصحاب أن لا يظلموا
3
+ كم حدث الأصحاب عن ذكر الحبيبة
4
+ كم حدث الأصحاب أن لا يستنكفوا
5
+ كم حدث الأصحاب في كل مجلس
6
+ كم حدث الأصحاب أن لا يهاجروا
7
+ كم حدث الأصحاب في العمل
8
+ كم حدث الأصحاب في أي موطن
9
+ كم حدث الأصحاب في كل منتدى
10
+ كم حدث الأصحاب يوم الكريهة
11
+ كم حدث الأصحاب من خبر قديم
12
+ كم حدث الأصحاب في الأدب
13
+ كم حدث الأصحاب من عجب
14
+ كم حدث الأصحاب في حومة الوغى
15
+ كم حدث الأصحاب عن رحل
16
+ كم حدث الأصحاب يا سعد بعدهم
17
+ كم حدث الأصحاب يا سعد عنهم
18
+ كم حدث الأصحاب أن لا يفشوا
19
+ كم حدث الأصحاب عن يوم عصيب
20
+ كم حدث الأصحاب عن أمر فهاجوا
21
+ كم حدث الأصحاب في الخجل
22
+ كم حدث الأصحاب من خبر بعيد
23
+ كم حدث الأصحاب أن لا يتطاولوا
 
 
 
 
 
 
 
 
24
  TASHKEELING...
25
+ كَمْ حَدَّثَ الْأَصْحَابَ عَنْ رَحِلِ
26
+ كَمْ حَدَثَ الْأَصْحَابُ يَوْمَ الْكَرِيهَةِ
27
+ كَمْ حَدَّثَ الْأَصْحَابُ يَا سَعْدُ بَعْدَهُمْ
28
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي أَيِّ مَوَاطِنِ
29
+ كَمْ حَدَثَ الْأَصْحَابُ مِنْ خَبَرٍ قَدِيمِ
30
+ كَمْ حَدَّثَ الْأَصْحَابُ أَنَّ لَا يَظْلُمُوٓا
31
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي الْعَمَلِ
32
+ كَمْ حَدَثَ الْأَصْحَابُ يَا سَعْدُ عَنْهُمْ
33
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي كُلِّ مَجْلِسِ
34
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي حَوْمَةِ الْوَغَى
35
+ كَمْ حَدَثَ الْأَصْحَابُ فِي الْأَدَبِ
36
+ كَمْ حَدَثَ الْأَصْحَابُ فِي كُلِّ مُنْتَدَى * مِنْ حُزْنِ مُوَلَّهِ أَوِ مِنْ سُحْرٍ مُسَتَجِدِ
37
+ كَمْ حَدَثَ الْأَصْحَابُ مِنْ عَجَبِ
38
+ كَمْ حَدَّثَ الْأَصْحَابُ أَنْ لَا يُهَاجِرُوا
39
+ كَمْ حَدَّثَ الْأَصْحَابَ أَنْ لَا يَسْتَنْكِفُوا
40
+ كَمْ حَدَّثَ الْأَصْحَابَ عَنْ ذِكْرِ الْحَبِيبَةِ
41
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ يَوْمٍ عَصِيبِ
42
+ كَمْ حَدَثَ الْأَصْحَابُ فِي الْخَجَلِ
43
+ كَمْ حَدَثَ الْأَصْحَابُ عَنْ أَمْرٍ فَشَبُّوا
44
+ كَمْ حَدَّثَ الْأَصْحَابَ أَنْ لَا يُفْشُوا
45
+ كَمْ حَدَّثَ الْأَصْحَابُ مِنْ خَبَرٍ بَعِيدِ
46
+ كَمْ حَدَّثَ الْأَصْحَابُ أَنْ لَا يَتَطَاوَلُوا
47
+ SUGGESTING...
48
+ كم حدث الأصحاب عن مجد لنا
49
+ كم حدث الأصحاب عني يا ترى
50
+ كم حدث الأصحاب عن حب
51
+ كم حدث الأصحاب عني بالحجا
52
+ كم حدث الأصحاب عني بالنجا
53
+ كم حدث الأصحاب عن ماضٍ لنا
54
+ كم حدث الأصحاب عن حرب لنا
55
+ كم حدث الأصحاب عني في الملا
56
+ كم حدث الأصحاب عني بالغنى
57
+ كم حدث الأصحاب عني من جفا
58
+ كم حدث الأصحاب عني من وفا
59
+ كم حدث الأصحاب في غشه
60
+ كم حدث الأصحاب في حلمه
61
+ كم حدث الأصحاب في عقله
62
+ كم حدث الأصحاب عن كآبة
63
+ كم حدث الأصحاب عن محبوبه
64
+ كم حدث الأصحاب عن ثأر لنا
65
+ كم حدث الأصحاب عن ألم
66
+ كم حدث الأصحاب عني بالشجا
67
+ كم حدث الأصحاب في يومه
68
+ كم حدث الأصحاب في سيره
69
+ كم حدث الأصحاب عني بالهوى
70
+ كم حدث الأصحاب عن يوم لنا
71
+ TASHKEELING...
72
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ مَحْبُوبِهِ
73
+ كَمْ حَدَثَ الْأَصْحَابُ عَنِّي يَا تَرَى
74
+ كَمْ حَدَثَ الْأَصْحَابُ فِي عَقْلِهِ
75
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ حُبِّ
76
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي مِنْ وَفَا
77
+ كَمْ حَدَثَ الْأَصْحَابُ عَنِّي مِنْ جَفَا
78
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي فِي الْمَلَاحَمِيدُ
79
+ كَمْ حَدَّثَ الْأَصْحَابُ عَن مَجْدٍ لَنَا
80
+ كَمْ حَدَثَ الْأَصْحَابُ عَنْ حَرْبٍ لَنَا
81
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ كَأْبَةٍ
82
+ كَمْ حَدَثَ الْأَصْحَابُ عَنِّي بِاْلْغِنَى * أَمْ كَمْ تَغَطَّى مِنْكُمُ الْهَائِمِ
83
+ كَمْ حَدَثَ الْأَصْحَابُ فِي حُلُمِهِ
84
+ كَمْ حَدَّثَ الْأَصْحَابَ فِي غِشِّهِ
85
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ مَااضٍ لَنَا
86
+ كَمْ حَدَثَ الْأَصْحَابُ عَنِّي بِالْحَجَا * مَا ذَاكَ فِي خِصَالِ الْكَلْبِ مِنْ نَزَقِ
87
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي بِالنَّجَا * كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي بِالنَّجَا * كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي بِالنَّجَا
88
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنِّي بِالشَّجَا
89
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ يَوْمٍ لَنَا
90
+ كَمْ حَدَثَ الْأَصْحَابُ عَنْ أَلَمِ
91
+ كَمْ حَدَّثَ الْأَصْحَاب�� عَنْ ثَأْرِ لَنَا
92
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنّي بِالهَوَى * مِنْ مُتَغَنٍّ سَامَحٍ سَخِينِ
93
+ كَمْ حَدَثَ الْأَصْحَابُ فِي يَوْمِهِ
94
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي سَيْرِهِ
95
+ SUGGESTING...
96
+ كم حدث الأصحاب في يوم مباح
97
+ كم حدث الأصحاب على متن الحصان
98
+ كم حدث الأصحاب يا امرأة؟
99
+ كم حدث الأصحاب عن عمر
100
+ كم حدث الأصحاب عن ماضيينا
101
+ كم حدث الأصحاب عن خير عيشة
102
+ كم حدث الأصحاب عن علي
103
+ كم حدث الأصحاب في خير بلدة
104
+ كم حدث الأصحاب عن عمرو
105
+ كم حدث الأصحاب عن يوم اللقاء
106
+ كم حدث الأصحاب يا رفاق؟
107
+ كم حدث الأصحاب يا هذا؟
108
+ كم حدث الأصحاب يا فتي؟
109
+ كم حدث الأصحاب عن جعفر
110
+ كم حدث الأصحاب حتى بزغ نور الصباح
111
+ كم حدث الأصحاب في ماض الزمان
112
+ كم حدث الأصحاب حتى نامت العيون
113
+ كم حدث الأصحاب عن بكر
114
+ كم حدث الأصحاب عن خائن العصر
115
+ كم حدث الأصحاب عن وقت الهناء
116
+ كم حدث الأصحاب عن يوم الفراق
117
+ كم حدث الأصحاب يا رجل؟
118
+ كم حدث الأصحاب في شر ساعة
119
+ كم حدث الأصحاب في يوم عراك
120
+ كم حدث الأصحاب عن طيب مجلس
121
+ كم حدث الأصحاب عن وقت الصفاء
122
+ كم حدث الأصحاب يا قوم؟
123
+ TASHKEELING...
124
+ كَمْ حَدَثَ الْأَصْحَابُ يَا هَذَا
125
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عَمْرُو
126
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عَلِيِّ
127
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ جَعْفَرِ
128
+ كَمْ حَدَّثَ الْأَصْحَابَ يَا فَتىً
129
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عُمَرَ
130
+ كَمْ حَدَثَ الْأَصْحَابُ يَا امْرَأَةَ
131
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ مَاضِيِينَا
132
+ كَمْ حَدَّثَ الْأَصْحَابَ عَلَى مُتْنِ الْحِصَانِ
133
+ كَمْ حَدَّثَ الْأَصْحَابُ حَتَّى بَزَغَ نُورُ الصَّبَاحِ
134
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي مَا ضِ الْزَّمَانِ
135
+ كَمْ حَدَّثَ الْأَصْحَابُ عَن يَومِ اللِّقَاء
136
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي خَيْرِ بَلْدَةٍ * لَمْ أَرَ فِيهَا كَغَدِيرٍ وَحَوْحَلِ
137
+ كَمْ حَدَثَ الْأَصْحَابُ يَا رِفَاقِ؟
138
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي يَوْمِ مُبَاحِ
139
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ خَيْرِ عِشْرَةٍ * كَمْ حَدَّثَ الْأَصْحَابُ عَنْ خَيْرِ عِشْرَةٍ * كَمْ حَدَّثَ الْأَصْحَابُ عَنْ خَيْرِ عِشْرَةٍ
140
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ وَقْتِ الْهَنَاءِ
141
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ بَكْرِ
142
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ يَوْمِ الْفِرَاقِ
143
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ خَائِنِ الْعَصْرِ
144
+ كَمْ حَدَّثْتُ الْأَصْحَابَ حَتَّى نَامَتْ الْعُيُونُ
145
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي يَوْمِ عِرَاكِ
146
+ كَمْ حَدَثَ الْأَصْحَابُ يَا قَوْمُ
147
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ وَقْتِ الصَّفَاءِ
148
+ كَمْ حَدَّثَ الْأَصْحَابُ فِي شَرِّ سَاعَةٍ
149
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ طَيِّبِ مَجْلِسِ
150
+ كَمْ حَدَّثَ الْأَصْحَابُ يَا رَجُلُ؟
151
  EVALUATING...
garood.tmp CHANGED
@@ -1,3 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  هَلْ غَادَرَ الشُّعَرَاءُ مِنْ مُتَرَدَّمِ
2
  a_axaaxx_xaaxoi_oaa_xi
3
  HLĠADRALŠŠGRAĀMNMTRDDM
@@ -10,61 +46,115 @@ HLĠADRALŠŠGRAĀMNMTRDDM
10
  42 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
11
  51 HLĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
12
  HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
13
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ فَتَانَا
14
- a_a_xax_a_axoa_aaxax
15
- KMḤDDṮALĀṢḤABGNFTANA
16
- 82 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_F#_TNA_
17
- 82 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_F#_TNA_
18
- 91 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_F#_TNA_
19
- 91 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_F#_TNA_
20
- 91 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_F#_TNA_
21
- 91 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_F#_TNA_
22
- 95 KM_ḤD_DṮA_L#_Ā#_ṢḤA_BGNF_TNA_
23
- 100 KMḤD_DṮL_ĀṢḤA_BG#_N#_F#_TNA_
24
- 100 KMḤD_DṮL_ĀṢḤA_BG#_N#_F#_TNA_
25
- 104 KMḤD_DṮA_L##_ṢḤA_BGNF_TNA_
26
- 119 KM_ḤD_DṮA_LĀṢ#_ḤB#_GNF#_TNA_
27
- 128 KMḤD_DṮA_LĀṢ#_ḤB#_GNF#_TNA_
28
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ جَرْحِكُمْ
29
- a_a_xax_a_axoa_a_io_
30
- KMḤDDṮALĀṢḤABGNJRḤKM
31
- 37 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_JR_Ḥ#_KM#_
32
- 37 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_JR_Ḥ#_KM#_
33
- 46 KMḤD_DṮL_ĀṢ_ḤA_BGN_JR_Ḥ#_KM#_
34
- 46 KMḤD_DṮL_ĀṢ_ḤA_BGN_JR_Ḥ#_KM#_
35
- 46 KM_ḤD_DṮL_ĀṢḤA_BGN_JR_Ḥ#_KM#_
36
- 46 KM_ḤD_DṮL_ĀṢḤA_BGN_JR_Ḥ#_KM#_
37
- 46 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_JRḤ#_KM#_
38
- 46 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_JRḤ#_KM#_
39
- 55 KMḤD_DṮL_ĀṢḤA_BGN_JR_Ḥ#_KM#_
40
- 55 KMḤD_DṮL_ĀṢḤA_BGN_JR_Ḥ#_KM#_
41
- 55 KMḤD_DṮL_ĀṢ_ḤA_BGN_JRḤ#_KM#_
42
- 55 KMḤD_DṮL_ĀṢ_ḤA_BGN_JRḤ#_KM#_
43
- 55 KM_ḤD_DṮL_ĀṢḤA_BGN_JRḤ#_KM#_
44
- 55 KM_ḤD_DṮL_ĀṢḤA_BGN_JRḤ#_KM#_
45
- 64 KMḤD_DṮL_ĀṢḤA_BGN_JRḤ#_KM#_
46
- 64 KMḤD_DṮL_ĀṢḤA_BGN_JRḤ#_KM#_
47
- KM_ḤD_DṮL_ĀṢ_ḤA_BGN_JR_Ḥ#_KM#_
48
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ حُبِّكُمْ
49
- a_a_xax_a_axoa_o_xo_
50
- KMḤDDṮALĀṢḤABGNḤBBKM
51
- 37 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_ḤB_B#_KM#_
52
- 37 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_ḤB_B#_KM#_
53
- 46 KMḤD_DṮL_ĀṢ_ḤA_BGN_ḤB_B#_KM#_
54
- 46 KMḤD_DṮL_ĀṢ_ḤA_BGN_ḤB_B#_KM#_
55
- 46 KM_ḤD_DṮL_ĀṢḤA_BGN_ḤB_B#_KM#_
56
- 46 KM_ḤD_DṮL_ĀṢḤA_BGN_ḤB_B#_KM#_
57
- 46 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_ḤBB#_KM#_
58
- 46 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_ḤBB#_KM#_
59
- 55 KMḤD_DṮL_ĀṢḤA_BGN_ḤB_B#_KM#_
60
- 55 KMḤD_DṮL_ĀṢḤA_BGN_ḤB_B#_KM#_
61
- 55 KMḤD_DṮL_ĀṢ_ḤA_BGN_ḤBB#_KM#_
62
- 55 KMḤD_DṮL_ĀṢ_ḤA_BGN_ḤBB#_KM#_
63
- 55 KM_ḤD_DṮL_ĀṢḤA_BGN_ḤBB#_KM#_
64
- 55 KM_ḤD_DṮL_ĀṢḤA_BGN_ḤBB#_KM#_
65
- 64 KMḤD_DṮL_ĀṢḤA_BGN_ḤBB#_KM#_
66
- 64 KMḤD_DṮL_ĀṢḤA_BGN_ḤBB#_KM#_
67
- KM_ḤD_DṮL_ĀṢ_ḤA_BGN_ḤB_B#_KM#_
68
- كَمْ حَدَّثَ الْأَصْحَابُ عَنْ حِكَايَاتِ الْجَدَّاتِ
69
- a_a_xax_a_axoa_iaxaxix_a_xxi
70
- KMḤDDṮALĀṢḤABGNḤKAYATALJDDAT
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ هَلْ غَادَرَ الشُّعَرَاءُ مِنْ مُتَرَدَّمِ
2
+ a_axaaxx_xaaxoi_oaa_xi
3
+ HLĠADRALŠŠGRAĀMNMTRDDM
4
+ 24 HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
5
+ 33 HLĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
6
+ 33 HL_ĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
7
+ 33 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
8
+ 42 HLĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
9
+ 42 HLĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
10
+ 42 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
11
+ 51 HLĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
12
+ HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
13
+ هَلْ غَادَرَ الشُّعَرَاءُ مِنْ مُتَرَدَّمِ
14
+ a_axaaxx_xaaxoi_oaa_xi
15
+ HLĠADRALŠŠGRAĀMNMTRDDM
16
+ 24 HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
17
+ 33 HLĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
18
+ 33 HL_ĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
19
+ 33 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
20
+ 42 HLĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
21
+ 42 HLĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
22
+ 42 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
23
+ 51 HLĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
24
+ HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
25
+ هَلْ غَادَرَ الشُّعَرَاءُ مِنْ مُتَرَدِّمِ
26
+ a_axaaxx_xaaxoi_oaa_xi
27
+ HLĠADRALŠŠGRAĀMNMTRDDM
28
+ 24 HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
29
+ 33 HLĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
30
+ 33 HL_ĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
31
+ 33 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
32
+ 42 HLĠA_DRŠ_ŠGRA_ĀMN_MT_RD_DM#_
33
+ 42 HLĠA_DRŠ_ŠG_RA_ĀMN_MTRD_DM#_
34
+ 42 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
35
+ 51 HLĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
36
+ HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
37
  هَلْ غَادَرَ الشُّعَرَاءُ مِنْ مُتَرَدَّمِ
38
  a_axaaxx_xaaxoi_oaa_xi
39
  HLĠADRALŠŠGRAĀMNMTRDDM
 
46
  42 HL_ĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
47
  51 HLĠA_DRŠ_ŠG_RA_ĀMN_MT_RD_DM#_
48
  HL_ĠA_DRŠ_ŠGRA_ĀMN_MTRD_DM#_
49
+ كَمْ حَدَثَ الْأَصْحَابُ يَا هَذَا
50
+ a_aaax_a_axoaxaax
51
+ KMḤDṮALĀṢḤABYAHḎA
52
+ 83 KM_Ḥ#_DṮA_L##_ṢḤA_B#_YA_HḎA_
53
+ 92 KMḤ#_DṮA_L##_ṢḤA_B#_YA_HḎA_
54
+ 106 K#_M#_ḤD#_ṮLĀ#_ṢḤA_B#_YA_HḎA_
55
+ 106 K#_M#_ḤD#_ṮLĀ#_ṢḤA_B#_YA_HḎA_
56
+ 107 K#_M#_ḤD#_ṮA_L#_ĀṢ#_ḤBYA_HḎA_
57
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عَمْرُو
58
+ a_a_xax_a_axoa_a_ox
59
+ KMḤDDṮALĀṢḤABGNGMRW
60
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_G#_M#_RW#_
61
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_G#_M#_RW#_
62
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_GM_RW#_
63
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_GM_RW#_
64
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BGN_G#_M#_RW#_
65
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BGN_G#_M#_RW#_
66
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_GM_RW#_
67
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_GM_RW#_
68
+ 59 KM_ḤD_DṮL_ĀṢḤA_BGN_G#_M#_RW#_
69
+ 59 KM_ḤD_DṮL_ĀṢḤA_BGN_G#_M#_RW#_
70
+ 59 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_GM_RW#_
71
+ 59 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_GM_RW#_
72
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NGM#_RW#_
73
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NGM#_RW#_
74
+ 68 KMḤD_DṮL_ĀṢḤA_BGN_G#_M#_RW#_
75
+ 68 KMḤD_DṮL_ĀṢḤA_BGN_G#_M#_RW#_
76
+ 68 KMḤD_DṮL_ĀṢḤA_BG#_N#_GM_RW#_
77
+ 68 KMḤD_DṮL_ĀṢḤA_BG#_N#_GM_RW#_
78
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BG#_NGM#_RW#_
79
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BG#_NGM#_RW#_
80
+ 68 KM_ḤD_DṮL_ĀṢḤA_BG#_NGM#_RW#_
81
+ 68 KM_ḤD_DṮL_ĀṢḤA_BG#_NGM#_RW#_
82
+ 77 KMḤD_DṮL_ĀṢḤA_BG#_NGM#_RW#_
83
+ 77 KMḤD_DṮL_ĀṢḤA_BG#_NGM#_RW#_
84
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عَلِيِّ
85
+ a_a_xax_a_axoa_ai_x
86
+ KMḤDDṮALĀṢḤABGNGLYY
87
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_G#_L#_YY#_
88
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_G#_L#_YY#_
89
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BGN_G#_L#_YY#_
90
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BGN_G#_L#_YY#_
91
+ 68 KM_ḤD_DṮL_ĀṢḤA_BGN_G#_L#_YY#_
92
+ 68 KM_ḤD_DṮL_ĀṢḤA_BGN_G#_L#_YY#_
93
+ 68 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NGL#_YY#_
94
+ 68 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NGL#_YY#_
95
+ 77 KMḤD_DṮL_ĀṢḤA_BGN_G#_L#_YY#_
96
+ 77 KMḤD_DṮL_ĀṢḤA_BGN_G#_L#_YY#_
97
+ 77 KMḤD_DṮL_ĀṢ_ḤA_BG#_NGL#_YY#_
98
+ 77 KMḤD_DṮL_ĀṢ_ḤA_BG#_NGL#_YY#_
99
+ 77 KM_ḤD_DṮL_ĀṢḤA_BG#_NGL#_YY#_
100
+ 77 KM_ḤD_DṮL_ĀṢḤA_BG#_NGL#_YY#_
101
+ 86 KMḤD_DṮL_ĀṢḤA_BG#_NGL#_YY#_
102
+ 86 KMḤD_DṮL_ĀṢḤA_BG#_NGL#_YY#_
103
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ جَعْفَرِ
104
+ a_a_xax_a_axoa_a_ai
105
+ KMḤDDṮALĀṢḤABGNJGFR
106
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_J#_G#_FR#_
107
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BGN_J#_G#_FR#_
108
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_JG_FR#_
109
+ 50 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_JG_FR#_
110
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BGN_J#_G#_FR#_
111
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BGN_J#_G#_FR#_
112
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_JG_FR#_
113
+ 59 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_JG_FR#_
114
+ 59 KM_ḤD_DṮL_ĀṢḤA_BGN_J#_G#_FR#_
115
+ 59 KM_ḤD_DṮL_ĀṢḤA_BGN_J#_G#_FR#_
116
+ 59 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_JG_FR#_
117
+ 59 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_JG_FR#_
118
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NJG#_FR#_
119
+ 59 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_NJG#_FR#_
120
+ 68 KMḤD_DṮL_ĀṢḤA_BGN_J#_G#_FR#_
121
+ 68 KMḤD_DṮL_ĀṢḤA_BGN_J#_G#_FR#_
122
+ 68 KMḤD_DṮL_ĀṢḤA_BG#_N#_JG_FR#_
123
+ 68 KMḤD_DṮL_ĀṢḤA_BG#_N#_JG_FR#_
124
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BG#_NJG#_FR#_
125
+ 68 KMḤD_DṮL_ĀṢ_ḤA_BG#_NJG#_FR#_
126
+ 68 KM_ḤD_DṮL_ĀṢḤA_BG#_NJG#_FR#_
127
+ 68 KM_ḤD_DṮL_ĀṢḤA_BG#_NJG#_FR#_
128
+ 77 KMḤD_DṮL_ĀṢḤA_BG#_NJG#_FR#_
129
+ 77 KMḤD_DṮL_ĀṢḤA_BG#_NJG#_FR#_
130
+ كَمْ حَدَّثَ الْأَصْحَابَ يَا فَتىً
131
+ a_a_xax_a_axaaxaa_
132
+ KMḤDDṮALĀṢḤABYAFTN
133
+ 70 KM_ḤD_DṮA_L#_Ā#_ṢḤA_B#_YA_FTN_
134
+ 79 KMḤD_DṮA_L#_Ā#_ṢḤA_B#_YA_FTN_
135
+ 91 KM_ḤD_DṮA_LĀṢ#_ḤB#_YA_F#_TN#_
136
+ 91 KM_ḤD_DṮA_L#_Ā#_ṢḤA_BYF#_TN#_
137
+ 100 KMḤD_DṮA_LĀṢ#_ḤB#_YA_F#_TN#_
138
+ 100 KMḤD_DṮA_L#_Ā#_ṢḤA_BYF#_TN#_
139
+ 108 K#_M#_ḤD#_DṮL#_ĀṢ#_ḤBYA_FTN_
140
+ 108 K#_M#_ḤD#_DṮL#_ĀṢ#_ḤBYA_FTN_
141
+ 132 KMḤ#_DD#_ṮLĀ#_ṢḤA_BYF#_TN#_
142
+ 132 KMḤ#_DD#_ṮLĀ#_ṢḤA_BYF#_TN#_
143
+ كَمْ حَدَّثَ الْأَصْحَابُ عَنْ عُمَرَ
144
+ a_a_xax_a_axoa_oaa
145
+ KMḤDDṮALĀṢḤABGNGMR
146
+ 63 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_G#_MR#_
147
+ 63 KM_ḤD_DṮL_ĀṢ_ḤA_BG#_N#_G#_MR#_
148
+ 72 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_G#_MR#_
149
+ 72 KMḤD_DṮL_ĀṢ_ḤA_BG#_N#_G#_MR#_
150
+ 72 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_G#_MR#_
151
+ 72 KM_ḤD_DṮL_ĀṢḤA_BG#_N#_G#_MR#_
152
+ 76 KM_ḤD_DṮA_L#_Ā#_ṢḤA_BGNG_MR#_
153
+ 81 KMḤD_DṮL_ĀṢḤA_BG#_N#_G#_MR#_
154
+ 81 KMḤD_DṮL_ĀṢḤA_BG#_N#_G#_MR#_
155
+ 85 KMḤD_DṮA_L#_Ā#_ṢḤA_BGNG_MR#_
156
+ 100 KM_ḤD_DṮA_LĀṢ#_ḤB#_GNG#_MR#_
157
+ 109 KMḤD_DṮA_LĀṢ#_ḤB#_GNG#_MR#_
158
+ كَمْ حَدَثَ الْأَصْحَابُ يَا امْرَأَةَ
159
+ a_aaax_a_axoaxx_aaa
160
+ KMḤDṮALĀṢḤABYAAMRĀT
wisdom_extract.py CHANGED
@@ -30,40 +30,44 @@ def read_poems(poem_fname):
30
  ans[-1].append(txt)
31
  return ans
32
 
33
- def read_wisdom(fname):
34
- with open(fname, "r", encoding="utf-8") as file:
35
- ans = []
36
- for line in file:
37
- txt = line.strip()
38
- if len(txt) == 0: continue
39
- if "*" in txt:
40
- ans.append({"verse": txt, "reword": [], "wisdom": []})
41
- elif txt.startswith("= "):
42
- ans[-1]["reword"].append(txt[2:])
43
- elif txt.startswith("- "):
44
- ans[-1]["wisdom"].append(txt[2:])
45
- return ans
46
-
47
- def wx_embedding():
48
- from ibm_watsonx_ai import Credentials
49
- from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames
50
- from ibm_watsonx_ai.foundation_models import Embeddings
51
-
52
- embed_params = {
53
- EmbedTextParamsMetaNames.TRUNCATE_INPUT_TOKENS: 3,
54
- EmbedTextParamsMetaNames.RETURN_OPTIONS: {"input_text": True},
55
- }
 
 
 
 
 
 
 
 
 
 
 
56
 
57
- watsonx_embedding = Embeddings(
58
- model_id="intfloat/multilingual-e5-large",
59
- credentials=Credentials(
60
- api_key = 'iYwxSbn8Kxe3UjV2OMS9tSe1dxPlgndTamTwET6-_GLX',
61
- url="https://eu-de.ml.cloud.ibm.com",
62
- ),
63
- project_id="89e6b2dd-fcc5-4ee2-af0b-8e6d735493ed",
64
- params=embed_params,
65
- )
66
- return watsonx_embedding
67
 
68
  def allam(template_fname, args):
69
  from ibm_watsonx_ai import Credentials
@@ -127,76 +131,63 @@ def poem_wisdom(poem_fname, wis_fname):
127
  file.write("\n")
128
  file.flush()
129
 
130
- def wx_embedding_similarity(queries, list):
131
- from sklearn.metrics.pairwise import cosine_similarity
132
- embedder = wx_embedding()
133
- return cosine_similarity(
134
- embedder.embed_documents(queries),
135
- embedder.embed_documents(list),
136
- )
137
-
138
- def hf_embedding_similarity(queries, list):
139
- from sentence_transformers import SentenceTransformer
140
- model = SentenceTransformer("BAAI/bge-m3")
141
- return model.similarity(
142
- model.encode(queries),
143
- model.encode(list),
144
- )
145
 
146
- def closest_embedding(queries, wisdom):
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  import numpy as np
148
  from collections import defaultdict
149
- # make parallel list
150
- verses = []
151
- meaning = []
152
- reason = []
153
- for v in wisdom:
154
- verses.append(v["verse"])
155
- meaning.append(v["verse"])
156
- reason.append("نص: " + v["verse"])
157
- for r in v["reword"]:
158
- verses.append(v["verse"])
159
- meaning.append(r)
160
- reason.append("شرح: " + r)
161
- for r in v["wisdom"]:
162
- verses.append(v["verse"])
163
- meaning.append(r)
164
- reason.append("حكمة: " + r)
165
  # find similarity
166
- sim = np.array(hf_embedding_similarity(queries, meaning))
167
  sim_sum = sim.sum(axis=0) / len(sim)
168
  # aggregate per verse
169
- verse2score = defaultdict(lambda: [0, []])
170
- for score, verse, reason in zip(sim_sum, verses, reason):
171
  verse2score[verse][0] += score
172
  verse2score[verse][1].append((score, reason))
 
173
  # sort
174
  ans_list = [
175
- (stuff[0] / len(stuff[1]), verse, sorted(stuff[1], reverse=True))
176
  for verse, stuff in verse2score.items()
177
  ]
178
  return sorted(ans_list, reverse=True)
179
 
180
- def query_transform(query):
181
- ans = [query]
182
- while len(ans) < 5:
183
- for line in allam("allam/trans1.txt", {"input": query}).split("\n"):
184
- txt = line.strip()
185
- if len(txt) < 10: continue
186
- if txt.startswith("- "):
187
- ans.append(txt[2:])
188
- elif txt.startswith("$شعر$ "):
189
- ans.append(txt[6:])
190
- return ans
191
-
192
- def embed_find_rank(wis_fname, wis, verse):
193
- verse_index = [a[1] for a in closest_embedding(
194
- query_transform(wis),
195
- read_wisdom(wis_fname),
196
- )].index(verse)
197
  return verse_index
198
 
199
  if __name__ == "__main__":
 
200
  # poem_wisdom("sample/2.verses.txt", "sample/2.wis.txt")
201
  test_count = 0
202
  test_pass_count = 0
@@ -206,7 +197,7 @@ if __name__ == "__main__":
206
  wisdom = t[1]
207
  for w in wisdom:
208
  test_count += 1
209
- rank = embed_find_rank("sample/2.wis.txt", w, verse)
210
  print(f"{rank} {w}")
211
  if rank < 3:
212
  test_pass_count += 1
 
30
  ans[-1].append(txt)
31
  return ans
32
 
33
+ def read_wisdom(model, fnames):
34
+ wisdom = []
35
+ for fname in fnames:
36
+ with open(fname, "r", encoding="utf-8") as file:
37
+ for line in file:
38
+ txt = line.strip()
39
+ if len(txt) == 0: continue
40
+ if "*" in txt:
41
+ wisdom.append({"verse": txt, "reword": [], "wisdom": [], "src": fname})
42
+ elif txt.startswith("= "):
43
+ wisdom[-1]["reword"].append(txt[2:])
44
+ elif txt.startswith("- "):
45
+ wisdom[-1]["wisdom"].append(txt[2:])
46
+ # make parallel list
47
+ verses = []
48
+ meaning = []
49
+ reason = []
50
+ srcs = []
51
+ for v in wisdom:
52
+ verses.append(v["verse"])
53
+ meaning.append(v["verse"])
54
+ reason.append("نص: " + v["verse"])
55
+ srcs.append(v["src"])
56
+ for r in v["reword"]:
57
+ verses.append(v["verse"])
58
+ meaning.append(r)
59
+ reason.append("شرح: " + r)
60
+ srcs.append(v["src"])
61
+ for r in v["wisdom"]:
62
+ verses.append(v["verse"])
63
+ meaning.append(r)
64
+ reason.append("حكمة: " + r)
65
+ srcs.append(v["src"])
66
+ return wisdom, verses, model.encode(meaning), reason, srcs
67
 
68
+ def hf_model():
69
+ from sentence_transformers import SentenceTransformer
70
+ return SentenceTransformer("BAAI/bge-m3")
 
 
 
 
 
 
 
71
 
72
  def allam(template_fname, args):
73
  from ibm_watsonx_ai import Credentials
 
131
  file.write("\n")
132
  file.flush()
133
 
134
+ def _query_transform(query):
135
+ ans = []
136
+ while len(ans) < 5:
137
+ for line in allam("allam/trans1.txt", {"input": query}).split("\n"):
138
+ txt = line.strip()
139
+ if len(txt) < 10: continue
140
+ if txt.startswith("- "):
141
+ ans.append(txt[2:])
142
+ elif txt.startswith("$شعر$ "):
143
+ ans.append(txt[6:])
144
+ return ans
 
 
 
 
145
 
146
+ def query_transform(query):
147
+ N = 5
148
+ from concurrent.futures import ThreadPoolExecutor, as_completed
149
+ trans = set([query])
150
+ with ThreadPoolExecutor(max_workers=N) as executor:
151
+ futures = [
152
+ executor.submit(_query_transform, query)
153
+ for _ in range(N)
154
+ ]
155
+ for future in as_completed(futures):
156
+ for p in future.result(): trans.add(p)
157
+ return list(trans)
158
+
159
+ def closest_embedding(model, queries_embed, verses, meaning_embed, reason, src):
160
  import numpy as np
161
  from collections import defaultdict
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  # find similarity
163
+ sim = np.array(model.similarity(queries_embed, meaning_embed))
164
  sim_sum = sim.sum(axis=0) / len(sim)
165
  # aggregate per verse
166
+ verse2score = defaultdict(lambda: [0, [], None])
167
+ for score, verse, reason, src in zip(sim_sum, verses, reason, src):
168
  verse2score[verse][0] += score
169
  verse2score[verse][1].append((score, reason))
170
+ verse2score[verse][2] = src
171
  # sort
172
  ans_list = [
173
+ (stuff[0] / len(stuff[1]), verse, sorted(stuff[1], reverse=True), stuff[2])
174
  for verse, stuff in verse2score.items()
175
  ]
176
  return sorted(ans_list, reverse=True)
177
 
178
+ def embed_find_rank(model, wis_fnames, query, verse):
179
+ _, verses, meaning_embed, reason, src = read_wisdom(model, wis_fnames)
180
+ verse_index = [
181
+ a[1] for a in closest_embedding(
182
+ model,
183
+ model.encode(query_transform(query)),
184
+ verses, meaning_embed, reason, src
185
+ )
186
+ ].index(verse)
 
 
 
 
 
 
 
 
187
  return verse_index
188
 
189
  if __name__ == "__main__":
190
+ model = hf_model()
191
  # poem_wisdom("sample/2.verses.txt", "sample/2.wis.txt")
192
  test_count = 0
193
  test_pass_count = 0
 
197
  wisdom = t[1]
198
  for w in wisdom:
199
  test_count += 1
200
+ rank = embed_find_rank(model, ["sample/2.wis.txt"], w, verse)
201
  print(f"{rank} {w}")
202
  if rank < 3:
203
  test_pass_count += 1