
برمجة تطبيق البحث عن النصوص باستخدام بايثون ومكتبة NLTK
تُعتبر معالجة اللغة الطبيعية (NLP) من المجالات المهمة في الذكاء الاصطناعي،
وتستخدم لتحليل النصوص واستخراج المعلومات منها، في هذا المقال سنتعرف على
كيفية برمجة البحث عن الكلمات في النصوص باستخدام لغة بايثون ومكتبة NLTK
التي توفر أدوات قوية لمعالجة النصوص.
الخطوات الاساسية لبرمجة تطبيق البحث عن النصوص باستخدام بايثون ومكتبة NLTK
قبل أن نبدأ، تأكد من تثبيت بايثون والمكتبات المطلوبة.
يمكنك تثبيت NLTK باستخدام الأمر التالي:
pip install nltk
* ثم نقوم بتحميل الموارد المطلوبة من مكتبة NLTK:
import nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')
الخطوة 1: تحميل النص وتحضيره للبحث
* نبدأ بقراءة النصوص ومعالجتها:
from nltk.tokenize import word_tokenizefrom nltk.corpus import stopwordsimport string
def preprocess_text(text): # تحويل النص إلى حروف صغيرة text = text.lower() # إزالة علامات الترقيم text = text.translate(str.maketrans('', '', string.punctuation)) # تقسيم النص إلى كلمات words = word_tokenize(text) # إزالة كلمات التوقف (stopwords) stop_words = set(stopwords.words('english')) filtered_words = [word for word in words if word not in stop_words] return filtered_words
# مثال على نصtext = "Natural Language Processing (NLP) is a fascinating field in AI!"processed_words = preprocess_text(text)print(processed_words)
الخطوة 2: البحث عن كلمة معينة في النص
بعد تجهيز النصوص، يمكننا البحث عن الكلمات المستهدفة:
def search_word(text, target_word): words = preprocess_text(text) return target_word.lower() in words
# مثال على البحثword_to_search = "ai"is_found = search_word(text, word_to_search)print(f'الكلمة "{word_to_search}" موجودة؟ {is_found}')
الخطوة 3: البحث عن الكلمات المشابهة باستخدام التجذير (Stemming) و
التصريف (Lemmatization)
لتوسيع البحث، نستخدم التجذير (Stemming) والتصريف (Lemmatization):
from nltk.stem import PorterStemmer, WordNetLemmatizer
def advanced_search(text, target_word): words = preprocess_text(text) # التجذير stemmer = PorterStemmer() stemmed_words = [stemmer.stem(word) for word in words] # التصريف lemmatizer = WordNetLemmatizer() lemmatized_words = [lemmatizer.lemmatize(word) for word in words] # البحث عن الكلمة في أي من القائمتين return target_word.lower() in words or target_word in stemmed_words or target_word in lemmatized_words
# مثال على البحث المتقدمis_found_advanced = advanced_search(text, word_to_search)print(f'الكلمة "{word_to_search}" موجودة بطريقة متقدمة؟ {is_found_advanced}')
الخطوة 4: البحث عن الكلمات الأكثر تكرارًا في النص
from collections import Counter
def get_most_frequent_words(text, num_words=5): words = preprocess_text(text) word_freq = Counter(words) return word_freq.most_common(num_words)
# مثالmost_frequent = get_most_frequent_words(text)print("أكثر الكلمات تكرارًا:", most_frequent)
الخطوة 5: البحث عن كلمات مفتاحية باستخدام TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
def extract_keywords(texts, num_keywords=5):
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(texts)
feature_names = vectorizer.get_feature_names_out()
scores = tfidf_matrix.toarray().sum(axis=0)
keyword_scores = sorted(zip(feature_names, scores), key=lambda x: x[1], reverse=True)
return keyword_scores[:num_keywords]
# مثال
texts = ["Natural Language Processing is an important field in AI.", "Machine Learning and NLP are related fields."]
keywords = extract_keywords(texts)
print("الكلمات المفتاحية:", keywords)
استخراج الكلمات المفتاحية باستخدام بايثون ومكتبة NLTK
يعتبر تحليل النصوص واستخراج الكلمات المفتاحية من العمليات الأساسية في
معالجة اللغة الطبيعية (NLP)، سنشرح كيفية بناء تطبيق باستخدام لغة Python ومكتبة
NLTK لاستخراج الكلمات المفتاحية بطريقتين : إدخال النص مباشرة و رفع ملف نصي.
** الأدوات المطلوبة **
قبل البدء، تأكد من تثبيت المكتبات المطلوبة باستخدام الأمر التالي:
pip install nltk
* ثم نقوم بتحميل الموارد الأساسية من NLTK :
import nltk
nltk.download('stopwords')
nltk.download('punkt')
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from collections import Counter
--
1. البحث عن الكلمات من نص مكتوب مباشرة
في هذه الطريقة، سيقوم المستخدم بكتابة النص داخل التطبيق،
وسيتم استخراج الكلمات المفتاحية منه مباشرة :
def extract_keywords(text): words = word_tokenize(text) # تقسيم النص إلى كلمات words = [word.lower() for word in words if word.isalnum()] # إزالة الرموز الخاصة words = [word for word in words if word not in stopwords.words('english')] # إزالة الكلمات الشائعة word_freq = Counter(words) # حساب تكرار الكلمات return word_freq.most_common(10) # استخراج أكثر 10 كلمات شيوعًا
# تجربة التطبيقuser_text = input("أدخل النص هنا: ")keywords = extract_keywords(user_text)print("الكلمات المفتاحية:", keywords)
* شرح الكود: يتم تقسيم النص إلى كلمات، يتم إزالة الكلمات الشائعة (مثل: and, the, is) ،
يتم حساب تكرار الكلمات واستخراج أكثر 10 كلمات شيوعًا.
2. البحث عن الكلمات من ملف نصي
في هذه الطريقة، سيتم رفع ملف نصي وتحليل محتواه لاستخراج الكلمات المفتاحية :
def extract_keywords_from_file(file_path): with open(file_path, 'r', encoding='utf-8') as file: text = file.read() words = word_tokenize(text) words = [word.lower() for word in words if word.isalnum()] words = [word for word in words if word not in stopwords.words('english')] word_freq = Counter(words) return word_freq.most_common(10)
# تجربة التطبيقfile_path = "test.txt" # ضع هنا مسار الملف النصيkeywords = extract_keywords_from_file(file_path)print("الكلمات المفتاحية:", keywords)
* شرح الكود : يفتح البرنامج الملف النصي ويقرأ محتواه ،
يتم تنفيذ نفس عملية معالجة النصوص كما في الطريقة الأولى.
3. إنشاء واجهة مستخدم بسيطة لدمج الطريقتين
يمكننا استخدام مكتبة tkinter لإنشاء واجهة بسيطة تتيح للمستخدم اختيار الطريقة التي يريدها :
import tkinter as tkfrom tkinter import filedialog
def process_text(): text = text_input.get("1.0", tk.END) keywords = extract_keywords(text) result_label.config(text=f"الكلمات المفتاحية: {keywords}")
def process_file(): file_path = filedialog.askopenfilename() if file_path: keywords = extract_keywords_from_file(file_path) result_label.config(text=f"الكلمات المفتاحية: {keywords}")
# إنشاء الواجهةroot = tk.Tk()root.title("تحليل النصوص")
text_input = tk.Text(root, height=5, width=50)text_input.pack()
button_text = tk.Button(root, text="تحليل النص المكتوب", command=process_text)button_text.pack()
button_file = tk.Button(root, text="رفع ملف وتحليله", command=process_file)button_file.pack()
result_label = tk.Label(root, text="")result_label.pack()
root.mainloop()
* شرح الكود : يتم إنشاء واجهة تحتوي على مربع نص وزرين:
- الزر الأول يستخدم النص المكتوب مباشرة.
- الزر الثاني يسمح للمستخدم برفع ملف نصي.
عند الضغط على أي زر، يتم استخراج الكلمات المفتاحية وعرضها في الواجهة.
* خاتمة
تعلمنا كيفية بناء تطبيق Python لاستخراج الكلمات المفتاحية من النصوص باستخدام NLTK.
قدمنا طريقتين: إدخال النص يدويًا أو رفع ملف.
استخدمنا tkinter لإنشاء واجهة رسومية تفاعلية.
في هذا المقال، تعلمنا كيفية برمجة البحث عن الكلمات باستخدام بايثون و مكتبة NLTK،
مع تقديم حلول للبحث المباشر والمتقدم، بالإضافة إلى تحليل تكرار الكلمات واستخدام
TF-IDF لاستخراج الكلمات المفتاحية، يمكنك تحسين التطبيق بإضافة خوارزميات أكثر تقدمًا وجعله أكثر ذكاءً.