Реализация Python fastText, создающая набор для обучения и тестирования

Я занимаюсь веб-копированием, и я сохранил свой utf-8 в csv, очистил его, и теперь я пытаюсь создать свои обучающие и тестовые файлы, чтобы иметь возможность использовать fastText на Facebook, сейчас это то, что у меня есть, и оно выдает мне ошибку

from sklearn.cross_validation import train_test_split

y_all = df["normalized"]
X_all = df.drop('normalized', axis = 1)

X_train, X_test, y_train, y_test = train_test_split(X_all, y_all, `test_size=0.3, random_state=1)`
import fasttext as ft
classifier = ft.supervised(X_train, y_train)

и это ошибка, которую он возвращает, это fastText для Windows в ноутбуке Jupyter

TypeError                                 Traceback (most recent call last)
<ipython-input-47-1f4fa41d367f> in <module>()
----> 1 classifier = ft.supervised(X_train, y_train)

fasttext/fasttext.pyx in fasttext.fasttext.supervised (fasttext/fasttext.cpp:6665)()

fasttext/fasttext.pyx in fasttext.fasttext.train_wrapper (fasttext/fasttext.cpp:4732)()

C:\Program Files\Anaconda3\lib\genericpath.py in isfile(path)
     28     """Test whether a path is a regular file"""
     29     try:
---> 30         st = os.stat(path)
     31     except OSError:
     32         return False

TypeError: argument should be string, bytes or integer, not DataFrame

1 ответ

@kwashington122 Я думаю, что вы используете супервизию неправильно. fasttext.supervised - это классификатор, который принимает в качестве входных данных обучающий файл, который должен содержать помеченные данные, что-то вроде X_train:

text1 label_x
text2 label_y

и вам нужно будет указать префикс метки, чтобы fasttext мог фиксировать различные ваши метки. model = fasttext.supervised(X_train,'model', label_prefix='label_') fasttext обнаружит 2 метки в моем примере x и y (так как я указал label_ в качестве префикса к меткам).

Затем, чтобы предсказать или протестировать классификатор для нового набора данных, вам просто нужно сделать это:model.test(X_test) или если вы хотите предсказать метку для текста или предложений, сделайте следующее:

model.predict(X_test) ## where text has no labels.

Мой ответ немного запоздалый, извините, просто нажмите на вопрос, ища ответ на мою проблему.

Другие вопросы по тегам