class_docstr: The ``QuestionAnsweringData`` class is a :class:`~flash.core.data.data_module.DataModule` with a set of
  classmethods for loading data for extractive question answering.
class_docstr_tok: ["The","``","QuestionAnsweringData","``","class","is","a",":","class",":","`","~flash.core.data.data_module.DataModule","`","with","a","set","of","classmethods","for","loading","data","for","extractive","question","answering","."]
docstr: Load the :class:`~flash.text.question_answering.data.QuestionAnsweringData` from CSV files containing
  questions, contexts and their corresponding answers.
  
  Question snippets will be extracted from the ``question_column_name`` column in the CSV files.
  Context snippets will be extracted from the ``context_column_name`` column in the CSV files.
  Answer snippets will be extracted from the ``answer_column_name`` column in the CSV files.
  To learn how to customize the transforms applied for each stage, read our
  :ref:`customizing transforms guide <customizing_transforms>`.
  
  Args:
      train_file: The CSV file containing the training data.
      val_file: The CSV file containing the validation data.
      test_file: The CSV file containing the testing data.
      predict_file: The CSV file containing the data to use when predicting.
      input_cls: The :class:`~flash.core.data.io.input.Input` type to use for loading the data.
      transform: The :class:`~flash.core.data.io.input_transform.InputTransform` type to use.
      transform_kwargs: Dict of keyword arguments to be provided when instantiating the transforms.
      question_column_name: The key in the JSON file to recognize the question field.
      context_column_name: The key in the JSON file to recognize the context field.
      answer_column_name: The key in the JSON file to recognize the answer field.
  
  Returns:
      The constructed :class:`~flash.text.question_answering.data.QuestionAnsweringData`.
  
  Examples
  ________
  
  The files can be in Comma Separated Values (CSV) format with either a ``.csv`` or ``.txt`` extension.
  
  .. testsetup::
  
      >>> import os
      >>> from pandas import DataFrame
      >>> DataFrame.from_dict({
      ...     "id": ["1", "2", "3"],
      ...     "context": [
      ...         "I am three years old",
      ...         "I am six feet tall",
      ...         "I am eight years old",
      ...     ],
      ...     "question": ["How old are you?", "How tall are you?", "How old are you?"],
      ...     "answer_text": ["three", "six", "eight"],
      ...     "answer_start": [0, 0, 0],
      ... }).to_csv("train_data.csv", index=False)
      >>> DataFrame.from_dict({
      ...     "id": ["4"],
      ...     "context": [
      ...         "I am five feet tall",
      ...     ],
      ...     "question": [
      ...         "How tall are you?",
      ...     ],
      ... }).to_csv("predict_data.csv", index=False)
  
  The file ``train_data.csv`` contains the following:
  
  .. code-block::
  
      id,context,question,answer_text,answer_start
      1,I am three years old,How old are you?,three,0
      2,I am six feet tall,How tall are you?,six,0
      3,I am eight years old,How old are you?,eight,0
  
  The file ``predict_data.csv`` contains the following:
  
  .. code-block::
  
      id,context,question
      4,I am five feet tall,How tall are you?
  
  .. doctest::
  
      >>> from flash import Trainer
      >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
      >>> datamodule = QuestionAnsweringData.from_csv(
      ...     train_file="train_data.csv",
      ...     predict_file="predict_data.csv",
      ...     batch_size=2,
      ... )
      >>> model = QuestionAnsweringTask(max_source_length=32, max_target_length=32)
      >>> trainer = Trainer(fast_dev_run=True)
      >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Training...
      >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Predicting...
  
  .. testcleanup::
  
      >>> os.remove("train_data.csv")
      >>> os.remove("predict_data.csv")
  
  Alternatively, the files can be in Tab Separated Values (TSV) format with a ``.tsv`` extension.
  
  .. testsetup::
  
      >>> import os
      >>> from pandas import DataFrame
      >>> DataFrame.from_dict({
      ...     "id": ["1", "2", "3"],
      ...     "context": [
      ...         "I am three years old",
      ...         "I am six feet tall",
      ...         "I am eight years old",
      ...     ],
      ...     "question": ["How old are you?", "How tall are you?", "How old are you?"],
      ...     "answer_text": ["three", "six", "eight"],
      ...     "answer_start": [0, 0, 0],
      ... }).to_csv("train_data.tsv", sep="\t", index=False)
      >>> DataFrame.from_dict({
      ...     "id": ["4"],
      ...     "context": [
      ...         "I am five feet tall",
      ...     ],
      ...     "question": [
      ...         "How tall are you?",
      ...     ],
      ... }).to_csv("predict_data.tsv", sep="\t", index=False)
  
  The file ``train_data.tsv`` contains the following:
  
  .. code-block::
  
      id  context                 question            answer_text answer_start
      1   I am three years old    How old are you?    three       0
      2   I am six feet tall          How tall are you?   six             0
      3   I am eight years old    How old are you?    eight       0
  
  The file ``predict_data.tsv`` contains the following:
  
  .. code-block::
  
      id  context             question
      4   I am five feet tall How tall are you?
  
  .. doctest::
  
      >>> from flash import Trainer
      >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
      >>> datamodule = QuestionAnsweringData.from_csv(
      ...     train_file="train_data.tsv",
      ...     predict_file="predict_data.tsv",
      ...     batch_size=2,
      ... )
      >>> model = QuestionAnsweringTask(max_source_length=32, max_target_length=32)
      >>> trainer = Trainer(fast_dev_run=True)
      >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Training...
      >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Predicting...
  
  .. testcleanup::
  
      >>> os.remove("train_data.tsv")
      >>> os.remove("predict_data.tsv")
