مشكلتك تبدو واضحة وهي أنك تريد البحث عن الكلمة بشكل كامل في النصوص وليس فقط كجزء من كلمة أخرى. يمكنك تحقيق هذا باستخدام تعبير منتظم (Regex) في بايثون. إليك كيف يمكنك تطبيق هذا التغيير على الجزء المهم من الكود:
pythonimport pandas as pd
import re
if form.is_valid():
cd = form.cleaned_data
aranan = cd['aranan']
sen1 = pd.read_csv('.../Corpus.csv', encoding="utf-8")
sen1 = sen1.sentence1_stop
sen2 = pd.read_csv('.../Corpus.csv', encoding="utf-8")
sen2 = sen2.sentence2_stop
for i in range(len(sen1)):
if (re.search(r'\b' + re.escape(aranan) + r'\b', sen1[i]) and
re.search(r'\b' + re.escape(aranan) + r'\b', sen2[i])):
# do something
في هذا التعديل، استخدمنا re.search
للبحث عن الكلمة كاملة \b
تعني بداية أو نهاية كلمة. re.escape
يساعد في التعامل مع حالات الكلمات التي تحتوي على أحرف خاصة مثل .
أو *
لتجنب أن تتم معاملتها كحروف معنوية في التعبير المنتظم.
-
مشكلة إنشاء مشروع جديد في Firebase06/03/2024
-
تحسين أداء البرامج باستخدام Threading في C++23/01/2024
-
كثافة البكسلات في صورة 785×72808/03/2024
المزيد من المعلومات
بالتأكيد! يبدو أنك تعمل على برنامج يقوم بالبحث عن جمل في ملف CSV باستخدام كلمة محددة. يمكننا تحسين الكود قليلاً لجعله أكثر فعالية ووضوحًا. فيما يلي بعض النصائح والتحسينات:
-
استخدام تعبير منتظم (Regex): لاستبدال البحث البسيط باستخدام
in
ببحث أكثر تعقيدًا لتحقيق مطابقة الكلمة بشكل كامل. -
استخدام زوج
zip
: للتكرار على القوائمsen1
وsen2
في وقت واحد. -
استخدام
enumerate
: للحصول على فهرس العناصر في حلقة التكرار بدلاً من استخدامrange(len(sen1))
. -
تحسين أداء القراءة من ملف CSV: قد تستخدم
pandas
لقراءة الملف مرتين للحصول علىsen1
وsen2
، يمكنك استخدامpandas
مرة واحدة للحصول على البيانات وتقسيمها.
وهنا الكود المحسن:
pythonimport pandas as pd
import re
if form.is_valid():
cd = form.cleaned_data
aranan = cd['aranan']
df = pd.read_csv('.../Corpus.csv', encoding="utf-8")
sen1 = df['sentence1_stop']
sen2 = df['sentence2_stop']
for idx, (s1, s2) in enumerate(zip(sen1, sen2)):
if (re.search(r'\b' + re.escape(aranan) + r'\b', s1) and
re.search(r'\b' + re.escape(aranan) + r'\b', s2)):
# do something
هذه التحسينات ستجعل الكود أكثر فعالية وسهولة قراءة.