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

السؤال

نشر

أحاول أن أقوم بترميز النص باستخدام ال 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...