Skip to content

Commit 86f4d93

Browse files
Anipikjustinormont
authored andcommitted
Added Numeric Ranking Performance Tests (#888)
* added numeric ranking tests * feedback, indentation added * names change, url changes and warmcount changes * url corrected, https corrected and extra lines removed * tlc changed to console environment * https and closing brace added * Code block for MSLR-WEB10K/MSLR-WEB30K to format citation * Add missing semicolon. Missing semicolon is causing the build the fail.
1 parent 1e7b8be commit 86f4d93

File tree

8 files changed

+240
-36
lines changed

8 files changed

+240
-36
lines changed

build.proj

+14-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
99

10+
<Import Project="build/ExternalBenchmarkDataFiles.props" />
1011
<Import Project="$(ToolsDir)VersionTools.targets" Condition="Exists('$(ToolsDir)VersionTools.targets')" />
1112
<UsingTask TaskName="DownloadFilesFromUrl" AssemblyFile="$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll"/>
1213
<PropertyGroup>
@@ -75,10 +76,19 @@
7576
Targets="Pack" />
7677
</Target>
7778

78-
<ItemGroup>
79-
<TestFile Condition="'$(IncludeBenchmarkData)' == 'true'" Include="$(MSBuildThisFileDirectory)/test/data/external/WikiDetoxAnnotated160kRows.tsv"
80-
Url="https://aka.ms/tlc-resources/benchmarks/WikiDetoxAnnotated160kRows.tsv"
81-
DestinationFile="$(MSBuildThisFileDirectory)test/data/external/WikiDetoxAnnotated160kRows.tsv" />
79+
<ItemGroup>
80+
<TestFile Include="$(MSBuildThisFileDirectory)/test/data/external/winequality-white.csv"
81+
Url="https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv"
82+
DestinationFile="$(MSBuildThisFileDirectory)test/data/external/winequality-white.csv" />
83+
</ItemGroup>
84+
85+
<ItemGroup Condition="'$(IncludeBenchmarkData)' == 'true'">
86+
<BenchmarkFile Update="@(BenchmarkFile)">
87+
<Url>https://aka.ms/tlc-resources/benchmarks/%(Identity)</Url>
88+
<DestinationFile>$(MSBuildThisFileDirectory)/test/data/external/%(Identity)</DestinationFile>
89+
</BenchmarkFile>
90+
91+
<TestFile Include="@(BenchmarkFile->'$(MSBuildThisFileDirectory)/test/data/external/%(Identity)')" />
8292
</ItemGroup>
8393

8494
<Target Name="DownloadExternalTestFiles" Inputs="@(TestFile)" Outputs="%(TestFile.DestinationFile)">
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project>
2+
<ItemGroup>
3+
<BenchmarkFile Include="MSLRWeb10KTest240kRows.tsv" />
4+
<BenchmarkFile Include="MSLRWeb10KTrain720kRows.tsv" />
5+
<BenchmarkFile Include="MSLRWeb10KValidate240kRows.tsv" />
6+
<BenchmarkFile Include="WikiDetoxAnnotated160kRows.tsv" />
7+
</ItemGroup>
8+
</Project>
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using System.IO;
6+
using System.Text;
7+
8+
namespace Microsoft.ML.Benchmarks
9+
{
10+
internal class Helpers
11+
{
12+
public static string DatasetNotFound = "Could not find {0} Please ensure you have run 'build.cmd -- /t:DownloadExternalTestFiles /p:IncludeBenchmarkData=true' from the root";
13+
}
14+
15+
// Adding this class to not print anything to the console.
16+
// This is required for the current version of BenchmarkDotNet
17+
internal class EmptyWriter : TextWriter
18+
{
19+
internal static readonly EmptyWriter Instance = new EmptyWriter();
20+
public override Encoding Encoding => null;
21+
}
22+
}

test/Microsoft.ML.Benchmarks/Microsoft.ML.Benchmarks.csproj

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2+
<Import Project="$(RepoRoot)\build\ExternalBenchmarkDataFiles.props" />
23
<PropertyGroup>
34
<OutputType>Exe</OutputType>
45
<LangVersion>7.2</LangVersion>
@@ -22,6 +23,7 @@
2223
</ItemGroup>
2324
<ItemGroup>
2425
<NativeAssemblyReference Include="CpuMathNative" />
26+
<NativeAssemblyReference Include="FastTreeNative" />
2527
</ItemGroup>
2628
<ItemGroup>
2729
<Folder Include="Input\" />
@@ -34,9 +36,13 @@
3436
<None Include="..\data\wikipedia-detox-250-line-data.tsv" Link="Input\wikipedia-detox-250-line-data.tsv">
3537
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3638
</None>
37-
<None Condition="Exists('..\data\external\WikiDetoxAnnotated160kRows.tsv')"
38-
Include="..\data\external\WikiDetoxAnnotated160kRows.tsv"
39-
Link="external\WikiDetoxAnnotated160kRows.tsv">
39+
40+
<BenchmarkFile Update="@(BenchmarkFile)">
41+
<Link>external\%(Identity)</Link>
42+
</BenchmarkFile>
43+
44+
<None Condition="Exists('@(BenchmarkFile->'..\data\external\%(Identity)')')"
45+
Include="@(BenchmarkFile->'..\data\external\%(Identity)')">
4046
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4147
</None>
4248
</ItemGroup>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using BenchmarkDotNet.Attributes;
6+
using Microsoft.ML.Runtime;
7+
using Microsoft.ML.Runtime.Data;
8+
using Microsoft.ML.Runtime.RunTests;
9+
using Microsoft.ML.Runtime.Tools;
10+
using System.IO;
11+
12+
namespace Microsoft.ML.Benchmarks
13+
{
14+
public class Ranking
15+
{
16+
private string _mslrWeb10k_Validate;
17+
private string _mslrWeb10k_Train;
18+
private string _mslrWeb10k_Test;
19+
private string _modelPath_MSLR;
20+
21+
[GlobalSetup(Targets = new string[] {
22+
nameof(TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking),
23+
nameof(TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_LightGBMRanking) })]
24+
public void SetupTrainingSpeedTests()
25+
{
26+
_mslrWeb10k_Validate = Path.GetFullPath(TestDatasets.MSLRWeb.validFilename);
27+
_mslrWeb10k_Train = Path.GetFullPath(TestDatasets.MSLRWeb.trainFilename);
28+
29+
if (!File.Exists(_mslrWeb10k_Validate))
30+
throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Validate));
31+
32+
if (!File.Exists(_mslrWeb10k_Train))
33+
throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Train));
34+
}
35+
36+
[GlobalSetup(Target = nameof(Test_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking))]
37+
public void SetupScoringSpeedTests()
38+
{
39+
_mslrWeb10k_Test = Path.GetFullPath(TestDatasets.MSLRWeb.testFilename);
40+
if (!File.Exists(_mslrWeb10k_Test))
41+
throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Test));
42+
43+
SetupTrainingSpeedTests();
44+
_modelPath_MSLR = Path.Combine(Directory.GetCurrentDirectory(), @"FastTreeRankingModel.zip");
45+
46+
string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
47+
" eval=RankingEvaluator{t=10}" +
48+
" data=" + _mslrWeb10k_Train +
49+
" loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
50+
" xf=HashTransform{col=GroupId}" +
51+
" xf=NAHandleTransform{col=Features}" +
52+
" tr=FastTreeRanking{}" +
53+
" out={" + _modelPath_MSLR + "}";
54+
55+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
56+
{
57+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
58+
}
59+
}
60+
61+
[Benchmark]
62+
public void TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
63+
{
64+
string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
65+
" eval=RankingEvaluator{t=10}" +
66+
" data=" + _mslrWeb10k_Train +
67+
" loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
68+
" xf=HashTransform{col=GroupId} xf=NAHandleTransform{col=Features}" +
69+
" tr=FastTreeRanking{}";
70+
71+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
72+
{
73+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
74+
}
75+
}
76+
77+
[Benchmark]
78+
public void TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_LightGBMRanking()
79+
{
80+
string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
81+
" eval=RankingEvaluator{t=10}" +
82+
" data=" + _mslrWeb10k_Train +
83+
" loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
84+
" xf=HashTransform{col=GroupId}" +
85+
" xf=NAHandleTransform{col=Features}" +
86+
" tr=LightGBMRanking{}";
87+
88+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
89+
{
90+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
91+
}
92+
}
93+
94+
[Benchmark]
95+
public void Test_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
96+
{
97+
// This benchmark is profiling bulk scoring speed and not training speed.
98+
string cmd = @"Test data=" + _mslrWeb10k_Test + " in="+ _modelPath_MSLR;
99+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
100+
{
101+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
102+
}
103+
}
104+
}
105+
}

