ML.NET Cookbook:(18)如何在文本数据上训练模型?

一般来说,所有的ML.NET学习器都希望这些特征是一个浮点向量。因此,如果您的一些数据不是一个float,您需要将其转换为float。

如果我们想学习文本数据,我们需要从文本中“提取特征”。NLP(自然语言处理)的整个研究领域都在处理这个问题。在ML.NET中,我们提供了一些文本特征提取的基本机制:

  • 文本规范化(删除标点符号、变音符号、切换为小写等)

  • 基于分隔符的标记化。

  • 停用词删除。

  • Ngram和skip-gram提取。

  • TF-IDF重缩放。

  • 词袋转换。

NET提供了一个名为TextFeaturizer的“一站式”操作,它将上述步骤作为一个大的“文本特征化”来运行。我们已经在文本数据集上对它进行了广泛的测试,我们确信它的性能相当好,而不需要深入研究操作。

但是,我们还提供了一些基本操作,让您可以自定义NLP处理。下面是我们使用它们的例子。

维基百科 detox 数据集:

Sentiment   SentimentText
1 Stop trolling, zapatancas, calling me a liar merely demonstartes that you arer Zapatancas. You may choose to chase every legitimate editor from this site and ignore me but I am an editor with a record that isnt 99% trolling and therefore my wishes are not to be completely ignored by a sockpuppet like yourself. The consensus is overwhelmingly against you and your trollin g lover Zapatancas,  
1 ::::: Why are you threatening me? I'm not being disruptive, its you who is being disruptive.   
0 " *::Your POV and propaganda pushing is dully noted. However listing interesting facts in a netral and unacusitory tone is not POV. You seem to be confusing Censorship with POV monitoring. I see nothing POV expressed in the listing of intersting facts. If you want to contribute more facts or edit wording of the cited fact to make them sound more netral then go ahead. No need to CENSOR interesting factual information. "
0 ::::::::This is a gross exaggeration. Nobody is setting a kangaroo court. There was a simple addition concerning the airline. It is the only one disputed here.   
// 创建加载器:定义数据列以及它们在文本文件中的位置。
var loader = mlContext.Data.CreateTextLoader(new[] {new TextLoader.Column("IsToxic", DataKind.Boolean, 0),new TextLoader.Column("Message", DataKind.String, 1),},hasHeader: true
);// 加载数据。
var data = loader.Load(dataPath);// 检查从文件中读取的消息文本。
var messageTexts = data.GetColumn<string>(data.Schema["Message"]).Take(20).ToArray();// 应用ML.NET支持的各种文本操作。
var pipeline =// 一站式运行全部文本特征化。mlContext.Transforms.Text.FeaturizeText("TextFeatures", "Message")// 为以后的转换规范化消息文本.Append(mlContext.Transforms.Text.NormalizeText("NormalizedMessage", "Message"))// NLP管道1:词袋。.Append(mlContext.Transforms.Text.ProduceWordBags("BagOfWords", "NormalizedMessage"))// NLP管道2:bag of bigrams,使用散列而不是字典索引。.Append(mlContext.Transforms.Text.ProduceHashedWordBags("BagOfBigrams","NormalizedMessage", ngramLength: 2, useAllLengths: false))// NLP管道3:具有TF-IDF加权的三字符序列包。.Append(mlContext.Transforms.Text.TokenizeIntoCharactersAsKeys("MessageChars", "Message")).Append(mlContext.Transforms.Text.ProduceNgrams("BagOfTrichar", "MessageChars", ngramLength: 3, weighting: NgramExtractingEstimator.WeightingCriteria.TfIdf))// NLP管道4:词嵌入。.Append(mlContext.Transforms.Text.TokenizeIntoWords("TokenizedMessage", "NormalizedMessage")).Append(mlContext.Transforms.Text.ApplyWordEmbedding("Embeddings", "TokenizedMessage",WordEmbeddingEstimator.PretrainedModelKind.SentimentSpecificWordEmbedding));// 让我们训练管道,然后将其应用于相同的数据。
// 请注意,即使在70KB的小数据集上,上面的管道也可能需要一分钟才能完成训练。
var transformedData = pipeline.Fit(data).Transform(data);// 检查结果数据集的某些列。
var embeddings = transformedData.GetColumn<float[]>(mlContext, "Embeddings").Take(10).ToArray();
var unigrams = transformedData.GetColumn<float[]>(mlContext, "BagOfWords").Take(10).ToArray();

