الترميز في معالجة اللغة الطبيعية
نشرت: 2020-12-01عند التعامل مع البيانات النصية ، فإن الخطوة الأساسية هي ترميز النص. يمكن اعتبار "الرموز" كلمات فردية أو جمل أو أي وحدة حد أدنى. لذلك ، فإن تقسيم الجمل إلى وحدات منفصلة ليس سوى تحويل إلى رموز.
بنهاية هذا البرنامج التعليمي ، ستكون على دراية بما يلي:
- ما هو الترميز
- أنواع مختلفة من الرموز
- طرق مختلفة للترميز
الترميز هو الخطوة الأساسية في خط أنابيب البرمجة اللغوية العصبية.
لكن لماذا هذا؟
يتم تحويل هذه الكلمات أو الرموز المميزة لاحقًا إلى قيم رقمية حتى يتمكن الكمبيوتر من فهمها وفهمها. يتم تنظيف هذه الرموز ومعالجتها مسبقًا ثم تحويلها إلى قيم رقمية بواسطة طرق "Vectorization". يمكن بعد ذلك تغذية هذه النواقل إلى خوارزميات التعلم الآلي والشبكات العصبية.
لا يمكن أن يكون الترميز على مستوى الكلمة فقط ، ولكن أيضًا على مستوى الجملة. وهذا يعني أنه يمكن ترميز النص إما بالكلمات كرموز أو الجمل كرموز. دعونا نناقش بعض الطرق لأداء الترميز.

