IndexError: string index out of range on TAPAS fine-tuning
I am trying to fine-tune “google/tapas-base” on ‘google/tapas-base-finetuned-wtq’ config. I get the following error.File "C:\Users\Kinjal\.conda\envs\nlp\lib\site- packages\transformers\models\tapas\tokenization_tapas.py", line 1668, in <listcomp>
return [(coords[1], coords[0]) for coords in answer_coordinates_question]

IndexError: string index out of rangeI think the error is because of the coordinates given in the “answer_coordinates” of the TSV sheet.  I tried using (row,col) and (col,row) but in both the cases I get the same error. Also, the answer coordinates are within the range of the table i.e. (0 to nrow-1, 0 to ncol-1)Is there something I am missing here? Or is the error because of something else.
2021-02-17T09:22:31Z
Hi,could it be that you’re providing the answer coordinates in the wrong way? You are probably providing the coordinates as a string, but they should be provided as Python tuples.Let me know if this helps.
2021-02-17T11:16:02Z
Hi,Thanks for the reply. I am providing the coordinates as tuples for every answer [(0,1)] like so. But i guess when it does the swapping of rows to columns in the function:def _to_coordinates(answer_coordinates_question):return [(coords[1], coords[0]) for coords in answer_coordinates_question]The [(0,1)] gets passed as a string such as ‘[(0,1)]’ and that’s where the error comes. I don’t know how to remove the ’ ’ from there.
2021-02-17T13:48:35Z
Oh yeah I had that problem too. A solution is to useast.literal_eval. It let’s you turn strings into their appropriate Python objects.See also my notebook here, where I used it to turn strings into tuples before fine-tuning TAPAS on SQA:Transformers-Tutorials/Fine_tuning_TapasForQuestionAnswering_on_SQA.ipynb at master · NielsRogge/Transformers-Tutorials · GitHub
2021-02-18T09:43:11Z
Thanks. ast.literal_eval solved the problem. Also, the notebook is helpful.