欢迎关注我的个人公众号”My IO“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一笑 | 终于知道为什么胖了之后气质会垮了

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

如何在Android应用层中制作一个LED指示灯效果发布时间&#xff1a;2020-12-08 16:12:59来源&#xff1a;亿速云阅读&#xff1a;86作者&#xff1a;Leah本篇文章给大家分享的是有关如何在Android应用层中制作一个LED指示灯效果&#xff0c;小编觉得挺实用的&#xff0c;因此分享…

人工智能时代,学好数学很重要!

随着科技的快速发展&#xff0c;人工智能的重要性日渐显现。而数学知识蕴含着处理智能问题的基本思想与方法&#xff0c;是理解复杂算法的必备要素。在机器学习工作流程中&#xff0c;数学与代码高度交织在一起&#xff0c;代码通常可以根据数学直观地构建&#xff0c;甚至会共…

android编译的错误日志,Android Studio:编译器错误输出窗口在哪里?

当我在Android Studio中“运行”我的项目时&#xff0c;在“消息”窗口中&#xff0c;我得到&#xff1a;Gradle:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task :play01:compileDebug.> Compilation failed; see the compiler erro…

为什么选择ASP.NET Core

什么是.NET有一次小飞去面试&#xff0c;面试官上来就问了一个宏观的问题&#xff1a;“你觉得什么是.NET”&#xff1f;小飞的脑子嗡嗡的&#xff0c;支吾了半天&#xff0c;才吐了一些碎片化的词语&#xff1a;“跨平台、开源、微软…”虽然作为一个.NET人&#xff0c;但是小…

c++中的new_handler

原文地址&#xff1a;http://blog.csdn.net/wzq981264/article/details/673630 在过去或者传统的模式中&#xff0c;当operator new不能满足一个内存分配请求的时候&#xff0c;它会返回一个空指针&#xff0c;但是现在如果operator new不能满足一个内存分配请求的时候&#xf…

抢不到“猫抓杯”怎么办?这些女神更喜欢

▲数据汪特别推荐点击上图进入玩酷屋不久前才送走了西方情人节&#xff0c;男同胞们的第二个“送礼节”----女神节。这个令所有女生翘首、期待、憧憬、摩拳擦掌的日子&#xff0c;令所有男士小心翼翼、挑礼物到崩溃的日子&#xff0c;就要到了。小木作为妇女之友&#xff0c;听…

程序出Bug,一定是环境的锅!

现象前几天&#xff0c;一个客户反映说&#xff0c;他看到的数据顺序是乱的&#xff0c;不是按照日期倒排。但是在测试环境、预生产环境&#xff0c;都无法重现问题&#xff0c;即使使用相同的程序版本。定位查看代码&#xff0c;出问题的功能使用了第三方ORM框架&#xff0c;无…

android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决

在项目中遇到JQuery注入后&#xff0c;执行无效的问题。我们知道必须在网页加载完成后&#xff0c;也就是在onPageFinished()方法被调用后才能执行被注入的JS。但是在有些手机上并不能成功执行&#xff0c;我的解决方案是设置一秒延迟后注入JS&#xff0c;成功了&#xff01;wh…

AIX逻辑卷管理(LVM)

VG PV PP LV LP关系图 转载于:https://www.cnblogs.com/limt/archive/2013/04/06/4199257.html

鸿蒙操作系统如何打通 Windows 操作系统?

