اذهب إلى المحتوى
  • 0

كيفية تطبيق ال One-Hot Encoding في تمثيل النص

Reem Jabbour

السؤال

Recommended Posts

  • 0

في One_Hot، يتم إعطاء كل كلمة w في مجموعة المفردات رقم تعريف فريد Wid يتراوح بين 1 و | V |، بحيث |V| هو عدد الكلمات المختلفة في مجموعة البيانات (عدد الكلمات المختلفة الكلي)، و V هي كل الكلمات المختلفة في مجموعة البيانات.
ثم يتم تمثيل كل كلمة بواسطة متجه قيمه من 0 و 1 وأبعاده تساوي |V| أي بعدد المفردات المختلفة، ومملوء ب صفر باستثناء الفهرس الذي يقابل رقم الكلمة index = wid، حيث نضع فيه 1.

ليكن لدينا المثال التالي :

D1 Dog bites man

D2 Man bites dog

D3 Dog eats meat

D4 Man eats food

نقوم أولاً بإعطاء رقم فريد لكل كلمة:

dog = 1, bites = 2, man = 3, meat = 4 , food = 5, eats = 6

نلاحظ أن V|=6|

لنأخذ أول نص من بياناتنا ونرمزه باستخدام One_Hot:

-يتم تمثيل dog  ك [1,0,0,0,0,0]

-يتم تمثيل bites ك [0,1,0,0,0,0]

-يتم تمثيل man ك [0,0,1,0,0,0]

وبالتالي يتم تمثيل D1 ك :  [[0,0,1,0,0,0],[0,1,0,0,0,0],[1,0,0,0,0,0]]  أو [1,1,1,0,0,0]

وهكذا بالنسبة للبقية.

سأعطي الآن مثال حقيقي وأرمزه باستخدام keras:

##################################################### By Ali #########################################333 
# قمنا بتعريف عدة نصوص
Text1='The Argentine national team will play tomorrow'
Text2='The Brazil national team will travel to Hill'
Text3='I Love'
Text4='Champeons Leage'
Text5='One hot Encoding is a type of vector representation '
data=[Text1,Text2,Text3,Text4,Text5] #list جمعنا هذه النصوص في 
print("The data :"data)

''' 
Tokenizer نقوم باستيراد الكلاس  
لها Tokenaization هذا الكلاس  نعطيه البيانات ويقوم بعمل 
أي من خلاله سأقوم بإسناد رقم فريد لكل كلمة في النص
وسأقوم أيضاً من خلاله بتمثيل النصوص على شكل أرقام  
''' 
from keras.preprocessing.text import Tokenizer
t= Tokenizer()   
t.fit_on_texts(data)  # هنا سوف يأخذ كل البيانات ويربط كل كلمة بعدد صحيح فريد

#هنا سيعرض لي القاموس الذي تم إنشاؤه لبياناتنا وهو قاموس يحتوي على كل كلمة مع العدد الصحيح الذي تم ربطها به 
print("The word index",t.word_index)  

# الآن نقوم بتحويل النصوص التي لدينا إلى نصوص مرمزة بأرقام على أساس قيم القاموس
sequences = t.texts_to_sequences(data)
print("The sequences generated from text are : ",sequences)

# one hot encodingهناالتابع الذي سيحقق لي عملية ال 
import numpy as np
def One_hot_encoded(sequences, dimension=24+1):			#  لأن عدد الكلمات المميزةهو 24
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1
    return results
  
# الآن نستدعي التابع
One_Hot_data = One_hot_encoded(sequences)
print("One Hot Encoding:\n"+str(One_Hot_data))
# END

الخرج :

The word index {'the': 1, 'national': 2, 'team': 3, 'will': 4, 'argentine': 5, 'play': 6, 'tomorrow': 7, 'brazil': 8, 'travel': 9, 'to': 10, 'hill': 11, 'i': 12, 'love': 13, 'champeons': 14, 'leage': 15, 'one': 16, 'hot': 17, 'encoding': 18, 'is': 19, 'a': 20, 'type': 21, 'of': 22, 'vector': 23, 'representation': 24}

The sequences generated from text are :  [[1, 5, 2, 3, 4, 6, 7], [1, 8, 2, 3, 4, 9, 10, 11], [12, 13], [14, 15], [16, 17, 18, 19, 20, 21, 22, 23, 24]]

One Hot Encoding:
[[0. 1. 1. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0.]
 [0. 1. 1. 1. 1. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0.
  0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1.
  1.]]

 

-

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...