我有一个用于处理文本的管道,我想添加一个词干处理步骤。
var textPipeline = mlContext.Transforms.Text.NormalizeText("Text", "Html", Microsoft.ML.Transforms.Text.TextNormalizingEstimator.CaseMode.Lower, false, 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 <>来接收字符串向量并返回一个新的字符串向量?
答案 0 :(得分:0)
在玩了很多之后,
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"))
只需创建新类并将属性名称与管道中使用的列名称匹配即可。