Ошибка атрибута: объект ‘float’ не имеет атрибута ‘split’ при проведении анализа настроений

#python

#python

Вопрос:

получение ошибки: AttributeError: объект ‘float’ не имеет атрибута ‘split’

не знаю почему.

я использовал код:

 import os
import sys
import gensim
import pandas as pd
from gensim.models.doc2vec import LabeledSentence
csv = '~/clean_data.csv'
data = pd.read_csv(csv,index_col=0)
data.head()
 

вывод data.head ()

 from sklearn.model_selection import train_test_split
SEED = 2000
x_train, x_validation, y_train, y_validation =     train_test_split(data.SentimentText, data.Sentiment, test_size=.2, random_state=SEED)

def labelize_text(text,label):
result = []
prefix = label
for i, t in zip(text.index, text):
    result.append(LabeledSentence(t.split(), [prefix   '_%s' % i]))
return result

all_x = pd.concat([x_train,x_validation])

all_x_w2v = labelize_text(all_x, 'ALL')
 

Ответ №1:

Потому что вы не можете разделить тип с плавающей запятой!

Из вашего кода, t.split() похоже, возникает ошибка, когда type(t) == float

 result.append(LabeledSentence(t.split(), [prefix   '_%s' % i]))
 

Пример:

 In [1]: float_var = 12.22

In [2]: float_var.split()
 

Результаты

Ошибка атрибута: объект ‘float’ не имеет атрибута ‘split’


Если это работает для вас, вы можете преобразовать в str перед применением разделения

 result.append(LabeledSentence(str(t).split(), [prefix   '_%s' % i]))
 

или вы можете проверить type t значение переменной перед применением split() , Пример:

 if isinstance(t, str):
   # then apply split
else:
   # perform based on your need