docstr_tok: ["Load","the",":","class",":","`","~flash.text.question_answering.data.QuestionAnsweringData","`","from","CSV","files","containing","questions",",","contexts","and","their","corresponding","answers",".","Question","snippets","will","be","extracted","from","the","``","question_column_name","``","column","in","the","CSV","files",".","Context","snippets","will","be","extracted","from","the","``","context_column_name","``","column","in","the","CSV","files",".","Answer","snippets","will","be","extracted","from","the","``","answer_column_name","``","column","in","the","CSV","files",".","To","learn","how","to","customize","the","transforms","applied","for","each","stage",",","read","our",":","ref",":","`","customizing","transforms","guide","<","customizing_transforms",">","`",".","Args",":","train_file",":","The","CSV","file","containing","the","training","data",".","val_file",":","The","CSV","file","containing","the","validation","data",".","test_file",":","The","CSV","file","containing","the","testing","data",".","predict_file",":","The","CSV","file","containing","the","data","to","use","when","predicting",".","input_cls",":","The",":","class",":","`","~flash.core.data.io.input.Input","`","type","to","use","for","loading","the","data",".","transform",":","The",":","class",":","`","~flash.core.data.io.input_transform.InputTransform","`","type","to","use",".","transform_kwargs",":","Dict","of","keyword","arguments","to","be","provided","when","instantiating","the","transforms",".","question_column_name",":","The","key","in","the","JSON","file","to","recognize","the","question","field",".","context_column_name",":","The","key","in","the","JSON","file","to","recognize","the","context","field",".","answer_column_name",":","The","key","in","the","JSON","file","to","recognize","the","answer","field",".","Returns",":","The","constructed",":","class",":","`","~flash.text.question_answering.data.QuestionAnsweringData","`",".","Examples","________","The","files","can","be","in","Comma","Separated","Values","(","CSV",")","format","with","either","a","``",".csv","``","or","``",".txt","``","extension",".","..","testsetup",":",":",">",">",">","import","os",">",">",">","from","pandas","import","DataFrame",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","1","''",",","``","2","''",",","``","3","''","]",",","...","``","context","''",":","[","...","``","I","am","three","years","old","''",",","...","``","I","am","six","feet","tall","''",",","...","``","I","am","eight","years","old","''",",","...","]",",","...","``","question","''",":","[","``","How","old","are","you","?","``",",","``","How","tall","are","you","?","``",",","``","How","old","are","you","?","``","]",",","...","``","answer_text","''",":","[","``","three","''",",","``","six","''",",","``","eight","''","]",",","...","``","answer_start","''",":","[","0",",","0",",","0","]",",","...","}",")",".to_csv","(","``","train_data.csv","''",",","index=False",")",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","4","''","]",",","...","``","context","''",":","[","...","``","I","am","five","feet","tall","''",",","...","]",",","...","``","question","''",":","[","...","``","How","tall","are","you","?","``",",","...","]",",","...","}",")",".to_csv","(","``","predict_data.csv","''",",","index=False",")","The","file","``","train_data.csv","``","contains","the","following",":","..","code-block",":",":","id",",","context",",","question",",","answer_text",",","answer_start","1",",","I","am","three","years","old",",","How","old","are","you","?",",","three,0","2",",","I","am","six","feet","tall",",","How","tall","are","you","?",",","six,0","3",",","I","am","eight","years","old",",","How","old","are","you","?",",","eight,0","The","file","``","predict_data.csv","``","contains","the","following",":","..","code-block",":",":","id",",","context",",","question","4",",","I","am","five","feet","tall",",","How","tall","are","you","?","..","doctest",":",":",">",">",">","from","flash","import","Trainer",">",">",">","from","flash.text","import","QuestionAnsweringData",",","QuestionAnsweringTask",">",">",">","datamodule","=","QuestionAnsweringData.from_csv","(","...","train_file=","''","train_data.csv","''",",","...","predict_file=","''","predict_data.csv","''",",","...","batch_size=2",",","...",")",">",">",">","model","=","QuestionAnsweringTask","(","max_source_length=32",",","max_target_length=32",")",">",">",">","trainer","=","Trainer","(","fast_dev_run=True",")",">",">",">","trainer.fit","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Training","...",">",">",">","trainer.predict","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Predicting","...","..","testcleanup",":",":",">",">",">","os.remove","(","``","train_data.csv","''",")",">",">",">","os.remove","(","``","predict_data.csv","''",")","Alternatively",",","the","files","can","be","in","Tab","Separated","Values","(","TSV",")","format","with","a","``",".tsv","``","extension",".","..","testsetup",":",":",">",">",">","import","os",">",">",">","from","pandas","import","DataFrame",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","1","''",",","``","2","''",",","``","3","''","]",",","...","``","context","''",":","[","...","``","I","am","three","years","old","''",",","...","``","I","am","six","feet","tall","''",",","...","``","I","am","eight","years","old","''",",","...","]",",","...","``","question","''",":","[","``","How","old","are","you","?","``",",","``","How","tall","are","you","?","``",",","``","How","old","are","you","?","``","]",",","...","``","answer_text","''",":","[","``","three","''",",","``","six","''",",","``","eight","''","]",",","...","``","answer_start","''",":","[","0",",","0",",","0","]",",","...","}",")",".to_csv","(","``","train_data.tsv","''",",","sep=","''","\\t","''",",","index=False",")",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","4","''","]",",","...","``","context","''",":","[","...","``","I","am","five","feet","tall","''",",","...","]",",","...","``","question","''",":","[","...","``","How","tall","are","you","?","``",",","...","]",",","...","}",")",".to_csv","(","``","predict_data.tsv","''",",","sep=","''","\\t","''",",","index=False",")","The","file","``","train_data.tsv","``","contains","the","following",":","..","code-block",":",":","id","context","question","answer_text","answer_start","1","I","am","three","years","old","How","old","are","you","?","three","0","2","I","am","six","feet","tall","How","tall","are","you","?","six","0","3","I","am","eight","years","old","How","old","are","you","?","eight","0","The","file","``","predict_data.tsv","``","contains","the","following",":","..","code-block",":",":","id","context","question","4","I","am","five","feet","tall","How","tall","are","you","?","..","doctest",":",":",">",">",">","from","flash","import","Trainer",">",">",">","from","flash.text","import","QuestionAnsweringData",",","QuestionAnsweringTask",">",">",">","datamodule","=","QuestionAnsweringData.from_csv","(","...","train_file=","''","train_data.tsv","''",",","...","predict_file=","''","predict_data.tsv","''",",","...","batch_size=2",",","...",")",">",">",">","model","=","QuestionAnsweringTask","(","max_source_length=32",",","max_target_length=32",")",">",">",">","trainer","=","Trainer","(","fast_dev_run=True",")",">",">",">","trainer.fit","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Training","...",">",">",">","trainer.predict","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Predicting","...","..","testcleanup",":",":",">",">",">","os.remove","(","``","train_data.tsv","''",")",">",">",">","os.remove","(","``","predict_data.tsv","''",")"]
code: def from_csv(
      cls,
      train_file: Optional[PATH_TYPE] = None,
      val_file: Optional[PATH_TYPE] = None,
      test_file: Optional[PATH_TYPE] = None,
      predict_file: Optional[PATH_TYPE] = None,
      input_cls: Type[Input] = QuestionAnsweringCSVInput,
      transform: INPUT_TRANSFORM_TYPE = InputTransform,
      transform_kwargs: Optional[Dict] = None,
      question_column_name: str = "question",
      context_column_name: str = "context",
      answer_column_name: str = "answer",
      **data_module_kwargs: Any,
  ) -> "QuestionAnsweringData":
      """Load the :class:`~flash.text.question_answering.data.QuestionAnsweringData` from CSV files containing
      questions, contexts and their corresponding answers.
  
      Question snippets will be extracted from the ``question_column_name`` column in the CSV files.
      Context snippets will be extracted from the ``context_column_name`` column in the CSV files.
      Answer snippets will be extracted from the ``answer_column_name`` column in the CSV files.
      To learn how to customize the transforms applied for each stage, read our
      :ref:`customizing transforms guide <customizing_transforms>`.
  
      Args:
          train_file: The CSV file containing the training data.
          val_file: The CSV file containing the validation data.
          test_file: The CSV file containing the testing data.
          predict_file: The CSV file containing the data to use when predicting.
          input_cls: The :class:`~flash.core.data.io.input.Input` type to use for loading the data.
          transform: The :class:`~flash.core.data.io.input_transform.InputTransform` type to use.
          transform_kwargs: Dict of keyword arguments to be provided when instantiating the transforms.
          question_column_name: The key in the JSON file to recognize the question field.
          context_column_name: The key in the JSON file to recognize the context field.
          answer_column_name: The key in the JSON file to recognize the answer field.
  
      Returns:
          The constructed :class:`~flash.text.question_answering.data.QuestionAnsweringData`.
  
      Examples
      ________
  
      The files can be in Comma Separated Values (CSV) format with either a ``.csv`` or ``.txt`` extension.
  
      .. testsetup::
  
          >>> import os
          >>> from pandas import DataFrame
          >>> DataFrame.from_dict({
          ...     "id": ["1", "2", "3"],
          ...     "context": [
          ...         "I am three years old",
          ...         "I am six feet tall",
          ...         "I am eight years old",
          ...     ],
          ...     "question": ["How old are you?", "How tall are you?", "How old are you?"],
          ...     "answer_text": ["three", "six", "eight"],
          ...     "answer_start": [0, 0, 0],
          ... }).to_csv("train_data.csv", index=False)
          >>> DataFrame.from_dict({
          ...     "id": ["4"],
          ...     "context": [
          ...         "I am five feet tall",
          ...     ],
          ...     "question": [
          ...         "How tall are you?",
          ...     ],
          ... }).to_csv("predict_data.csv", index=False)
  
      The file ``train_data.csv`` contains the following:
  
      .. code-block::
  
          id,context,question,answer_text,answer_start
          1,I am three years old,How old are you?,three,0
          2,I am six feet tall,How tall are you?,six,0
          3,I am eight years old,How old are you?,eight,0
  
      The file ``predict_data.csv`` contains the following:
  
      .. code-block::
  
          id,context,question
          4,I am five feet tall,How tall are you?
  
      .. doctest::
  
          >>> from flash import Trainer
          >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
          >>> datamodule = QuestionAnsweringData.from_csv(
          ...     train_file="train_data.csv",
          ...     predict_file="predict_data.csv",
          ...     batch_size=2,
          ... )
          >>> model = QuestionAnsweringTask(max_source_length=32, max_target_length=32)
          >>> trainer = Trainer(fast_dev_run=True)
          >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Training...
          >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Predicting...
  
      .. testcleanup::
  
          >>> os.remove("train_data.csv")
          >>> os.remove("predict_data.csv")
  
      Alternatively, the files can be in Tab Separated Values (TSV) format with a ``.tsv`` extension.
  
      .. testsetup::
  
          >>> import os
          >>> from pandas import DataFrame
          >>> DataFrame.from_dict({
          ...     "id": ["1", "2", "3"],
          ...     "context": [
          ...         "I am three years old",
          ...         "I am six feet tall",
          ...         "I am eight years old",
          ...     ],
          ...     "question": ["How old are you?", "How tall are you?", "How old are you?"],
          ...     "answer_text": ["three", "six", "eight"],
          ...     "answer_start": [0, 0, 0],
          ... }).to_csv("train_data.tsv", sep="\\t", index=False)
          >>> DataFrame.from_dict({
          ...     "id": ["4"],
          ...     "context": [
          ...         "I am five feet tall",
          ...     ],
          ...     "question": [
          ...         "How tall are you?",
          ...     ],
          ... }).to_csv("predict_data.tsv", sep="\\t", index=False)
  
      The file ``train_data.tsv`` contains the following:
  
      .. code-block::
  
          id  context                 question            answer_text answer_start
          1   I am three years old    How old are you?    three       0
          2   I am six feet tall	    How tall are you?   six	        0
          3   I am eight years old    How old are you?    eight       0
  
      The file ``predict_data.tsv`` contains the following:
  
      .. code-block::
  
          id  context             question
          4   I am five feet tall How tall are you?
  
      .. doctest::
  
          >>> from flash import Trainer
          >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
          >>> datamodule = QuestionAnsweringData.from_csv(
          ...     train_file="train_data.tsv",
          ...     predict_file="predict_data.tsv",
          ...     batch_size=2,
          ... )
          >>> model = QuestionAnsweringTask(max_source_length=32, max_target_length=32)
          >>> trainer = Trainer(fast_dev_run=True)
          >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Training...
          >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Predicting...
  
      .. testcleanup::
  
          >>> os.remove("train_data.tsv")
          >>> os.remove("predict_data.tsv")
  
      """
  
      ds_kw = {
          "question_column_name": question_column_name,
          "context_column_name": context_column_name,
          "answer_column_name": answer_column_name,
      }
  
      return cls(
          input_cls(RunningStage.TRAINING, train_file, **ds_kw),
          input_cls(RunningStage.VALIDATING, val_file, **ds_kw),
          input_cls(RunningStage.TESTING, test_file, **ds_kw),
          input_cls(RunningStage.PREDICTING, predict_file, **ds_kw),
          transform=transform,
          transform_kwargs=transform_kwargs,
          **data_module_kwargs,
      )
  
file_path: lightning-flash/src/flash/text/question_answering/data.py
imports: from typing import Any, Dict, Optional, Type
  from flash.core.data.data_module import DataModule
  from flash.core.data.io.input import Input
  from flash.core.data.io.input_transform import InputTransform
  from flash.core.data.utilities.paths import PATH_TYPE
  from flash.core.utilities.imports import _TOPIC_TEXT_AVAILABLE
  from flash.core.utilities.stages import RunningStage
  from flash.core.utilities.types import INPUT_TRANSFORM_TYPE
  from flash.text.question_answering.input import QuestionAnsweringCSVInput, QuestionAnsweringDictionaryInput, QuestionAnsweringJSONInput, QuestionAnsweringSQuADInput
label_desc: Use image node_id 1 for calling the QuestionAnsweringData obj's underlying member method code with example usage: obj.from_csv(cls, train_file, val_file, test_file, predict_file, input_cls, transform, transform_kwargs, question_column_name, context_column_name, answer_column_name) and returns: cls