华为&#xff1a;我们选择拥抱 Windows华为给出的解决方案是在微软 Windows 操作系统中部署 HarmonyOS 分布式插件。运行 Windows 操作系统的电脑和运行鸿蒙操作系统的华为手机将形成超级终端&#xff0c;文件资源管理器实现互通。在 Windows 文件资源管理器中&#xff0c;将显…

凯立德导航android历史版本,凯立德导航升级2020版

凯立德导航升级2020版是一款非常专业的手机机车导航软件&#xff0c;它可以为大家提供便捷的导航服务&#xff0c;用户只需要输入自己想去的地方&#xff0c;软件会智能推荐一条最便捷的路线&#xff0c;同时会告知用户目的地附近热门的吃喝玩乐场所&#xff0c;有需要的用户来…

用 Python 实现打飞机

全世界只有3.14 % 的人关注了数据与算法之美所用技术和软件python 2.7pygame 1.9.3pyCharm准备工作安装好 pygame 在第一次使用 pygame 的时候&#xff0c;pyCharm 会自动 install pygame。下载好使用的素材。技术实现初始化 pygame首先要初始化 pygame &#xff0c;之后设定一…

QT-Linux开发环境的搭建

转自&#xff1a;http://blog.csdn.net/wh_19910525/article/details/8118381 如果读者需要在Linux下进行开发&#xff0c;可以使用下面简单的步骤来搭建环境&#xff1a; &#xff08;下面以Ubuntu 12.04 为例进行说明&#xff09;1. 下载软件 到http://get.qt.nokia.com/qt/s…

把HttpClient换成IHttpClientFactory之后,放心多了

前言关于HttpClient的使用&#xff0c;个人在很多场景都派上用场了&#xff0c;比如在Winform或后台服务中用其调用接口获取和上传数据、微服务中用其进行各服务之间的数据共享等&#xff0c;到目前来看&#xff0c;似乎还没有出现过什么问题&#xff0c;但当我看到官方文档介绍…

android app银联支付,android app 快速接入银联支付流程(android studio版)

刚接触了下银联支付&#xff0c;在网上搜还是看官方文档银联支付都不是很清晰&#xff0c;所以自己总结一篇&#xff0c;希望可以帮助大家快速集成。一.进入下载官网&#xff0c;选择下载手机控件支付demo&#xff1a;https://open.unionpay.com/ajweb/help/file/techFile?pro…

基础排序算法 – 冒泡排序Bubble sort

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换&#xff0c; 这样一趟过去后,最大或最小的数字被交换到了最后一位&#xff0c; 然后再从头开始进行两两比较交换&#xff0c;直到倒数第二位时结束。 从小到大排序&#xff1a; 原始待排序数组| 6 | 2 | …

这么简单的bug,你改了2天?

大家好&#xff0c;我是Z哥。“这个 bug 的问题不是很明显吗&#xff1f;怎么这么久才搞定&#xff1f;”“就改一行代码&#xff0c;你怎么弄了这么久&#xff1f;”我想上面的言语几乎每个程序员都听到过。特别是面对那些“稍懂技术”的同事的时候。我觉得这篇文章特别适合你…

android最好的3d游戏机,终极盘点:Android必玩十大超猛3D游戏

2010年即将过去&#xff0c;今年是Android平台的发展非常迅猛的一年&#xff0c;系统版本从2.1、2.2一路飙升至2.3&#xff0c;各种手机与平板设备也层出不穷。与此相对的当然就是应用软件的大爆发&#xff0c;根据AndroLib在本周二所公布的数字&#xff0c;Android Market目前…

要学习数据科学知识,这些信息需要知道(数据)

数据科学知识&#xff0c;分享数据干货&#xff0c;追逐科技前沿等方面另外&#xff0c;其他领域的学术进展&#xff0c;资讯以及合适的招聘要获取这些相关的信息&#xff0c;我们觉得这些平台非常的出色&#xff0c;推荐给大家。iNatureID&#xff1a;Plant_ihuman▲ 长按二维…