Size: a a a

ML Boot Camp Official

2020 October 09

SancheZz Мов in ML Boot Camp Official
источник

SancheZz Мов in ML Boot Camp Official
В тч по бертам фасттекстам и тп
источник

MK

Mikhail Kotyushev in ML Boot Camp Official
Artur
а как train.txt в питоновский датафрейм прочитать в одну строчку?
pd.read_csv('./data/train.txt', sep='\t', names=['id', 'label', 'text']) не норм?
источник

d

dePuff in ML Boot Camp Official
Mikhail Kotyushev
pd.read_csv('./data/train.txt', sep='\t', names=['id', 'label', 'text']) не норм?
неа
источник

DR

Dmitry Raevsky in ML Boot Camp Official
вот за пару минут накостылял, можно использовать
import io
import pandas as pd

with io.open('train.txt','r',encoding='utf-8') as f:
   lines = f.readlines()

data_list = []
all_cols = ['normal','insult','obscenity','threat']
for n,line in enumerate(lines):
   val = {col:0 for col in all_cols}
   splitted_line = line.split('\t')
   val['id'] = int(splitted_line[0])
   val['text'] = splitted_line[-1]
   for split_line in splitted_line[1:-1]:
       col = split_line.replace('label','').lower()
       if col not in all_cols:
           print(n,col,all_cols)
           raise ValueError
       else:
           val[col] = 1
   data_list.append(val.copy())
train_df = pd.DataFrame(data_list)
источник

MK

Mikhail Kotyushev in ML Boot Camp Official
dePuff
неа
У меня вроде бы получилось так, айди и лейблы не похерились. В чем подводные?
источник

DR

Dmitry Raevsky in ML Boot Camp Official
Mikhail Kotyushev
pd.read_csv('./data/train.txt', sep='\t', names=['id', 'label', 'text']) не норм?
там мультилейбл могут быть
источник

T

Timur in ML Boot Camp Official
Dmitry Raevsky
вот за пару минут накостылял, можно использовать
import io
import pandas as pd

with io.open('train.txt','r',encoding='utf-8') as f:
   lines = f.readlines()

data_list = []
all_cols = ['normal','insult','obscenity','threat']
for n,line in enumerate(lines):
   val = {col:0 for col in all_cols}
   splitted_line = line.split('\t')
   val['id'] = int(splitted_line[0])
   val['text'] = splitted_line[-1]
   for split_line in splitted_line[1:-1]:
       col = split_line.replace('label','').lower()
       if col not in all_cols:
           print(n,col,all_cols)
           raise ValueError
       else:
           val[col] = 1
   data_list.append(val.copy())
train_df = pd.DataFrame(data_list)
def read_train(path):
   data = []
   with open(path) as fp:
       for line in fp:
           _id, *labels, text = line.split('\t')
           row = {
               'id': _id,
               'text': text,
               'normal': int('__label__NORMAL' in labels),
               'insult': int('__label__INSULT' in labels),
               'obscenity': int('__label__OBSCENITY' in labels),
               'threat': int('__label__THREAT' in labels)
           }
           data.append(row)
   return data
источник

MK

Mikhail Kotyushev in ML Boot Camp Official
А, понял, лол, спасибо. Счас бы обучил бы красиво, ахахаха
источник

T

Timur in ML Boot Camp Official
дальше читаешь это в pd.DataFrame()  и всё ок
источник

d

dePuff in ML Boot Camp Official
Timur
def read_train(path):
   data = []
   with open(path) as fp:
       for line in fp:
           _id, *labels, text = line.split('\t')
           row = {
               'id': _id,
               'text': text,
               'normal': int('__label__NORMAL' in labels),
               'insult': int('__label__INSULT' in labels),
               'obscenity': int('__label__OBSCENITY' in labels),
               'threat': int('__label__THREAT' in labels)
           }
           data.append(row)
   return data
Я ажно офигел, когда почти мой код тут вылез)
источник

DR

Dmitry Raevsky in ML Boot Camp Official
Timur
def read_train(path):
   data = []
   with open(path) as fp:
       for line in fp:
           _id, *labels, text = line.split('\t')
           row = {
               'id': _id,
               'text': text,
               'normal': int('__label__NORMAL' in labels),
               'insult': int('__label__INSULT' in labels),
               'obscenity': int('__label__OBSCENITY' in labels),
               'threat': int('__label__THREAT' in labels)
           }
           data.append(row)
   return data
да, так элегантнее моего костыля
источник

T

Timur in ML Boot Camp Official
Dmitry Raevsky
да, так элегантнее моего костыля
тк у меня тоже костыль)
источник

A

Artur in ML Boot Camp Official
Проблемы начинаются со чтения файлов, сложность должна быть максимальная
источник

A

Artur in ML Boot Camp Official
Спасибо, я тоже не обратил внимания, что несколько лейблов может быть
источник

SancheZz Мов in ML Boot Camp Official
Ща будет царский код
источник

SancheZz Мов in ML Boot Camp Official
def get_struct_data(x):
   x=x.split('\t')
   struct_={
       'id':'',
       '__label__NORMAL': 0,
        '__label__INSULT': 0,
        '__label__OBSCENITY': 0,
        '__label__THREAT':0,
       'text':''
   }
   
   struct_['text']=x[-1]
   struct_['id']=x[0]
   keys = struct_.keys()
   for txt in x[1:len(x)]:
       if txt in keys:
           struct_[txt]=1
   return struct_

tr = open("/home/train.tsv").read().splitlines()
tr_data=[get_struct_data(x) for x in tr]
tr_df=pd.DataFrame(tr_data)
источник

SancheZz Мов in ML Boot Camp Official
источник

d

dePuff in ML Boot Camp Official
А потом переименовывать к сабмиту ближе
источник

SancheZz Мов in ML Boot Camp Official
dePuff
А потом переименовывать к сабмиту ближе
Да там уже пофиг
источник