test/Microsoft.ML.Benchmarks/Text/MultiClassClassification.cs

+55-29
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,9 @@
88
using Microsoft.ML.Runtime.RunTests;
99
using Microsoft.ML.Runtime.Tools;
1010
using System.IO;
11-
using System.Text;
1211

1312
namespace Microsoft.ML.Benchmarks
1413
{
15-
// Adding this class to not print anything to the console.
16-
// This is required for the current version of BenchmarkDotNet
17-
internal class EmptyWriter : TextWriter
18-
{
19-
internal static readonly EmptyWriter Instance = new EmptyWriter();
20-
public override Encoding Encoding => null;
21-
}
22-
2314
public class MultiClassClassification
2415
{
2516
private string _dataPath_Wiki;
@@ -35,40 +26,59 @@ public void SetupTrainingSpeedTests()
3526
_dataPath_Wiki = Path.GetFullPath(TestDatasets.WikiDetox.trainFilename);
3627

3728
if (!File.Exists(_dataPath_Wiki))
38-
{
39-
throw new FileNotFoundException($"Could not find {_dataPath_Wiki} Please ensure you have run 'build.cmd -- /t:DownloadExternalTestFiles /p:IncludeBenchmarkData=true' from the root");
40-
}
29+
throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _dataPath_Wiki));
4130
}
4231

