code: def create(
      dataset,
      num_topics=10,
      initial_topics=None,
      alpha=None,
      beta=0.1,
      num_iterations=10,
      num_burnin=5,
      associations=None,
      verbose=False,
      print_interval=10,
      validation_set=None,
      method="auto",
  ):
      """
      Create a topic model from the given data set. A topic model assumes each
      document is a mixture of a set of topics, where for each topic some words
      are more likely than others. One statistical approach to do this is called a
      "topic model". This method learns a topic model for the given document
      collection.
  
      Parameters
      ----------
      dataset : SArray of type dict or SFrame with a single column of type dict
          A bag of words representation of a document corpus.
          Each element is a dictionary representing a single document, where
          the keys are words and the values are the number of times that word
          occurs in that document.
  
      num_topics : int, optional
          The number of topics to learn.
  
      initial_topics : SFrame, optional
          An SFrame with a column of unique words representing the vocabulary
          and a column of dense vectors representing
          probability of that word given each topic. When provided,
          these values are used to initialize the algorithm.
  
      alpha : float, optional
          Hyperparameter that controls the diversity of topics in a document.
          Smaller values encourage fewer topics per document.
          Provided value must be positive. Default value is 50/num_topics.
  
      beta : float, optional
          Hyperparameter that controls the diversity of words in a topic.
          Smaller values encourage fewer words per topic. Provided value
          must be positive.
  
      num_iterations : int, optional
          The number of iterations to perform.
  
      num_burnin : int, optional
          The number of iterations to perform when inferring the topics for
          documents at prediction time.
  
      verbose : bool, optional
          When True, print most probable words for each topic while printing
          progress.
  
      print_interval : int, optional
          The number of iterations to wait between progress reports.
  
      associations : SFrame, optional
          An SFrame with two columns named "word" and "topic" containing words
          and the topic id that the word should be associated with. These words
          are not considered during learning.
  
      validation_set : SArray of type dict or SFrame with a single column
          A bag of words representation of a document corpus, similar to the
          format required for `dataset`. This will be used to monitor model
          performance during training. Each document in the provided validation
          set is randomly split: the first portion is used estimate which topic
          each document belongs to, and the second portion is used to estimate
          the model's performance at predicting the unseen words in the test data.
  
      method : {'cgs', 'alias'}, optional
          The algorithm used for learning the model.
  
          - *cgs:* Collapsed Gibbs sampling
          - *alias:* AliasLDA method.
  
      Returns
      -------
      out : TopicModel
          A fitted topic model. This can be used with
          :py:func:`~TopicModel.get_topics()` and
          :py:func:`~TopicModel.predict()`. While fitting is in progress, several
          metrics are shown, including:
  
          +------------------+---------------------------------------------------+
          |      Field       | Description                                       |
          +==================+===================================================+
          | Elapsed Time     | The number of elapsed seconds.                    |
          +------------------+---------------------------------------------------+
          | Tokens/second    | The number of unique words processed per second   |
          +------------------+---------------------------------------------------+
          | Est. Perplexity  | An estimate of the model's ability to model the   |
          |                  | training data. See the documentation on evaluate. |
          +------------------+---------------------------------------------------+
  
      See Also
      --------
      TopicModel, TopicModel.get_topics, TopicModel.predict,
      turicreate.SArray.dict_trim_by_keys, TopicModel.evaluate
  
      References
      ----------
      - `Wikipedia - Latent Dirichlet allocation
        <http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation>`_
  
      - Alias method: Li, A. et al. (2014) `Reducing the Sampling Complexity of
        Topic Models. <http://www.sravi.org/pubs/fastlda-kdd2014.pdf>`_.
        KDD 2014.
  
      Examples
      --------
      The following example includes an SArray of documents, where
      each element represents a document in "bag of words" representation
      -- a dictionary with word keys and whose values are the number of times
      that word occurred in the document:
  
      >>> docs = turicreate.SArray('https://static.turi.com/datasets/nytimes')
  
      Once in this form, it is straightforward to learn a topic model.
  
      >>> m = turicreate.topic_model.create(docs)
  
      It is also easy to create a new topic model from an old one  -- whether
      it was created using Turi Create or another package.
  
      >>> m2 = turicreate.topic_model.create(docs, initial_topics=m['topics'])
  
      To manually fix several words to always be assigned to a topic, use
      the `associations` argument. The following will ensure that topic 0
      has the most probability for each of the provided words:
  
      >>> from turicreate import SFrame
      >>> associations = SFrame({'word':['hurricane', 'wind', 'storm'],
                                 'topic': [0, 0, 0]})
      >>> m = turicreate.topic_model.create(docs,
                                          associations=associations)
  
      More advanced usage allows you  to control aspects of the model and the
      learning method.
  
      >>> import turicreate as tc
      >>> m = tc.topic_model.create(docs,
                                    num_topics=20,       # number of topics
                                    num_iterations=10,   # algorithm parameters
                                    alpha=.01, beta=.1)  # hyperparameters
  
      To evaluate the model's ability to generalize, we can create a train/test
      split where a portion of the words in each document are held out from
      training.
  
      >>> train, test = tc.text_analytics.random_split(.8)
      >>> m = tc.topic_model.create(train)
      >>> results = m.evaluate(test)
      >>> print results['perplexity']
  
      """
      dataset = _check_input(dataset)
  
      _check_categorical_option_type(
          "method", method, ["auto", "cgs", "alias"]
      )
      if method == "cgs" or method == "auto":
          model_name = "cgs_topic_model"
      else:
          model_name = "alias_topic_model"
  
      # If associations are provided, check they are in the proper format
      if associations is None:
          associations = _turicreate.SFrame({"word": [], "topic": []})
      if (
          isinstance(associations, _turicreate.SFrame)
          and associations.num_rows() > 0
      ):
          assert set(associations.column_names()) == set(
              ["word", "topic"]
          ), "Provided associations must be an SFrame containing a word column\
               and a topic column."
          assert (
              associations["word"].dtype == str
          ), "Words must be strings."
          assert (
              associations["topic"].dtype == int
          ), "Topic ids must be of int type."
      if alpha is None:
          alpha = float(50) / num_topics
  
      if validation_set is not None:
          _check_input(validation_set)  # Must be a single column
          if isinstance(validation_set, _turicreate.SFrame):
              column_name = validation_set.column_names()[0]
              validation_set = validation_set[column_name]
          (validation_train, validation_test) = _random_split(
              validation_set
          )
      else:
          validation_train = _SArray()
          validation_test = _SArray()
  
      opts = {
          "model_name": model_name,
          "data": dataset,
          "num_topics": num_topics,
          "num_iterations": num_iterations,
          "print_interval": print_interval,
          "alpha": alpha,
          "beta": beta,
          "num_burnin": num_burnin,
          "associations": associations,
      }
  
      # Initialize the model with basic parameters
      response = _turicreate.extensions._text.topicmodel_init(opts)
      m = TopicModel(response["model"])
  
      # If initial_topics provided, load it into the model
      if isinstance(initial_topics, _turicreate.SFrame):
          assert set(["vocabulary", "topic_probabilities"]) == set(
              initial_topics.column_names()
          ), "The provided initial_topics does not have the proper format, \
               e.g. wrong column names."
          observed_topics = initial_topics["topic_probabilities"].apply(
              lambda x: len(x)
          )
          assert all(
              observed_topics == num_topics
          ), "Provided num_topics value does not match the number of provided initial_topics."
  
          # Rough estimate of total number of words
          weight = len(dataset) * 1000
  
          opts = {
              "model": m.__proxy__,
              "topics": initial_topics["topic_probabilities"],
              "vocabulary": initial_topics["vocabulary"],
              "weight": weight,
          }
          response = _turicreate.extensions._text.topicmodel_set_topics(
              opts
          )
          m = TopicModel(response["model"])
  
      # Train the model on the given data set and retrieve predictions
      opts = {
          "model": m.__proxy__,
          "data": dataset,
          "verbose": verbose,
          "validation_train": validation_train,
          "validation_test": validation_test,
      }
  
      response = _turicreate.extensions._text.topicmodel_train(opts)
      m = TopicModel(response["model"])
  
      return m
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import turicreate
  from turicreate.toolkits._model import Model
  from turicreate.data_structures.sframe import SFrame
  from turicreate.data_structures.sarray import SArray
  from turicreate.toolkits.text_analytics._util import _check_input
  from turicreate.toolkits.text_analytics._util import random_split
  from turicreate.toolkits._internal_utils import _check_categorical_option_type, _precomputed_field, _toolkit_repr_print
  import sys
  import operator
  import array
label_desc: Use image node_id 1 for calling a global function with example usage: create(dataset, num_topics, initial_topics, alpha, beta, num_iterations, num_burnin, associations, verbose, print_interval, validation_set, method) and returns: m