TextLoaderSaverCatalog.CreateTextLoader Metodo

Definizione

Overload

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Creare un caricatore TextLoaderdi testo .

public static Microsoft.ML.Data.TextLoader CreateTextLoader (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Options options, Microsoft.ML.Data.IMultiStreamSource dataSample = default);

Parametri

options
TextLoader.Options

Definisce le impostazioni dell'operazione di caricamento.

dataSample
IMultiStreamSource

Posizione facoltativa di un esempio di dati. L'esempio può essere usato per dedurre le annotazioni dei nomi dello slot se presenti e anche il numero di slot in Columns definito con TextLoader.Rangenull indice massimo. Se l'esempio è stato salvato con ML.NET, conterrà anche le informazioni sullo SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)schema nell'intestazione che il caricatore può leggere anche se Columns non è specificato. Per usare lo schema definito nel file, tutte le altre TextLoader.Options anime devono essere lasciate con i valori predefiniti.

Restituisce

Si applica a

ML.NET 3.0.0 e altre versioni
Prodotto Versioni
ML.NET 1.0.0, 1.1.0, 1.2.0, 1.3.1, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 2.0.0, 3.0.0

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

Creare un caricatore TextLoaderdi testo .

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);

Parametri

columns
TextLoader.Column[]

Matrice di colonne TextLoader.Column che definiscono lo schema.

separatorChar
Char

Carattere utilizzato come separatore tra i punti dati in una riga. Per impostazione predefinita, il carattere di scheda viene usato come separatore.

hasHeader
Boolean

Indica se il file ha un'intestazione con nomi di funzionalità. Quando viene specificato un oggetto, true indica che la prima riga nell'oggetto verrà usata per i nomi delle funzionalità e che Load(IMultiStreamSource) quando viene chiamata, la prima riga verrà ignorata. Quando non è disponibile, true indica solo che il caricatore deve ignorare la prima riga Load(IMultiStreamSource) quando viene chiamata, ma le colonne non avranno annotazioni dei nomi di slot. Questo è dovuto al fatto che lo schema di output viene eseguito quando viene creato il caricatore e non quando Load(IMultiStreamSource) viene chiamato.

dataSample
IMultiStreamSource

Posizione facoltativa di un esempio di dati. L'esempio può essere usato per dedurre le annotazioni del nome dello slot se presente e anche il numero di slot in una colonna definita con TextLoader.Rangenull indice massimo. Se l'esempio è stato salvato con ML.NET, conterrà anche le informazioni sullo SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)schema nell'intestazione che il caricatore può leggere anche se columns è null. Per usare lo schema definito nel file, tutti gli altri argomenti animati devono essere lasciati con i relativi valori predefiniti.

allowQuoting
Boolean

Se l'input può includere valori con virgolette doppie. Questo parametro viene usato per distinguere i caratteri separatori in un valore di input dai separatori effettivi. Quando true, i separatori all'interno di virgolette doppie vengono considerati come parte del valore di input. Quando false, tutti i separatori, anche quelli all'interno delle virgolette, vengono considerati come delimitatori di una nuova colonna.

trimWhitespace
Boolean

Rimuovere spazi vuoti finali dalle righe.

allowSparse
Boolean

Se l'input può includere rappresentazioni sparse. Ad esempio, una riga contenente "5 2:6 4:3" indica che sono presenti 5 colonne e l'unico non zero sono colonne 2 e 4, che hanno rispettivamente valori 6 e 3. Gli indici di colonna sono basati su zero, quindi le colonne 2 e 4 rappresentano le colonne 3 e 5th. Una colonna può anche avere valori densi seguiti da valori sparse rappresentati in questo modo. Ad esempio, una riga contenente "1 2 5 2:6 4:3" rappresenta due colonne dense con valori 1 e 2, seguiti da 5 colonne sparse rappresentate con valori 0, 0, 6, 0 e 3. Gli indici delle colonne sparse iniziano da 0, anche se 0 rappresenta la terza colonna.

