Spaces:
Sleeping
Sleeping
Commit ·
d43b3ee
1
Parent(s): 028aa90
Better search UI.
Browse files- .streamlit/config.toml +5 -0
- app.py +37 -29
- complete.tmp +148 -60
- garood.tmp +148 -58
- 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 |
-
|
| 27 |
-
@st.
|
| 28 |
-
def
|
| 29 |
-
return wisdom_extract.
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 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
|
| 41 |
-
return wisdom_extract.
|
|
|
|
|
|
|
| 42 |
|
| 43 |
tabs = st.tabs(["بحث", "وزن", "إتمام"])
|
| 44 |
|
|
@@ -49,25 +47,35 @@ with tabs[0]:
|
|
| 49 |
label="إبحث في الشعر",
|
| 50 |
value=query,
|
| 51 |
)
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
table = []
|
| 55 |
-
for score, verse, reason in
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 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(
|
| 69 |
with cols[3]:
|
| 70 |
-
st.
|
|
|
|
|
|
|
| 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 |
-
|
| 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 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 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 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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(
|
| 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 |
-
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
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
return model.similarity(
|
| 142 |
-
model.encode(queries),
|
| 143 |
-
model.encode(list),
|
| 144 |
-
)
|
| 145 |
|
| 146 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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(
|
| 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
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
for
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 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
|