stopwordsDefault:机器学习文本转换

可在训练模型之前对数据执行的文本转换。

用法

  stopwordsDefault()

  stopwordsCustom(dataFile = "")

  termDictionary(terms = "", dataFile = "", sort = "occurrence")

  featurizeText(vars, language = "English", stopwordsRemover = NULL,
    case = "lower", keepDiacritics = FALSE, keepPunctuations = TRUE,
    keepNumbers = TRUE, dictionary = NULL,
    wordFeatureExtractor = ngramCount(), charFeatureExtractor = NULL,
    vectorNormalizer = "l2", ...)

参数

dataFile

字符:<string> 包含术语的数据文件(短格式数据)。

terms

术语或类别的可选字符向量。

sort

指定向量化时如何对项进行排序。 支持两种排序:

  • "occurrence":项按遇到的顺序出现。
  • "value":项根据其默认比较进行排序。 例如,文本排序将区分大小写(例如“A”-“Z”-“a”)。

vars

输入变量名称和输出变量名称的字符向量的命名列表。 请注意,所有输入变量的类型必须相同。 对于输入变量和输出变量之间的一对一映射,可以使用命名字符向量。

language

指定数据集中所使用的语言。 支持以下值:

  • "AutoDetect":用于自动语言检测。
  • "English".
  • "French".
  • "German".
  • "Dutch".
  • "Italian".
  • "Spanish".
  • "Japanese".

stopwordsRemover

指定要使用的非索引字删除器。 支持以下三个选项:

  • NULL:不使用非索引字删除器。
  • stopwordsDefault:使用预编译的特定于语言的非索引字列表,其中包括 Microsoft Office 中最常见的单词。
  • stopwordsCustom:用户定义的非索引字列表。 它接受以下选项:dataFile
    默认值是 NULL

case

使用固定区域性规则的文本大小写。 采用以下值:

  • "lower".
  • "upper".
  • "none".
    默认值是 "lower"

keepDiacritics

如果要删除标注字符,请将其设置为 FALSE;如果要保留标注字符,请将其设置为 TRUE。 默认值是 FALSE

keepPunctuations

如果要删除标点符号,请将其设置为 FALSE;如果要保留标点符号,请将其设置为 TRUE。 默认值是 TRUE

keepNumbers

如果要删除数字,请将其设置为 FALSE;如果要保留数字,请将其设置为 TRUE。 默认值是 TRUE

dictionary

包含已加入允许列表的术语的 termDictionary,它接受以下选项:

  • terms,
  • dataFile
  • sort.
    默认值是 NULL。 请注意,非索引字列表的优先级高于字典允许列表,因为在将字典术语添加到允许列表之前已删除非索引字。

wordFeatureExtractor

指定单词特征提取参数。 特征提取机制有两种:

  • ngramCount:基于计数的特征提取(等效于 WordBag)。 它接受以下选项:maxNumTermsweighting
  • ngramHash:基于哈希的特征提取(等效于 WordHashBag)。 它接受以下选项:hashBitsseedorderedinvertHash
    默认值是 ngramCount

charFeatureExtractor

指定字符特征提取参数。 特征提取机制有两种:

  • ngramCount:基于计数的特征提取(等效于 WordBag)。 它接受以下选项:maxNumTermsweighting
  • ngramHash:基于哈希的特征提取(等效于 WordHashBag)。 它接受以下选项:hashBitsseedorderedinvertHash
    默认值是 NULL

vectorNormalizer

通过将向量(行)重新缩放为单位范数来单独对其进行规范化。 采用以下值之一:

  • "none".
  • "l2".
  • "l1".
  • "linf". 默认值是 "l2"

...

发送到计算引擎的其他参数。

详细信息

featurizeText 转换
从给定的文本语料库中生成大量的连续单词序列(称为 n-gram)。 可以通过两种方法实现此目的:

生成一个 n-gram 字典,并将字典中的 ID 作为包中的索引;

对每个 n-gram 进行哈希处理并使用哈希值作为包中的索引。

哈希算法的目的是将可变长度文本文档转换为相等长度数字特征向量,以支持维数缩减,并使特征权重更快的查找。

文本转换应用于文本输入列。 它提供了语言检测、词汇切分、非索引字删除、文本规范化和功能生成功能。 它默认支持以下语言:英语、法语、德语、荷兰语、意大利语、西班牙语和日语。

n-gram 表示为计数向量,向量槽对应于 n-gram(使用 ngramCount 创建)或其哈希(使用 ngramHash 创建)。 在向量空间中嵌入 n-gram 可以高效地比较其内容。 向量中的槽值可以通过以下因素加权:

词频 - 文本中槽的出现次数

逆文档频率 - 一个比率(逆相对槽频率的对数),通过确定槽在整个文本中的出现频率高低程度来衡量槽提供的信息。

词频-逆文档频率 - 词频和逆文档频率的乘积。

一个 maml 对象,用于定义转换。

作者

Microsoft Corporation Microsoft Technical Support

另请参阅

ngramCountngramHashrxFastTreesrxFastForestrxNeuralNetrxOneClassSvmrxLogisticRegression

示例


 trainReviews <- data.frame(review = c( 
         "This is great",
         "I hate it",
         "Love it",
         "Do not like it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I kind of hate it",
         "I do like it",
         "I really hate it",
         "It is very good",
         "I hate it a bunch",
         "I love it a bunch",
         "I hate it",
         "I like it very much",
         "I hate it very much.",
         "I really do love it",
         "I really do hate it",
         "Love it!",
         "Hate it!",
         "I love it",
         "I hate it",
         "I love it",
         "I hate it",
         "I love it"),
      like = c(TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
         FALSE, TRUE, FALSE, TRUE), stringsAsFactors = FALSE
     )

     testReviews <- data.frame(review = c(
         "This is great",
         "I hate it",
         "Love it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I love it",
         "I do like it",
         "I really hate it",
         "I love it"), stringsAsFactors = FALSE)


 outModel <- rxLogisticRegression(like ~ reviewTran, data = trainReviews,
     mlTransforms = list(featurizeText(vars = c(reviewTran = "review"),
     stopwordsRemover = stopwordsDefault(), keepPunctuations = FALSE)))
 # 'hate' and 'love' have non-zero weights
 summary(outModel)

 # Use the model to score
 scoreOutDF5 <- rxPredict(outModel, data = testReviews, 
     extraVarsToWrite = "review")
 scoreOutDF5