Compartilhar via


TextLoaderSaverCatalog.CreateTextLoader Método

Definição

Sobrecargas

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Crie um carregador TextLoaderde texto .

CreateTextLoader(DataOperationsCatalog, TextLoader+Column[], Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Crie um carregador TextLoaderde texto .

CreateTextLoader<TInput>(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Crie um carregador TextLoader de texto inferindo o esquema do conjunto de dados de um tipo de modelo de dados.

CreateTextLoader<TInput>(DataOperationsCatalog, Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Crie um carregador TextLoader de texto inferindo o esquema do conjunto de dados de um tipo de modelo de dados.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Crie um carregador TextLoaderde texto .

public static Microsoft.ML.Data.TextLoader CreateTextLoader (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Options options, Microsoft.ML.Data.IMultiStreamSource dataSample = default);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Options * Microsoft.ML.Data.IMultiStreamSource -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader (catalog As DataOperationsCatalog, options As TextLoader.Options, Optional dataSample As IMultiStreamSource = Nothing) As TextLoader

Parâmetros

options
TextLoader.Options

Define as configurações da operação de carregamento.

dataSample
IMultiStreamSource

O local opcional de um exemplo de dados. O exemplo pode ser usado para inferir anotações de nome de slot, se presentes, e também o número de slots definidos Columns com com TextLoader.Rangenull índice máximo. Se o exemplo tiver sido salvo com o do SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)ML.NET, ele também conterá as informações de esquema no cabeçalho que o carregador pode ler mesmo se Columns não forem especificados. Para usar o esquema definido no arquivo, todos os outros TextLoader.Options itens devem ser deixados com seus valores padrão.

Retornos

Aplica-se a

CreateTextLoader(DataOperationsCatalog, TextLoader+Column[], Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Crie um carregador TextLoaderde texto .

public static Microsoft.ML.Data.TextLoader CreateTextLoader (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Column[] columns, char separatorChar = '\t', bool hasHeader = false, Microsoft.ML.Data.IMultiStreamSource dataSample = default, bool allowQuoting = false, bool trimWhitespace = false, bool allowSparse = false);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Column[] * char * bool * Microsoft.ML.Data.IMultiStreamSource * bool * bool * bool -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader (catalog As DataOperationsCatalog, columns As TextLoader.Column(), Optional separatorChar As Char = '\t', Optional hasHeader As Boolean = false, Optional dataSample As IMultiStreamSource = Nothing, Optional allowQuoting As Boolean = false, Optional trimWhitespace As Boolean = false, Optional allowSparse As Boolean = false) As TextLoader

Parâmetros

columns
TextLoader.Column[]

Matriz de colunas TextLoader.Column que definem o esquema.

separatorChar
Char

O caractere usado como separador entre pontos de dados em uma linha. Por padrão, o caractere de guia é usado como separador.

hasHeader
Boolean

Se o arquivo tem um cabeçalho com nomes de recursos. Quando um é fornecido, true indica que a primeira linha no será usada para nomes de recursos e que, quando Load(IMultiStreamSource) for chamado, a primeira linha será ignorada. Quando não há nenhum fornecido, true apenas indica que o carregador deve ignorar a primeira linha quando Load(IMultiStreamSource) for chamado, mas as colunas não terão anotações de nomes de slot. Isso ocorre porque o esquema de saída é feito quando o carregador é criado e não quando Load(IMultiStreamSource) é chamado.

dataSample
IMultiStreamSource

O local opcional de um exemplo de dados. O exemplo pode ser usado para inferir anotações de nome de slot, se presentes, e também o número de slots em uma coluna definida com com TextLoader.Rangenull índice máximo. Se o exemplo tiver sido salvo com o do SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)ML.NET, ele também conterá as informações de esquema no cabeçalho que o carregador pode ler mesmo se columns for null. Para usar o esquema definido no arquivo, todos os outros argumentos devem ser deixados com seus valores padrão.

allowQuoting
Boolean

Se a entrada pode incluir valores entre aspas duplas. Esse parâmetro é usado para distinguir caracteres separadores em um valor de entrada de separadores reais. Quando true, separadores dentro de aspas duplas são tratados como parte do valor de entrada. Quando false, todos os separadores, mesmo aqueles entre aspas, são tratados como delimitando uma nova coluna.

trimWhitespace
Boolean

Remova o espaço em branco à direita das linhas.

allowSparse
Boolean

Se a entrada pode incluir representações esparsas. Por exemplo, uma linha que contém "5 2:6 4:3" significa que há 5 colunas e a única diferente de zero são as colunas 2 e 4, que têm os valores 6 e 3, respectivamente. Os índices de coluna são baseados em zero, portanto, as colunas 2 e 4 representam as 3ª e 5ª colunas. Uma coluna também pode ter valores densos seguidos por valores esparsos representados dessa forma. Por exemplo, uma linha que contém "1 2 5 2:6 4:3" representa duas colunas densas com os valores 1 e 2, seguida por 5 colunas pouco representadas com os valores 0, 0, 6, 0 e 3. Os índices das colunas esparsas começam a partir de 0, embora 0 represente a terceira coluna.

Retornos

Exemplos

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic.DataOperations
{
    public static class LoadingText
    {
        // This examples shows all the ways to load data with TextLoader.
        public static void Example()
        {
            // Create 5 data files to illustrate different loading methods.
            var dataFiles = new List<string>();
            var random = new Random(1);
            var dataDirectoryName = "DataDir";
            Directory.CreateDirectory(dataDirectoryName);
            for (int i = 0; i < 5; i++)
            {
                var fileName = Path.Combine(dataDirectoryName, $"Data_{i}.csv");
                dataFiles.Add(fileName);
                using (var fs = File.CreateText(fileName))
                {
                    // Write without header with 10 random columns, forcing
                    // approximately 80% of values to be 0.
                    for (int line = 0; line < 10; line++)
                    {
                        var sb = new StringBuilder();
                        for (int pos = 0; pos < 10; pos++)
                        {
                            var value = random.NextDouble();
                            sb.Append((value < 0.8 ? 0 : value).ToString() + '\t');
                        }
                        fs.WriteLine(sb.ToString(0, sb.Length - 1));
                    }
                }
            }

            // Create a TextLoader.
            var mlContext = new MLContext();
            var loader = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features", DataKind.Single, 0, 9)
                },
                hasHeader: false
            );

            // Load a single file from path.
            var singleFileData = loader.Load(dataFiles[0]);
            PrintRowCount(singleFileData);

            // Expected Output:
            //   10


            // Load all 5 files from path.
            var multipleFilesData = loader.Load(dataFiles.ToArray());
            PrintRowCount(multipleFilesData);

            // Expected Output:
            //   50


            // Load all files using path wildcard.
            var multipleFilesWildcardData =
                loader.Load(Path.Combine(dataDirectoryName, "Data_*.csv"));
            PrintRowCount(multipleFilesWildcardData);

            // Expected Output:
            //   50


            // Create a TextLoader with user defined type.
            var loaderWithCustomType =
                mlContext.Data.CreateTextLoader<Data>(hasHeader: false);

            // Load a single file from path.
            var singleFileCustomTypeData = loaderWithCustomType.Load(dataFiles[0]);
            PrintRowCount(singleFileCustomTypeData);

            // Expected Output:
            //   10


            // Create a TextLoader with unknown column length to illustrate
            // how a data sample may be used to infer column size.
            var dataSample = new MultiFileSource(dataFiles[0]);
            var loaderWithUnknownLength = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features",
                                          DataKind.Single,
                                          new[] { new TextLoader.Range(0, null) })
                },
                dataSample: dataSample
            );

            var dataWithInferredLength = loaderWithUnknownLength.Load(dataFiles[0]);
            var featuresColumn = dataWithInferredLength.Schema.GetColumnOrNull("Features");
            if (featuresColumn.HasValue)
                Console.WriteLine(featuresColumn.Value.ToString());

            // Expected Output:
            //   Features: Vector<Single, 10>
            //
            // ML.NET infers the correct length of 10 for the Features column,
            // which is of type Vector<Single>.

            PrintRowCount(dataWithInferredLength);

            // Expected Output:
            //   10


            // Save the data with 10 rows to a text file to illustrate the use of
            // sparse format.
            var sparseDataFileName = Path.Combine(dataDirectoryName, "saved_data.tsv");
            using (FileStream stream = new FileStream(sparseDataFileName, FileMode.Create))
                mlContext.Data.SaveAsText(singleFileData, stream);

            // Since there are many zeroes in the data, it will be saved in a sparse
            // representation to save disk space. The data may be forced to be saved
            // in a dense representation by setting forceDense to true. The sparse
            // data will look like the following:
            //
            //   10 7:0.943862259
            //   10 3:0.989767134
            //   10 0:0.949778438   8:0.823028445   9:0.886469543
            //
            // The sparse representation of the first row indicates that there are
            // 10 columns, the column 7 (8-th column) has value 0.943862259, and other
            // omitted columns have value 0.

            // Create a TextLoader that allows sparse input.
            var sparseLoader = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features", DataKind.Single, 0, 9)
                },
                allowSparse: true
            );

            // Load the saved sparse data.
            var sparseData = sparseLoader.Load(sparseDataFileName);
            PrintRowCount(sparseData);

            // Expected Output:
            //   10


            // Create a TextLoader without any column schema using TextLoader.Options.
            // Since the sparse data file was saved with ML.NET, it has the schema
            // enoded in its header that the loader can understand:
            //
            // #@ TextLoader{
            // #@   sep=tab
            // #@   col=Features:R4:0-9
            // #@ }
            //
            // The schema syntax is unimportant since it is only used internally. In
            // short, it tells the loader that the values are separated by tabs, and
            // that columns 0-9 in the text file are to be read into one column named
            // "Features" of type Single (internal type R4).

            var options = new TextLoader.Options()
            {
                AllowSparse = true,
            };
            var dataSampleWithSchema = new MultiFileSource(sparseDataFileName);
            var sparseLoaderWithSchema =
                mlContext.Data.CreateTextLoader(options, dataSample: dataSampleWithSchema);

            // Load the saved sparse data.
            var sparseDataWithSchema = sparseLoaderWithSchema.Load(sparseDataFileName);
            PrintRowCount(sparseDataWithSchema);

            // Expected Output:
            //   10
        }

        private static void PrintRowCount(IDataView idv)
        {
            // IDataView is lazy so we need to iterate through it
            // to get the number of rows.
            long rowCount = 0;
            using (var cursor = idv.GetRowCursor(idv.Schema))
                while (cursor.MoveNext())
                    rowCount++;

            Console.WriteLine(rowCount);
        }

        private class Data
        {
            [LoadColumn(0, 9)]
            public float[] Features { get; set; }
        }
    }
}

