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 JSON files containing
  questions, contexts and their corresponding answers.
  
  Question snippets will be extracted from the ``question_column_name`` column in the JSON files.
  Context snippets will be extracted from the ``context_column_name`` column in the JSON files.
  Answer snippets will be extracted from the ``answer_column_name`` column in the JSON files.
  To learn how to customize the transforms applied for each stage, read our
  :ref:`customizing transforms guide <customizing_transforms>`.
  
  Args:
      train_file: The JSON file containing the training data.
      val_file: The JSON file containing the validation data.
      test_file: The JSON file containing the testing data.
      predict_file: The JSON 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.
      field: The field that holds the data in the JSON file.
      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
  ________
  
  .. testsetup::
  
      >>> import os
      >>> from pandas import DataFrame
      >>> DataFrame.from_dict({
      ...     "id": ["12345", "12346", "12347", "12348"],
      ...     "context": [
      ...         "this is an answer one. this is a context one",
      ...         "this is an answer two. this is a context two",
      ...         "this is an answer three. this is a context three",
      ...         "this is an answer four. this is a context four",
      ...     ],
      ...     "question": [
      ...         "this is a question one",
      ...         "this is a question two",
      ...         "this is a question three",
      ...         "this is a question four",
      ...     ],
      ...     "answer_text": [
      ...         "this is an answer one",
      ...         "this is an answer two",
      ...         "this is an answer three",
      ...         "this is an answer four",
      ...     ],
      ...     "answer_start": [0, 0, 0, 0],
      ... }).to_json("train_data.json", orient="records", lines=True)
      >>> DataFrame.from_dict({
      ...     "id": ["12349", "12350"],
      ...     "context": [
      ...         "this is an answer five. this is a context five",
      ...         "this is an answer six. this is a context six",
      ...     ],
      ...     "question": [
      ...         "this is a question five",
      ...         "this is a question six",
      ...     ],
      ... }).to_json("predict_data.json", orient="records", lines=True)
  
  The file ``train_data.json`` contains the following:
  
  .. code-block::
  
      {"id":"12345","context":"this is an answer one. this is a context one","question":"this is a question one",
      "answer_text":"this is an answer one","answer_start":0}
      {"id":"12346","context":"this is an answer two. this is a context two","question":"this is a question two",
      "answer_text":"this is an answer two","answer_start":0}
      {"id":"12347","context":"this is an answer three. this is a context three","question":"this is a question
       three","answer_text":"this is an answer three","answer_start":0}
      {"id":"12348","context":"this is an answer four. this is a context four","question":"this is a question
       four","answer_text":"this is an answer four","answer_start":0}
  
  
  The file ``predict_data.json`` contains the following:
  
  .. code-block::
  
      {"id":"12349","context":"this is an answer five. this is a context five","question":"this is a question
       five"}
      {"id":"12350","context":"this is an answer six. this is a context six","question":"this is a question
       six"}
  
  .. doctest::
  
      >>> from flash import Trainer
      >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
      >>> datamodule = QuestionAnsweringData.from_json(
      ...     train_file="train_data.json",
      ...     predict_file="predict_data.json",
      ...     batch_size=2,
      ... )  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      <BLANKLINE>
      ...
      >>> 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.json")
      >>> os.remove("predict_data.json")
docstr_tok: ["Load","the",":","class",":","`","~flash.text.question_answering.data.QuestionAnsweringData","`","from","JSON","files","containing","questions",",","contexts","and","their","corresponding","answers",".","Question","snippets","will","be","extracted","from","the","``","question_column_name","``","column","in","the","JSON","files",".","Context","snippets","will","be","extracted","from","the","``","context_column_name","``","column","in","the","JSON","files",".","Answer","snippets","will","be","extracted","from","the","``","answer_column_name","``","column","in","the","JSON","files",".","To","learn","how","to","customize","the","transforms","applied","for","each","stage",",","read","our",":","ref",":","`","customizing","transforms","guide","<","customizing_transforms",">","`",".","Args",":","train_file",":","The","JSON","file","containing","the","training","data",".","val_file",":","The","JSON","file","containing","the","validation","data",".","test_file",":","The","JSON","file","containing","the","testing","data",".","predict_file",":","The","JSON","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",".","field",":","The","field","that","holds","the","data","in","the","JSON","file",".","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","________","..","testsetup",":",":",">",">",">","import","os",">",">",">","from","pandas","import","DataFrame",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","12345","''",",","``","12346","''",",","``","12347","''",",","``","12348","''","]",",","...","``","context","''",":","[","...","``","this","is","an","answer","one",".","this","is","a","context","one","''",",","...","``","this","is","an","answer","two",".","this","is","a","context","two","''",",","...","``","this","is","an","answer","three",".","this","is","a","context","three","''",",","...","``","this","is","an","answer","four",".","this","is","a","context","four","''",",","...","]",",","...","``","question","''",":","[","...","``","this","is","a","question","one","''",",","...","``","this","is","a","question","two","''",",","...","``","this","is","a","question","three","''",",","...","``","this","is","a","question","four","''",",","...","]",",","...","``","answer_text","''",":","[","...","``","this","is","an","answer","one","''",",","...","``","this","is","an","answer","two","''",",","...","``","this","is","an","answer","three","''",",","...","``","this","is","an","answer","four","''",",","...","]",",","...","``","answer_start","''",":","[","0",",","0",",","0",",","0","]",",","...","}",")",".to_json","(","``","train_data.json","''",",","orient=","''","records","''",",","lines=True",")",">",">",">","DataFrame.from_dict","(","{","...","``","id","''",":","[","``","12349","''",",","``","12350","''","]",",","...","``","context","''",":","[","...","``","this","is","an","answer","five",".","this","is","a","context","five","''",",","...","``","this","is","an","answer","six",".","this","is","a","context","six","''",",","...","]",",","...","``","question","''",":","[","...","``","this","is","a","question","five","''",",","...","``","this","is","a","question","six","''",",","...","]",",","...","}",")",".to_json","(","``","predict_data.json","''",",","orient=","''","records","''",",","lines=True",")","The","file","``","train_data.json","``","contains","the","following",":","..","code-block",":",":","{","``","id","''",":","''","12345","''",",","''","context","''",":","''","this","is","an","answer","one",".","this","is","a","context","one","''",",","''","question","''",":","''","this","is","a","question","one","''",",","``","answer_text","''",":","''","this","is","an","answer","one","''",",","''","answer_start","''",":0","}","{","``","id","''",":","''","12346","''",",","''","context","''",":","''","this","is","an","answer","two",".","this","is","a","context","two","''",",","''","question","''",":","''","this","is","a","question","two","''",",","``","answer_text","''",":","''","this","is","an","answer","two","''",",","''","answer_start","''",":0","}","{","``","id","''",":","''","12347","''",",","''","context","''",":","''","this","is","an","answer","three",".","this","is","a","context","three","''",",","''","question","''",":","''","this","is","a","question","three","''",",","''","answer_text","''",":","''","this","is","an","answer","three","''",",","''","answer_start","''",":0","}","{","``","id","''",":","''","12348","''",",","''","context","''",":","''","this","is","an","answer","four",".","this","is","a","context","four","''",",","''","question","''",":","''","this","is","a","question","four","''",",","''","answer_text","''",":","''","this","is","an","answer","four","''",",","''","answer_start","''",":0","}","The","file","``","predict_data.json","``","contains","the","following",":","..","code-block",":",":","{","``","id","''",":","''","12349","''",",","''","context","''",":","''","this","is","an","answer","five",".","this","is","a","context","five","''",",","''","question","''",":","''","this","is","a","question","five","''","}","{","``","id","''",":","''","12350","''",",","''","context","''",":","''","this","is","an","answer","six",".","this","is","a","context","six","''",",","''","question","''",":","''","this","is","a","question","six","''","}","..","doctest",":",":",">",">",">","from","flash","import","Trainer",">",">",">","from","flash.text","import","QuestionAnsweringData",",","QuestionAnsweringTask",">",">",">","datamodule","=","QuestionAnsweringData.from_json","(","...","train_file=","''","train_data.json","''",",","...","predict_file=","''","predict_data.json","''",",","...","batch_size=2",",","...",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","<","BLANKLINE",">","...",">",">",">","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.json","''",")",">",">",">","os.remove","(","``","predict_data.json","''",")"]
code: def from_json(
      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] = QuestionAnsweringJSONInput,
      transform: INPUT_TRANSFORM_TYPE = InputTransform,
      transform_kwargs: Optional[Dict] = None,
      field: Optional[str] = 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 JSON files containing
      questions, contexts and their corresponding answers.
  
      Question snippets will be extracted from the ``question_column_name`` column in the JSON files.
      Context snippets will be extracted from the ``context_column_name`` column in the JSON files.
      Answer snippets will be extracted from the ``answer_column_name`` column in the JSON files.
      To learn how to customize the transforms applied for each stage, read our
      :ref:`customizing transforms guide <customizing_transforms>`.
  
      Args:
          train_file: The JSON file containing the training data.
          val_file: The JSON file containing the validation data.
          test_file: The JSON file containing the testing data.
          predict_file: The JSON 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.
          field: The field that holds the data in the JSON file.
          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
      ________
  
      .. testsetup::
  
          >>> import os
          >>> from pandas import DataFrame
          >>> DataFrame.from_dict({
          ...     "id": ["12345", "12346", "12347", "12348"],
          ...     "context": [
          ...         "this is an answer one. this is a context one",
          ...         "this is an answer two. this is a context two",
          ...         "this is an answer three. this is a context three",
          ...         "this is an answer four. this is a context four",
          ...     ],
          ...     "question": [
          ...         "this is a question one",
          ...         "this is a question two",
          ...         "this is a question three",
          ...         "this is a question four",
          ...     ],
          ...     "answer_text": [
          ...         "this is an answer one",
          ...         "this is an answer two",
          ...         "this is an answer three",
          ...         "this is an answer four",
          ...     ],
          ...     "answer_start": [0, 0, 0, 0],
          ... }).to_json("train_data.json", orient="records", lines=True)
          >>> DataFrame.from_dict({
          ...     "id": ["12349", "12350"],
          ...     "context": [
          ...         "this is an answer five. this is a context five",
          ...         "this is an answer six. this is a context six",
          ...     ],
          ...     "question": [
          ...         "this is a question five",
          ...         "this is a question six",
          ...     ],
          ... }).to_json("predict_data.json", orient="records", lines=True)
  
      The file ``train_data.json`` contains the following:
  
      .. code-block::
  
          {"id":"12345","context":"this is an answer one. this is a context one","question":"this is a question one",
          "answer_text":"this is an answer one","answer_start":0}
          {"id":"12346","context":"this is an answer two. this is a context two","question":"this is a question two",
          "answer_text":"this is an answer two","answer_start":0}
          {"id":"12347","context":"this is an answer three. this is a context three","question":"this is a question
           three","answer_text":"this is an answer three","answer_start":0}
          {"id":"12348","context":"this is an answer four. this is a context four","question":"this is a question
           four","answer_text":"this is an answer four","answer_start":0}
  
  
      The file ``predict_data.json`` contains the following:
  
      .. code-block::
  
          {"id":"12349","context":"this is an answer five. this is a context five","question":"this is a question
           five"}
          {"id":"12350","context":"this is an answer six. this is a context six","question":"this is a question
           six"}
  
      .. doctest::
  
          >>> from flash import Trainer
          >>> from flash.text import QuestionAnsweringData, QuestionAnsweringTask
          >>> datamodule = QuestionAnsweringData.from_json(
          ...     train_file="train_data.json",
          ...     predict_file="predict_data.json",
          ...     batch_size=2,
          ... )  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          <BLANKLINE>
          ...
          >>> 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.json")
          >>> os.remove("predict_data.json")
  
      """
  
      ds_kw = {
          "field": field,
          "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 2 for calling the QuestionAnsweringData obj's underlying member method code with example usage: obj.from_json(cls, train_file, val_file, test_file, predict_file, input_cls, transform, transform_kwargs, field, question_column_name, context_column_name, answer_column_name) and returns: cls