Fasttext, как загрузить столбец .csv в model.predict

Я новичок в питоне и НЛП.

Я следовал этому руководству (https://fasttext.cc/docs/en/supervised-tutorial.html) для обучения моей контролируемой модели fasttxt на Python.

У меня есть csv с текстовым столбцом, и я хотел бы предсказать, что метки когда-либо будут строками из файла. Мой вопрос заключается в том, как я могу загрузить (преобразовать) столбец csv в прогнозный ввод и сохранить метку.

model.predict("Which baking dish is best to bake a banana bread ?", k=-1, threshold=0.5)

вместо этого (текст в ""Какая выпечка...") я хотел бы загружать строку за строкой и сохранять метку предпочтительно в новом столбце в том же CSV.

Я хотел бы получить любую помощь или, может быть, учебник, которому я мог бы следовать.

До сих пор я пытался преобразовать столбец в список с пандами и массивом numpy, но оба вернулись с «AttributeError: объект« функция »не имеет атрибута« найти »»


person Hector Escaton    schedule 24.09.2019    source источник
comment
Пожалуйста, опубликуйте несколько примеров строк вашего CSV.   -  person Stefano Fiorucci - anakin87    schedule 24.09.2019


Ответы (1)


Возьмите этот CSV в качестве примера:

index;id;text;author 0;id26305;This process, however, afforded me no means of...;EAP 1;id17569;It never once occurred to me that the fumbling...;HPL 2;id11008;In his left hand was a gold snuff box, from wh...;EAP 3;id27763;How lovely is spring As we looked from Windsor...;MWS 4;id12958;Finding nothing else, not even gold, the Super...;HPL 5;id22965;A youth passed in solitude, my best years spen...;MWS 6;id09674;The astronomer, perhaps, at this point, took r...;EAP 7;id13515;The surcingle hung in ribands from my body. ;EAP 8;id19322;I knew that you could not say to yourself 'ste...;EAP 9;id00912;I confess that neither the structure of langua...;MWS

Вы можете использовать следующий код:

import pandas as pd
import fastText as ft

# here you load the csv into pandas dataframe
df=pd.read_csv('csv_file.csv',sep=';')

# here you load your fasttext module
model=ft.load_model(MODELPATH)

# line by line, you make the predictions and store them in a list
predictions=[]
for line in df['text']:
    pred_label=model.predict(line, k=-1, threshold=0.5)[0][0]
    predictions.append(pred_label)

# you add the list to the dataframe, then save the datframe to new csv
df['prediction']=predictions
df.to_csv('csv_file_w_pred.csv',sep=';',index=False)
person Stefano Fiorucci - anakin87    schedule 25.09.2019
comment
Вы, сэр, гений! Большое спасибо ! - person Hector Escaton; 25.09.2019
comment
Привет, Анакин, еще вопрос, если не возражаешь. Как бы вы изменили этот цикл, чтобы сохранить более одной метки в строке? Если не сказать прямо сейчас, он сохраняет первую метку из модели, и если вывод будет таким (('__label__1', '__label__2', '__label__3', '__label__4', '__label__5'), array([0.2950488, 0.25392196 , 0.10041688, 0.05670581, 0.05045504])) , как бы вы это сохранили? - person Hector Escaton; 26.09.2019
comment
Вам нужно использовать только: pred_label=model.predict(line, k=-1, threshold=0.5) без индексов - person Stefano Fiorucci - anakin87; 26.09.2019