Aplica-se a

CreateTextLoader<TInput>(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Crie um carregador TextLoader de texto inferindo o esquema do conjunto de dados de um tipo de modelo de dados.

public static Microsoft.ML.Data.TextLoader CreateTextLoader<TInput> (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Options options, Microsoft.ML.Data.IMultiStreamSource dataSample = default);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Options * Microsoft.ML.Data.IMultiStreamSource -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader(Of TInput) (catalog As DataOperationsCatalog, options As TextLoader.Options, Optional dataSample As IMultiStreamSource = Nothing) As TextLoader

Parâmetros de tipo

TInput

Parâmetros

options
TextLoader.Options

Define as configurações da operação de carregamento. Define as configurações da operação de carregamento. Não é necessário especificar um campo Colunas, pois as colunas serão inferidas por esse método.

dataSample
IMultiStreamSource

O local opcional de um exemplo de dados. O exemplo pode ser usado para inferir informações sobre as colunas, como nomes de slot.

Retornos

Aplica-se a

CreateTextLoader<TInput>(DataOperationsCatalog, Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Crie um carregador TextLoader de texto inferindo o esquema do conjunto de dados de um tipo de modelo de dados.

public static Microsoft.ML.Data.TextLoader CreateTextLoader<TInput> (this Microsoft.ML.DataOperationsCatalog catalog, char separatorChar = '\t', bool hasHeader = false, Microsoft.ML.Data.IMultiStreamSource dataSample = default, bool allowQuoting = false, bool trimWhitespace = false, bool allowSparse = false);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * char * bool * Microsoft.ML.Data.IMultiStreamSource * bool * bool * bool -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader(Of TInput) (catalog As DataOperationsCatalog, Optional separatorChar As Char = '\t', Optional hasHeader As Boolean = false, Optional dataSample As IMultiStreamSource = Nothing, Optional allowQuoting As Boolean = false, Optional trimWhitespace As Boolean = false, Optional allowSparse As Boolean = false) As TextLoader

Parâmetros de tipo

TInput

Define o esquema dos dados a serem carregados. Use campos públicos ou propriedades decoradas com LoadColumnAttribute (e possivelmente outros atributos) para especificar os nomes de coluna e seus tipos de dados no esquema dos dados carregados.

Parâmetros

separatorChar
Char

Caractere separador de coluna. O padrão é '\t'

hasHeader
Boolean

Se o arquivo tem um cabeçalho com nomes de recursos. Quando um é fornecido, true indica que a primeira linha no será usada para nomes de recursos e que, quando Load(IMultiStreamSource) for chamado, a primeira linha será ignorada. Quando não há nenhum fornecido, true apenas indica que o carregador deve ignorar a primeira linha quando Load(IMultiStreamSource) for chamado, mas as colunas não terão anotações de nomes de slot. Isso ocorre porque o esquema de saída é feito quando o carregador é criado e não quando Load(IMultiStreamSource) é chamado.

dataSample
IMultiStreamSource

O local opcional de um exemplo de dados. O exemplo pode ser usado para inferir anotações de nome de slot, se houver.

allowQuoting
Boolean

Se a entrada pode incluir valores entre aspas duplas. Esse parâmetro é usado para distinguir caracteres separadores em um valor de entrada de separadores reais. Quando true, separadores dentro de aspas duplas são tratados como parte do valor de entrada. Quando false, todos os separadores, mesmo as aspas whitin, são tratados como delimitando uma nova coluna.

trimWhitespace
Boolean

Remova o espaço em branco à direita das linhas.

allowSparse
Boolean

Se a entrada pode incluir representações esparsas. Por exemplo, uma linha que contém "5 2:6 4:3" significa que há 5 colunas e a única diferente de zero são as colunas 2 e 4, que têm os valores 6 e 3, respectivamente. Os índices de coluna são baseados em zero, portanto, as colunas 2 e 4 representam as 3ª e 5ª colunas. Uma coluna também pode ter valores densos seguidos por valores esparsos representados dessa forma. Por exemplo, uma linha que contém "1 2 5 2:6 4:3" representa duas colunas densas com os valores 1 e 2, seguida por 5 colunas pouco representadas com os valores 0, 0, 6, 0 e 3. Os índices das colunas esparsas começam a partir de 0, embora 0 represente a terceira coluna.

Retornos

Aplica-se a