جدول المحتويات
بيثون سبليت ()
ترجع وظيفة Split () في Python قائمة الرموز المقسمة حسب الحرف المذكور. بشكل افتراضي ، يقسم الكلمات بمسافات.
ترميز الكلمات
Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = Mystr.split () |
#انتاج: >> [ 'This' ، 'is' ، 'a' ، 'tokenization' ، 'tutorial.' ، "نحن" ، "نحن " ، "التعلم" ، "مختلف" ، "tokenization" ، "الأساليب" ، "و" ، "طرق؟" ، "Tokenization" ، "is" ، "ضروري" ، "in" ، "NLP" ، "المهام". ] |
ترميز الجملة
يمكن تقسيم نفس النص إلى جمل بتمرير الفاصل كـ ".".
Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = Mystr.split ( “.” ) |
#انتاج: >> [ "هذا برنامج تعليمي للترميز" ، "نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية " ، " ] |
على الرغم من أن هذا يبدو واضحًا وبسيطًا ، إلا أنه يحتوي على الكثير من العيوب. وإذا لاحظت أنه ينقسم بعد آخر "." كذلك. وهي لا تعتبر "؟" كمؤشر للجملة التالية لأنها تأخذ حرفًا واحدًا فقط ، وهو ".".
البيانات النصية في سيناريوهات الحياة الواقعية قذرة جدًا ولا يتم وضعها بشكل جيد في الكلمات والجمل. قد يكون هناك الكثير من النصوص المهملة مما يجعل من الصعب جدًا عليك الترميز بهذه الطريقة. لذلك ، دعنا ننتقل إلى طرق أفضل وأفضل للترميز.
يجب أن تقرأ: أفضل 10 تقنيات للتعلم العميق يجب أن تعرفها
تعبير عادي
التعبير العادي (RegEx) هو سلسلة من الأحرف التي تُستخدم للمطابقة مع نمط من الأحرف. نستخدم RegEx للعثور على أنماط أو كلمات أو أحرف معينة لاستبدالها أو إجراء أي عملية أخرى عليها. تحتوي Python على الوحدة النمطية التي تُستخدم للعمل مع RegEx. دعونا نرى كيف يمكننا ترميز النص باستخدام re .
ترميز الكلمات
Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = re.findall ( “[\ w '] +” ، Mystr) |
#انتاج: >> [ 'This' ، 'is' ، 'a' ، 'tokenization' ، 'tutorial' ، 'We' ، 'are' ، 'learning' ، 'different' ، 'tokenization' ، 'method ' ، 'and' ، "طرق" ، "رمزية" ، "هي" ، "أساسية" ، "في" ، "البرمجة اللغوية العصبية" ، "مهام" ] |
إذن ، ماذا حدث هنا؟
تتطابق وظيفة re.findall () مع جميع التسلسلات التي تتطابق معها وتخزنها في قائمة. يعني التعبير "[\ w] +" أي حرف - سواء أكان أبجديًا أو أرقامًا أو شرطة سفلية ("_"). يعني الرمز "+" جميع تكرارات النمط. لذلك ، ستقوم بشكل أساسي بمسح جميع الأحرف ووضعها في القائمة كرمز واحد عندما تصل إلى مسافة بيضاء أو أي حرف خاص آخر بخلاف الشرطة السفلية.
يرجى ملاحظة أن كلمة "NLP's" هي كلمة واحدة ولكن تعبير regex قسمها إلى "NLP" و "s" بسبب الفاصلة العليا.
ترميز الجملة
Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = re.compile ( '[.!؟]' ) .split (Mystr) |
#انتاج: >> [ "هذا برنامج تعليمي للترميز" ، "نحن نتعلم طرق وطرق مختلفة للترميز" ، "يعد الرمز المميز أمرًا ضروريًا في مهام البرمجة اللغوية العصبية". ] |
الآن ، قمنا هنا بدمج أحرف تقسيم متعددة في حالة واحدة وسميت وظيفة re.split. لذلك ، عندما يصطدم بأي من هذه الأحرف الثلاثة ، فسوف يتعامل معها على أنها جملة منفصلة. هذه ميزة لـ RegEx على وظيفة تقسيم python حيث لا يمكنك تمرير أحرف متعددة لتقسيمها.
اقرأ أيضًا: تطبيقات معالجة اللغة الطبيعية
رموز NLTK
مجموعة أدوات اللغة الطبيعية (NLTK) هي مكتبة بايثون مخصصة للتعامل مع مهام البرمجة اللغوية العصبية. يتكون NLTK من وظائف ووحدات مدمجة تم إنشاؤها لبعض العمليات المحددة لخط أنابيب NLP الكامل. دعونا نلقي نظرة على كيفية تعامل NLTK مع الترميز.
ترميز الكلمات
يحتوي NLTK على وحدة منفصلة ، NLTK.tokenize ، للتعامل مع مهام الترميز. بالنسبة إلى ترميز الكلمات ، فإن إحدى الطرق التي تتكون منها هي word_tokenize.
من nltk.tokenize استيراد word_tokenize Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " word_tokenize (ميستر) |
#انتاج: >> [ 'This' ، 'is' ، 'a' ، 'tokenization' ، 'tutorial' ، '.' ، "نحن" ، "نحن " ، "التعلم" ، "مختلف" ، "tokenization" ، "الأساليب" ، "،" ، "و" ، "طرق" ، "؟" ، "Tokenization" ، "is" ، "ضروري" ، "in" ، "NLP" ، "المهام" ، "." ] |
يرجى ملاحظة أن word_tokenize يعتبر علامات الترقيم بمثابة رموز منفصلة. لمنع حدوث ذلك ، نحتاج إلى إزالة جميع علامات الترقيم والرموز الخاصة قبل هذه الخطوة نفسها.

ترميز الجملة
من nltk.tokenize استيراد sent_tokenize Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " sent_tokenize (ميستر) |
#انتاج: >> [ "هذا برنامج تعليمي للترميز." ، "نحن نتعلم طرق وطرق مختلفة للترميز؟" ، "الترميز ضروري في مهام البرمجة اللغوية العصبية". ] |
الرموز المميزة لـ SpaCy
ربما تكون SpaCy واحدة من أكثر المكتبات تقدمًا لمهام البرمجة اللغوية العصبية. يتكون من دعم لما يقرب من 50 لغة. لذلك فإن الخطوة الأولى هي تنزيل النواة للغة الإنجليزية. بعد ذلك ، نحتاج إلى استيراد الوحدة الإنجليزية التي تقوم بتحميل الرمز المميز ، و tagger ، والمحلل اللغوي ، و NER ، ومتجهات الكلمات.
ترميز الكلمات
من spacy.lang.en استيراد اللغة الإنجليزية nlp = الإنجليزية () Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " my_doc = nlp (ميستر) الرموز = [] للرمز في my_doc : Tokens.append (token.text) الرموز |
#انتاج: >> [ 'This' ، 'is' ، 'a' ، 'tokenization' ، 'tutorial' ، '.' ، "نحن" ، "نحن " ، "التعلم" ، "مختلف" ، "tokenization" ، "الأساليب" ، "،" ، "و" ، "طرق" ، "؟" ، "Tokenization" ، "is" ، "ضروري" ، "in" ، "NLP" ، "" s " ، " المهام " ، ". " ] |
هنا ، عندما نطلق على الوظيفة nlp مع تمرير MyStr ، فإنها تخلق كلمة الرموز المميزة لها. ثم نقوم بفهرستها ونخزنها في قائمة منفصلة.
ترميز الجملة
من spacy.lang.en استيراد اللغة الإنجليزية nlp = الإنجليزية () sent_tokenizer = nlp.create_pipe ( 'sentencizer' ) nlp.add_pipe (sent_tokenizer) Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " my_doc = nlp (ميستر) المرسلين = [] لإرسالها في المستندات : Sents.append (sent.text) سينتس |
#انتاج: >> [ "هذا برنامج تعليمي للترميز." ، "نحن نتعلم طرق وطرق مختلفة للترميز؟" ، "الترميز ضروري في مهام البرمجة اللغوية العصبية." ] |
لترميز الجملة ، قم باستدعاء طريقة creat_pipe لإنشاء مكون Sentencizer الذي ينشئ رموز الجملة. ثم نضيف خط الأنابيب إلى كائن nlp. عندما نقوم بتمرير السلسلة النصية إلى كائن nlp ، فإنها تنشئ رموزًا مميزة للجملة هذه المرة. الآن يمكن إضافتهم إلى القائمة بنفس الطريقة كما في المثال السابق.
ترميز Keras
Keras هي واحدة من أكثر أطر التعلم العميق المفضلة حاليًا. تقدم Keras أيضًا فصلًا مخصصًا لمهام معالجة النصوص - keras.preprocessing.text. تحتوي هذه الفئة على وظيفة text_to_word_sequence التي تنشئ رموزًا على مستوى الكلمة من النص. دعونا نلقي نظرة سريعة.
من keras.preprocessing.text استيراد text_to_word_sequence Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = text_to_word_sequence (Mystr) الرموز |
#انتاج: >> [ 'هذا' ، 'هو' ، 'a' ، 'tokenization' ، 'برنامج تعليمي' ، 'نحن' ، 'are' ، 'التعلم' ، 'مختلف' ، 'tokenization' ، 'طرق' ، 'و' ، "طرق" ، "tokenization" ، "is" ، "ضروري" ، "in" ، "nlp's" ، "مهام" ] |
يرجى ملاحظة أنه تعامل مع كلمة "NLP's" كرمز واحد. بالإضافة إلى ذلك ، قام رمز keras هذا بتخفيض جميع الرموز المميزة وهي مكافأة إضافية.
رمز الجنسم
Gensim هي مكتبة شائعة أخرى للتعامل مع المهام القائمة على البرمجة اللغوية العصبية ونمذجة الموضوعات. يقدم class gensim.utils طريقة tokenize ، والتي يمكن استخدامها في مهام الترميز الخاصة بنا.

ترميز الكلمات
من gensim.utils استيراد الرموز المميزة Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " قائمة (رمز رمزي (ميستر)) |
#انتاج: >> [ 'This' ، 'is' ، 'a' ، 'tokenization' ، 'tutorial' ، 'We' ، 'are' ، 'learning' ، 'different' ، 'tokenization' ، 'method ' ، 'and' ، "طرق" ، "رمزية" ، "هي" ، "أساسية" ، "في" ، "البرمجة اللغوية العصبية" ، "ق" ، "مهام" ] |
ترميز الجملة
لترميز الجملة ، نستخدم طريقة split_sentences من فئة gensim.summarization.textcleaner .
من gensim.summarization.textcleaner استيراد split_sentences Mystr = "هذا برنامج تعليمي للترميز. نحن نتعلم طرق وطرق مختلفة للترميز؟ الترميز ضروري في مهام البرمجة اللغوية العصبية. " الرموز = split_sentences ( Mystr ) الرموز |
#انتاج: >> [ "هذا برنامج تعليمي للترميز." ، "نحن نتعلم طرق وطرق مختلفة للترميز؟" ، "الترميز ضروري في مهام البرمجة اللغوية العصبية." ] |
قبل ان تذهب
ناقشنا في هذا البرنامج التعليمي طرقًا مختلفة لترميز بياناتك النصية استنادًا إلى التطبيقات. هذه خطوة أساسية في خط أنابيب معالجة اللغات الطبيعية ، ولكن من الضروري تنظيف البيانات قبل متابعة عملية التحويل إلى الرمز المميز.
إذا كنت مهتمًا بمعرفة المزيد حول التعلم الآلي والذكاء الاصطناعي ، فراجع IIIT-B & upGrad's دبلوم PG في التعلم الآلي والذكاء الاصطناعي المصمم للمهنيين العاملين ويقدم أكثر من 450 ساعة من التدريب الصارم ، وأكثر من 30 دراسة حالة ومهمة ، حالة خريجي IIIT-B ، أكثر من 5 مشاريع تكميلية عملية ومساعدة وظيفية مع أفضل الشركات.