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

ظهور الخطأ ValueError: np.nan is an invalid document, expected byte or unicode string عند محاولة ترميز النص باستخدام TfidfVectorizer

Meezo ML

السؤال

أحاول أن أقوم بترميز النص باستخدام ال TF-IDF لكن يظهر لي الخطأ  ValueError: np.nan is an invalid document, expected byte or unicode string. في هذا المقطع البرمجي التالي:

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
data = pd.read_csv("train.csv")
tfidf = TfidfVectorizer(encoding='utf-8',decode_error='replace')
enc = tfidf.fit_transform(data['tweets'])

ما السبب؟
ظهور الخطأ ValueError: np.nan is an invalid document, expected byte or unicode string عند محاولة ترميز النص باستخدام TfidfVectorizer

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

Recommended Posts

  • 1

غالباً ماتكون البيانات المخزنة في ملفات csv من النوع object لذا عند تطبيقك ل TfidfVectorizer سيعطيك هذا الخطأ عند استدعاء التابع fit_transform.
فهو يتعامل مع unicode string وليس Object، لذا لحل المشكلة نقوم بتحويل نوع البيانات dtype  في ملف ال DataFrame إلى النمط unicode وذلك يتم كالتالي:

enc = tfidf.fit_transform(data['tweets'].values.astype('U'))
# أو
enc = tfidf.fit_transform(data['tweets'].values.astype(str))

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

بالإضافة للإجابة أعلاه، يمكن أيضاً للبرنامج أن ينتج خطأ في الذاكرة إذا كانت البيانات ضخمة في هذه الحالة يمكننا تبديل ترتيب الخطوات في الكود أعلاه لحل المشكلة بتطبيق تحويل نوع البيانات، و من ثم قراءة القيم منها كالتالي:

enc = tfidf.fit_transform(data['tweets'].astype('U').values)
# أو
enc = tfidf.fit_transform(data['tweets'].astype(str).values)

كما يمكننا تطبيق دالة lambda لتحويل كل تويت ل numpy string و من ثم إستدعاء الدالة fit_transform كالتالي:

enc = tfidf.fit_transform(data['tweets'].apply(lambda x: np.str_(x)))

وهي أكثر كفاءة في إستخدام الذاكرة من الطريقة السابقة.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...