Restituisce

Esempio

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; }
        }
    }
}

Si applica a

ML.NET 3.0.0 e altre versioni
Prodotto Versioni
ML.NET 1.0.0, 1.1.0, 1.2.0, 1.3.1, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 2.0.0, 3.0.0

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

Creare un caricatore TextLoader di testo inferendo lo schema del set di dati da un tipo di modello di dati.

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);

Parametri di tipo

TInput

Parametri

options
TextLoader.Options

Definisce le impostazioni dell'operazione di caricamento. Definisce le impostazioni dell'operazione di caricamento. Non è necessario specificare un campo Columns, poiché le colonne verranno inferte da questo metodo.

dataSample
IMultiStreamSource

Posizione facoltativa di un esempio di dati. L'esempio può essere usato per dedurre informazioni sulle colonne, ad esempio nomi di slot.

Restituisce

Si applica a

ML.NET 3.0.0 e altre versioni
Prodotto Versioni
ML.NET 1.5.0, 1.6.0, 1.7.0, 2.0.0, 3.0.0

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

Creare un caricatore TextLoader di testo inferendo lo schema del set di dati da un tipo di modello di dati.

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);

Parametri di tipo

TInput

Definisce lo schema dei dati da caricare. Usare campi pubblici o proprietà decorati con LoadColumnAttribute (e possibilmente altri attributi) per specificare i nomi di colonna e i relativi tipi di dati nello schema dei dati caricati.

Parametri

separatorChar
Char

Carattere separatore di colonna. Il valore predefinito è '\t'

hasHeader
Boolean

Indica se il file ha un'intestazione con nomi di funzionalità. Quando viene specificato un oggetto, true indica che la prima riga nell'oggetto verrà usata per i nomi delle funzionalità e che Load(IMultiStreamSource) quando viene chiamata, la prima riga verrà ignorata. Quando non è disponibile, true indica solo che il caricatore deve ignorare la prima riga Load(IMultiStreamSource) quando viene chiamata, ma le colonne non avranno annotazioni dei nomi di slot. Questo è dovuto al fatto che lo schema di output viene eseguito quando viene creato il caricatore e non quando Load(IMultiStreamSource) viene chiamato.

dataSample
IMultiStreamSource

Posizione facoltativa di un esempio di dati. L'esempio può essere usato per dedurre le annotazioni dei nomi dello slot se presenti.

allowQuoting
Boolean

Se l'input può includere valori con virgolette doppie. Questo parametro viene usato per distinguere i caratteri separatori in un valore di input dai separatori effettivi. Quando true, i separatori all'interno di virgolette doppie vengono considerati come parte del valore di input. Quando false, tutti i separatori, anche quelli con virgolette, vengono considerati come delimitatori di una nuova colonna.

trimWhitespace
Boolean

Rimuovere spazi vuoti finali dalle righe.

allowSparse
Boolean

Se l'input può includere rappresentazioni sparse. Ad esempio, una riga contenente "5 2:6 4:3" indica che sono presenti 5 colonne e l'unico non zero sono colonne 2 e 4, che hanno rispettivamente valori 6 e 3. Gli indici di colonna sono basati su zero, quindi le colonne 2 e 4 rappresentano le colonne 3 e 5th. Una colonna può anche avere valori densi seguiti da valori sparse rappresentati in questo modo. Ad esempio, una riga contenente "1 2 5 2:6 4:3" rappresenta due colonne dense con valori 1 e 2, seguiti da 5 colonne sparse rappresentate con valori 0, 0, 6, 0 e 3. Gli indici delle colonne sparse iniziano da 0, anche se 0 rappresenta la terza colonna.

Restituisce

Si applica a

ML.NET 3.0.0 e altre versioni
Prodotto Versioni
ML.NET 1.0.0, 1.1.0, 1.2.0, 1.3.1, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 2.0.0, 3.0.0