4332
[GlobalSetup(Target = nameof(Test_Multiclass_WikiDetox_BigramsAndTrichar_OVAAveragedPerceptron))]
4433
public void SetupScoringSpeedTests()
4534
{
4635
SetupTrainingSpeedTests();
4736
_modelPath_Wiki = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.zip");
48-
string cmd = @"CV k=5 data=" + _dataPath_Wiki + " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}} xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=OVA{p=AveragedPerceptron{iter=10}} out={" + _modelPath_Wiki + "}";
49-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
37+
38+
string cmd = @"CV k=5 data=" + _dataPath_Wiki +
39+
" loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4}" +
40+
" xf=CategoricalTransform{col=ns}" +
41+
" xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
42+
" xf=Concat{col=Features:FeaturesText,logged_in,ns}" +
43+
" tr=OVA{p=AveragedPerceptron{iter=10}}" +
44+
" out={" + _modelPath_Wiki + "}";
45+
46+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
5047
{
51-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
48+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
5249
}
5350
}
5451

5552
[Benchmark]
5653
public void CV_Multiclass_WikiDetox_BigramsAndTrichar_OVAAveragedPerceptron()
5754
{
58-
string cmd = @"CV k=5 data=" + _dataPath_Wiki + " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}} xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=OVA{p=AveragedPerceptron{iter=10}}";
59-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
55+
string cmd = @"CV k=5 data=" + _dataPath_Wiki +
56+
" loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
57+
" xf=Convert{col=logged_in type=R4}" +
58+
" xf=CategoricalTransform{col=ns}" +
59+
" xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
60+
" xf=Concat{col=Features:FeaturesText,logged_in,ns}" +
61+
" tr=OVA{p=AveragedPerceptron{iter=10}}";
62+
63+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
6064
{
61-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
65+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
6266
}
6367
}
6468

6569
[Benchmark]
6670
public void CV_Multiclass_WikiDetox_BigramsAndTrichar_LightGBMMulticlass()
6771
{
68-
string cmd = @"CV k=5 data=" + _dataPath_Wiki + " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}} xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=LightGBMMulticlass{}";
69-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
72+
string cmd = @"CV k=5 data=" + _dataPath_Wiki +
73+
" loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
74+
" xf=Convert{col=logged_in type=R4}" +
75+
" xf=CategoricalTransform{col=ns}" +
76+
" xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
77+
" xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=LightGBMMulticlass{}";
78+
79+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
7080
{
71-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
81+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
7282
}
7383
}
7484

@@ -78,29 +88,45 @@ public void Test_Multiclass_WikiDetox_BigramsAndTrichar_OVAAveragedPerceptron()
7888
// This benchmark is profiling bulk scoring speed and not training speed.
7989
string modelpath = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.fold000.zip");
8090
string cmd = @"Test data=" + _dataPath_Wiki + " in=" + modelpath;
81-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
91+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
8292
{
83-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
93+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
8494
}
8595
}
8696

8797
[Benchmark]
8898
public void CV_Multiclass_WikiDetox_WordEmbeddings_OVAAveragedPerceptron()
8999
{
90-
string cmd = @"CV tr=OVA{p=AveragedPerceptron{iter=10}} k=5 loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} data=" + _dataPath_Wiki + " xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor=NGramExtractorTransform{ngram=2}} xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D} xf=Concat{col=Features:FeaturesText,FeaturesWordEmbedding,logged_in,ns}";
91-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
100+
string cmd = @"CV k=5 data=" + _dataPath_Wiki +
101+
" tr=OVA{p=AveragedPerceptron{iter=10}}" +
102+
" loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
103+
" xf=Convert{col=logged_in type=R4}" +
104+
" xf=CategoricalTransform{col=ns}" +
105+
" xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor=NGramExtractorTransform{ngram=2}}" +
106+
" xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D}" +
107+
" xf=Concat{col=Features:FeaturesText,FeaturesWordEmbedding,logged_in,ns}";
108+
109+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
92110
{
93-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
111+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
94112
}
95113
}
96114

97115
[Benchmark]
98116
public void CV_Multiclass_WikiDetox_WordEmbeddings_SDCAMC()
99117
{
100-
string cmd = @"CV tr=SDCAMC k=5 loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} data=" + _dataPath_Wiki + " xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor={} charExtractor={}} xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D} xf=Concat{col=Features:FeaturesWordEmbedding,logged_in,ns}";
101-
using (var tlc = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
118+
string cmd = @"CV k=5 data=" + _dataPath_Wiki +
119+
" tr=SDCAMC" +
120+
" loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
121+
" xf=Convert{col=logged_in type=R4}" +
122+
" xf=CategoricalTransform{col=ns}" +
123+
" xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor={} charExtractor={}}" +
124+
" xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D}" +
125+
" xf=Concat{col=Features:FeaturesWordEmbedding,logged_in,ns}";
126+
127+
using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
102128
{
103-
Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
129+
Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
104130
}
105131
}
106132
}

0 commit comments

Comments
 (0)