问题描述
var textPipeline = mlContext.Transforms.Text.normalizeText("Text","Html",microsoft.ml.Transforms.Text.TextnormalizingEstimator.CaseMode.Lower,false,false)
.Append(mlContext.Transforms.DropColumns("Html"))
.Append(mlContext.Transforms.Text.TokenizeIntoWords("Tokens","Text"))
.Append(mlContext.Transforms.Text.RemoveDefaultStopWords("Tokens",language: StopWordsRemovingEstimator.Language.English));
-->stemming<--
.Append(mlContext.Transforms.Conversion.MapValuetoKey("Tokens"))
.Append(mlContext.Transforms.Text.ProduceNgrams("Tokens"))
.Append(mlContext.Transforms.Text.LatentDirichletAllocation("Features","Tokens",numberOfTopics: 20));
在RemoveDefaultStopWords
和MapValuetoKey
之间,我想调用一个CustomMapping
操作,但是我看到的所有示例都是从加载到初始dataview中的数据工作的,而不是管道中各阶段创建的数据。
我如何创建一个Action 来接收字符串向量并返回一个新的字符串向量?
解决方法
在玩了很多之后,
def high_and_low(nums):
nums = [int(i) for i in nums.split(' ')]
return f"{max(nums)}" + " " + f"{min(nums)}"
print(high_and_low("1 810 9 3 4 33 -9 -5 -1"))
只需创建新类并将属性名称与管道中使用的列名称匹配即可。