求冰蕉日文本banadaice和在游戏中心遇到镜音连,两个有一个就好,有两个最好,求发邮箱2841216045@qq.com


本文章记录着我学Qt几个月来的笔記其中包括着控件的使用,样式表绘图事件, 其他事件Gstreamer等!还有很多东西,如果有问题的地方希望大家可以评论告诉我,或者私信也可以大家一起进步,谢谢啦!转载请标明连接!_
笔记多来源与书籍以及广大互联网大神以及自己理解的知识点。

对应地提供了多種类型的GstElementFactory对象它们是通过特定的工厂名称来进行区分的。
例如通过代码:gst_element_factory_find() 函数获得了一个名为 mad 的工厂对象它之后可以用来创建与之对應的MP3解码器元件
成功的创建完工厂对象以后,就可以 通过 gst_element_factory_create() 函数来创建特定的 GstElement 对象了该函数在调用时有两个参数,分别是
需要用到的工厂對象以及即将创建的元件名称。元件名称可以用查询的办法获得也可以通过传入空指针 NULL 来生成工厂对象的默认元件
当创建的 GstElement 不能使用嘚时候,必须将其销毁 销毁函数是
衬垫:就是端口,与外界进行交流的唯一的接口 (衬垫是在根据不同的工厂对象去创建元件以后 元件自动带有的端口) 创建完成元件对象以后,可以通过 gst_element_get_pad() 获得该元件的指定衬垫 这个代码将返回 element 元件中 名为 src 的衬垫; st_element_get_pad_list, 这个语句是查询 这个元件中的所以 衬垫(衬垫名字是系统自带的哈!); 衬垫可以看出是元件的代言人因为他要负责向外界描述该元件所具有的能力 struct _GstCaps { 用来描述元件所具有的能力 - 可以说它是元件的代言人,去用它说元件的属性 例如:对mad 元件的能力描述 箱柜 是容器元件其本身 也是 GstElement 的对象,则也可以被其他的箱柜所包含 利用箱柜可以将需要处理的多个元件组合成一个逻辑元件,由于 不再需要对箱柜中的元件逐个进行操作因此能够佷容易地利用它来构造更加复杂的管道 在 GStreamer 应用程序中使用的箱柜主要有两种类型: GstPipeline 管道是最常用到的容器 , 对与一个 GStreamer 应用程序来讲 其顶層箱柜必须是一条管道 GstThread 线程的作用在于能够提供同步处理能力,如果GStreamer应用程序需要进行严格的音视频同步一般都需要用到这种类型的箱櫃。 Gstremer 框架提供了两种方法来创建 箱柜:一种是借助与工厂方法 第二种是使用特定的函数 //根据线程对象,同时为其指定唯一的名称 //根据给萣的名称创建一个特定的管道对象 箱柜成功创建以后,就可以调用 gst_bin_add() 函数将已经存在的元件添加到其中了 从箱柜中找到特定的元件也是可鉯的使用函数 gst_bin_by_name() 函数实现 GStreamer框架中的一个箱柜能够添加到另一个箱柜之中,因此有可能会出现箱柜嵌套的情况gst_bin_get_by_name()函数在查 找元件时会对嵌套嘚箱柜作递归查找。元件有添加到箱柜之中以后在需要的时候还可以从中移出,这是通过调用gst_bin_remove()函数来完成的: 因为 衬垫的问题 箱柜中引入了 精灵衬垫的概念 具有精灵衬垫的箱柜行为与元件是完全相同的, 所以元件具有的属性它都具有 所以针对元件等够进行的操作也可鉯对箱柜进行,则向箱柜中加入
在引入了元件和衬垫的概念之后GStreamer对多媒体数据的处理过程就变得非常清晰了:通过将不同元件的衬垫依佽连接起来构成一条媒体处 理管道,使数据在流经管道的过程能够被各个元件正常处理最终实现特定的多媒体功能。 三个基本元件构成:数据源元件只负责产生数据它的输出衬垫与过滤器元件的输入衬垫相连;过滤器元件负责从自己的输入衬垫中获取数据,
并在经过特萣的处理之后将结果通过输出衬垫传给与之相连的接收器元件;接收器元件只负责接收数据,它的输入衬垫与过滤器元件的输出 衬垫相連负责对最终结果进行相应的处理。 当GStreamer框架中的元件通过管道连接好之后它们就开始了各自的处理流程,期间一般会经历多次状态切換其中每个元件在特定时刻 将处于如下四种状态之一: NULL 这是所有元件的默认状态,表明它刚刚创建还没有开始做任何事情。
READY 表明元件巳经做好准备随时可以开始处理流程。 PAUSED 表明元件因某种原因暂时停止处理数据 PLAYING 表明元件正在进行数据处理。 默认情况下管道及其包含的所有元件在创建之后将处于NULL状态,此时它们不会进行任何操作当管道使用完毕之后,不要忘记重新将管道的状态切换回NULL状态让其Φ包含的所有元件能够有机会释放它们正在占用的资源。
管道真正的处理流程是从第一次将其切换到READY状态时开始的此时管道及其包含的所有元件将做好相应的初始化工作,来为即将执行的数据 处理过程做好准备对于一个典型的元件来讲,处于READY状态时需要执行的操作包括咑开媒体文件和音频设备等或者试图与位于远端的媒体
处于READY状态的管道一旦切换到PLAYING状态,需要处理的多媒体数据就开始在整个管道中流動并依次被管道中包含的各个元件进行处理, 从而最终实现管道预先定义好的某种多媒体功能GStreamer框架也允许将管道直接从NULL状态切换到PLAYING状態,而不必经过中间的READY状态
正处于播放状态的管道能够随时切换到PAUSED状态,暂时停止管道中所有数据的流动并能够在需要的时候再次切換回PLAYING状态。如果需要插 入或者更改管道中的某个元件必须先将其切换到PAUSED或者NULL状态,元件在处于PAUSED状态时并不会释放其占用的资源 视频流嘚推送采用 UDP 传输! gst-play-1.0 多媒体路径 也是可以播放的 用来测量 多媒体 好不好用是最正好的了
缺少 mad 播放是会失败的! uri 在播放网络 地址的时候,不需偠 加 file:// 但是他在播放本地程序的时候一定要 uri=file://本地地址
  

  

  
  1. 注意在使用 vlc 的时候, 使用 udp 推流的时候!
    VLC 使用技巧以及教程:
    打开多个文件 -> 添加 -> 右下角播放那里的转换 -> 在目标文件中选择游览即可 -> 将改好的文件进行保存
    下载视频用(通过将网络地址视频 转换成本地的 mp4 视频)

  2. GDK+ 也是一个图形化堺面编程库 其类似与 Qt 这样的库

  3. 直接播放 internet 上的文件而不在本地保存就被称为 流播放

此外您可以添加一个指标列表,该指标可稍后用于评估但它们不会影响培训。 在这种情况下我们想使用您在前面提到的入门中看到的二进制交叉熵和Adam优化器。 Keras还包括一个方便的.summary()函数以概述模型和可用于训练的参数数量:

您可能会注意到,第一层有8575个参数下一层有6个参数。 这些是从哪里来的

看箌,每个特征向量有1714个维然后有5个节点。 我们需要为每个要素维和每个节点分配权重这些权重需要1714 * 5 = 8570参数,然后每个节点还要再加上5倍嘚附加偏差即获得8575个参数。 在最后一个节点中我们还有另外5个权重和一个偏差,这使我们获得6个参数

整齐! 你快到了。 现在该开始使用.fit()函数进行训练了

由于神经网络中的训练是一个迭代过程,因此训练不会在完成后立即停止 您必须指定要模型训练的迭代次数。 这些完成的迭代通常称为epoch 我们希望将其运行100个纪元,以便能够看到每个纪元后训练损失和准确性如何变化

您必须选择的另一个参数是批量大小 批次大小决定了我们在一个时期中要使用多少个样本这意味着一次向前/向后通过中要使用多少个样本。 由于它需要更少的运行時间因此提高了计算速度,但同时也需要更多的内存并且随着批处理量的增加,模型可能会退化 由于我们的培训集很小,因此我们鈳以将其设为小批量:

现在您可以使用.evaluate()方法来测量模型的准确性。 您可以对训练数据和测试数据都执行此操作 我们期望训练数据比测試数据具有更高的准确性。 发球时间越长您训练神经网络的可能性就越大,它开始过度拟合

请注意,如果您重新运行.fit()方法则将从先湔训练中计算出的权重开始。 在再次开始训练模型之前请确保再次编译模型。 现在让我们评估准确性模型:

您已经可以看到模型拟合过喥因为它对于训练集达到了100%的准确性。 但这是预料之中的因为此模型的纪元数相当大。 但是测试集的准确性已经超过了我们先前使用BOW模型进行的Logistic回归,这在我们的进步方面迈出了一大步

为了使您的生活更轻松,您可以使用此小帮手功能根据“ 回调来可视化训练和測试数据的损失和准确性 该回调将自动应用于每个Keras模型,记录损耗和可以在.fit()方法中添加的其他 在这种情况下,我们只对准确性感兴趣 此辅助函数使用绘图库:

要使用此功能,只需在history字典中调用具有所收集的准确性和损失的plot_history()

基准模型的准确性和损失

您可以看到自训練集达到100%的准确性以来,我们对模型的训练时间过长 查看模型何时开始过度拟合的一个好方法是,验证数据的损失何时开始再次上升 这往往是停止模型的好地方。 您可以在本培训中看到20-40个纪元

注意:训练神经网络时,应使用单独的测试和验证集 通常,您要做的是獲取验证精度最高的模型然后使用测试集对模型进行测试。

这样可以确保您不会过度拟合模型 使用验证集选择最佳模型是数据泄漏 (戓“***”)的一种形式,可以从数百种数据中挑选出产生最佳测试分数的结果 当模型中使用训练数据集之外的信息时,就会发生数据泄漏

在这种情况下,我们的测试和验证集是相同的因为我们的样本量较小。 如前所述当您有大量样本时,(深度)神经网络的效果朂佳 在下一部分中,您将看到将单词表示为矢量的另一种方法 这是处理单词的一种非常令人兴奋且功能强大的方法,您将看到如何将單词表示为密集向量

文本被认为是序列数据的一种形式,类似于天气数据或财务数据中的时间序列数据 在以前的BOW模型中,您已经看到叻如何将整个单词序列表示为单个特征向量 现在,您将看到如何将每个单词表示为向量 有多种矢量化文本的方法,例如:

  • 每个单词表礻的单词作为矢量
  • 每个字符表示为矢量的字符
  • N-gram表示为向量的单词/字符(N-gram是文本中多个后续单词/字符的重叠组)

在本教程中您将看到如何將单词表示为向量,这是在神经网络中使用文本的常用方法 将单词表示为向量的两种可能方式是单热编码和单词嵌入。

将单词表示为矢量的第一种方法是创建所谓的“ 编码只需将词汇长度的矢量与语料库中每个单词的条目一起输入即可。

这样对于每个单词,给定它在詞汇表中有一个点除了设置为1的单词的对应点之外,每个地方都有一个零向量 就像您想象的那样,对于每个单词这可能会成为一个佷大的向量,并且不会像单词之间的关系那样提供任何其他信息

假设您有一个城市列表,如以下示例所示:

使用此表示形式您可以使鼡scikit-learn提供的OneHotEncoder将我们之前获得的分类值编码为一个单编码的数字数组。 OneHotEncoder希望每个分类值都在单独的行中因此您需要调整数组的OneHotEncoder ,然后可以应鼡编码器:

您可以看到分类整数值表示数组的位置该值为1 ,其余为0 当您具有无法表示为数字值但仍希望能够在机器学习中使用的分类功能时,通常会使用此功能 这种编码的一个用例当然是文本中的单词,但是最显着地用于类别 这样的类别可以是例如城市,部门或其怹类别

此方法将单词表示为密集单词向量(也称为单词嵌入),这些单词向量与硬编码的一键编码不同 这意味着单词嵌入将更多信息收集到更少的维度。

请注意嵌入词一词并不像人类那样理解文本,而是映射了语料库中使用的语言的统计结构 他们的目的是将语义含義映射到几何空间中。 然后将该几何空间称为嵌入空间

这将在语义上将相似的词映射在嵌入空间上例如数字或颜色。 如果嵌入很好哋抓住了单词之间的关系那么像矢量算术这样的事情就应该成为可能。 该研究领域的一个著名例子是绘制

你怎么能得到这样的词嵌入? 您有两个选择 一种方法是在训练神经网络时训练单词嵌入。 另一种方法是使用可以直接在模型中使用的预训练词嵌入 在那里,您可鉯选择在训练过程中使这些词嵌入保持不变也可以对其进行训练。

现在您需要将数据标记化为可由单词嵌入使用的格式。 Keras为和提供了兩种便捷的方法您可以使用它们来准备文本。

您可以从使用Tokenizer实用程序类开始该类可以将文本语料库向量化为整数列表。 每个整数都映射到字典中的一个值该值对整个主体进行编码,字典中的键本身就是词汇术语 您可以添加参数num_words ,该参数负责设置词汇表的大小 然后將保留最常见的num_words单词。 我有从上一个示例准备的测试和培训数据:

该索引是在后文中最常见的话您可以通过字看有序the具有指数1 重要的昰要注意索引0是保留的,没有分配给任何单词 这个零索引用于填充,我将在稍后介绍

未知单词(不在词汇表中的单词)在word_count + 1表示,因為它们也可以保存一些信息 通过查看Tokenizer对象的word_index字典,可以看到每个单词的索引:

使用CountVectorizer 我们可以堆叠单词计数的向量,并且每个向量的长喥都是相同的(总语料库词汇量的大小) 使用Tokenizer时,结果向量等于每个文本的长度并且数字不表示计数,而是与字典tokenizer.word_index的单词值相对应

峩们遇到的一个问题是,在大多数情况下每个文本序列的单词长度都不同。 为了解决这个问题您可以使用pad_sequence() ,它简单地用零pad_sequence()单词序列 默认情况下,它前面加零但我们要附加它们。 通常您是否在前面加上零都无所谓。

另外您可能想添加一个maxlen参数来指定序列应多长时間。 这将剪切超出该数目的序列 在以下代码中,您可以看到如何用Keras填充序列:

从前面的示例中学到的第一个值表示词汇表中的索引。 您还会看到生成的特征向量主要包含零因为您的句子很短。 在下一部分中您将看到如何在Keras中使用单词嵌入。

请注意此时,我们的数據仍是硬编码的 我们没有告诉Keras通过连续的任务来学习新的嵌入空间。 现在您可以使用Keras的“ ,该将使用先前计算的整数并将其映射到嵌叺的密集向量 您将需要以下参数:

有了Embedding层,我们现在有了两个选择 一种方法是获取嵌入层的输出并将其插入Dense层。 为此您必须在两者の间添加一个Flatten层,以为Dense层准备顺序输入:

现在您可以看到我们有87350个新参数要训练 这个数字来自vocab_size embedding_dim 使用随机权重初始化嵌入层的这些权重然后在训练过程中通过反向传播进行调整。 该模型将按句子顺序出现的单词作为输入向量 您可以使用以下方法进行训练:

第一个模型嘚准确性和损失

从性能中可以看出,这通常不是一种非常可靠的处理顺序数据的方法 在处理顺序数据时,您希望专注于查看局部和顺序信息而不是绝对位置信息的方法

在最大池化的情况下,您要为每个要素维取池中所有要素的最大值 如果使用平均池,则取平均值但朂大池似乎更常用,因为它会突出显示较大的值

全局最大/平均池采用所有功能的最大/平均值,而在其他情况下则必须定义池大小。 Keras再佽拥有自己的图层您可以在顺序模型中添加该图层:

最大合并模型的准确性和损失

您已经可以在我们的模型中看到一些改进。 接下来您将看到我们如何使用预训练的词嵌入,以及它们如何帮助我们建立模型

我们刚刚看到了一个示例,该示例将联合学习单词嵌入合并到峩们要解决的较大模型中

另一种选择是使用预先计算的嵌入空间,该空间利用更大的语料库 通过简单地在大量文本语料库上训练单词嵌入,可以预先计算单词嵌入 其中最流行的方法是开发了谷歌和斯坦福NLP集团开发(用于Word表示全球向量)。

请注意这些是具有相同目标嘚不同方法。 Word2Vec通过使用神经网络实现了这一目标而GloVe通过共现矩阵并通过了矩阵***实现了这一目标。 在这两种情况下您都在处理降维問题,但是Word2Vec更加准确而GloVe的计算速度更快。

在本教程中您将看到如何使用斯坦福大学NLP集团的GloVe单词嵌入,因为它们的大小比Google提供的Word2Vec单词嵌叺更易于管理 继续并从下载6B(训练有60亿个单词)的单词嵌入(822 MB)。

您也可以在主页上找到其他单词嵌入 您可以通过谷歌找到预训练Word2Vec的嵌入 。 如果您想训练自己的单词嵌入可以使用 Python软件包(使用Word2Vec进行计算)来高效地进行。 有关如何执行此操作的更多详细信息请参见 。

現在我们已经为您提供了覆盖您可以开始在模型中使用单词嵌入。 您可以在下一个示例中看到如何加载嵌入矩阵 文件中的每一行均以單词开头,后跟特定单词的嵌入向量

这是一个大文件,有400000行每行代表一个单词,后跟作为浮点数流的向量 例如,以下是第一行的前50個字符:

由于您不需要所有单词因此您可以仅关注词汇表中的单词。 由于词汇中的单词数量有限因此可以跳过预训练单词嵌入中的40000个單词中的大多数:

您现在可以使用此函数来检索嵌入矩阵:

精彩! 现在您可以在训练中使用嵌入矩阵了。 让我们继续使用先前的网络进行铨局最大池化看看是否可以改进此模型。 使用预训练词嵌入时您可以选择允许在训练过程中更新嵌入,还是仅按原样使用生成的嵌入姠量

首先,让我们快速看一下有多少个嵌入向量是非零的:

这意味着预训练模型覆盖了95.1%的词汇这很好地覆盖了我们的词汇。 让我们看一下使用GlobalMaxPool1D层时的性能:

未经训练的词嵌入的准确性和损失

由于不对单词嵌入进行额外的培训因此期望它会更低。 但是现在让我们看看如果允许通过使用trainable=True对嵌入进行训练,则这将如何执行:

预训练词嵌入的准确性和损失

您会看到允许对嵌入进行训练是最有效的。 处理夶型训练集时它可以比没有训练集时更快地提高训练过程。 就我们而言这似乎有帮助,但作用不大 这不一定是因为预训练的单词嵌叺。

现在是时候集中精力研究更高级的神经网络模型以查看是否有可能对模型进行增强并使其具有优于先前模型的优势。

卷积神经网络戓也称为convnets是在机器学习中最令人振奋的发展近年来一个。

他们能够从图像中提取特征并将其用于神经网络从而彻底改变了图像分类和計算机视觉。 使它们在图像处理中有用的属性使它们也便于进行序列处理 您可以将CNN想象成能够检测特定模式的专用神经网络。

如果这只昰另一个神经网络那么它与您以前学到的有什么区别?

CNN具有称为卷积层的隐藏层 当您想到图像时,计算机必须处理二维数字矩阵因此您需要某种方法来检测该矩阵中的特征。 这些卷积层能够检测边缘拐角和其他种类的纹理,这使其成为一种特殊的工具 卷积层由多個滤镜组成,这些滤镜在图像上滑动并能够检测特定特征

这是技术的核心,即的数学过程 对于每个卷积层,网络都能够检测到更复杂嘚模式 在Chris Olah的 ,您可以很好地了解这些功能的外观

当您处理诸如文本之类的顺序数据时,可以使用一维卷积但是其思想和应用程序保歭不变。 您仍然希望选择序列中的模式这些模式随着每个卷积层的添加而变得更加复杂。

在下图中您可以看到这种卷积如何工作。 首先从获取具有过滤器内核大小的输入要素的补丁开始 使用此补丁,您可以得到过滤器权重乘以的点积 一维卷积不变于翻译,这意味着鈳以在不同位置识别某些序列 这对于文本中的某些模式可能会有所帮助:

现在让我们看看如何在Keras中使用该网络。 Keras再次提供了各种 您可鉯将其用于此任务。 您需要的层是Conv1D 该层再次具有各种参数可供选择。 现在您感兴趣的是过滤器的数量,内核大小和激活功能

卷积鉮经网络的精度和损失

您会发现,使用此数据集要克服80%的准确性似乎是一个艰巨的障碍而且CNN可能配置不完善。 出现这种停滞的原因可能是:

  • 您拥有的数据不能很好地概括
  • 缺少对调整超参数的关注

CNN在大型训练集上工作得最好在这种训练集下,他们可以找到无法通过逻辑囙归等简单模型获得的概括

深度学习和使用神经网络的关键步骤之一是 。

正如您在到目前为止所使用的模型中所看到的那样即使使用簡单的模型,您也有大量参数需要调整和选择 这些参数称为超参数。 这是机器学习中最耗时的部分可悲的是,还没有一个万事通的解決方案

当您看一下上的比赛时, 是与其他数据科学家同行竞争的最大场所之一您会看到许多获胜的团队和模型经过大量的调整和试验,直到达到最佳状态 因此,当遇到困难并达到平稳状态时不要气our,而要考虑可以优化模型或数据的方式

一种流行的超参数优化方法昰 。 该方法的作用是获取参数列表并使用可以找到的每个参数组合运行模型。 这是最彻底的方法也是最繁琐的计算方法。 您将在这里看到的另一种常见方式是随机搜索 它只是采用参数的随机组合。

为了对应用随机搜索您将需要使用 ,它用作的包装 有了这个包装器,您就可以使用scikit-learn提供的各种工具例如 。 您需要的类是 它通过交叉验证实现随机搜索。 交叉验证是一种验证模型获取整个数据集并将其分为多个测试和训练数据集的方法。

有多种类型的交叉验证 一种类型是k折交叉验证 ,您将在此示例中看到 在这种类型中,数据集被劃分为k个相等大小的集其中一组用于测试,其余部分用于训练 这使您可以运行k次不同的运行,其中每个分区曾经用作测试集 因此,k樾高模型评估越准确,但每个测试集越小

KerasClassifier是拥有一个创建Keras模型的函数。 我们将使用先前的模型但是我们将允许为超参数优化设置各種参数:

接下来,您要定义要在训练中使用的参数网格 它由一个字典组成,每个参数的名称与上一个函数中的名称相同 网格上的空格數为3 * 3 * 1 * 1 * 1 ,其中每个数字都是给定参数的不同选择的数目

您可以看到它很快就会变得很昂贵,但是幸运的是网格搜索和随机搜索都令人尴尬地是并行的,并且这些类都带有n_jobs参数可让您并行测试网格空间。 使用以下字典初始化参数网格:

现在您已经准备好开始运行随机搜索 在此示例中,我们遍历每个数据集然后您要以与以前相同的方式预处理数据。 之后您将使用上一个函数并将其添加到KerasClassifier包装器类中,其中包括时期数

然后,将得到的实例和参数网格用作RandomSearchCV类中的估计量 另外,您可以选择k折交叉验证中的折数在这种情况下为4。您在前媔的示例中已经看过了此代码段中的大多数代码 除了RandomSearchCVKerasClassifier ,我还添加了一些处理评估的代码:

这需要一段时间这是一个绝佳的机会,可鉯出门呼吸新鲜空气甚至是远足,这取决于您要运行多少个模型 让我们看看我们有什么:

有趣! 由于某种原因,测试准确性高于训练准确性这可能是因为在交叉验证期间分数存在较大差异。 我们可以看到我们仍然无法突破可怕的80%对于给定大小的数据,这似乎是自嘫的限制 请记住,我们的数据集很小而卷积神经网络往往在大数据集上表现最佳。

为CV的另一种方法是嵌套交叉验证 (示出 当超参数還需要进行优化时使用)。 之所以使用此功能是因为生成的非嵌套CV模型对数据集有偏见,这可能导致过于乐观的得分 您会看到,当像茬上一个示例中一样进行超参数优化时我们正在为该特定训练集选择最佳的超参数,但这并不意味着这些超参数可以得到最佳的概括

囿了它,您已经了解了如何使用Keras进行文本分类并且我们已经从采用逻辑回归的词袋模型转变为导致卷积神经网络的越来越先进的方法。

您现在应该熟悉词嵌入它们为何有用,以及如何在训练中使用预先训练的词嵌入 您还学习了如何使用神经网络,以及如何使用超参数優化从模型中挤出更多性能

,更具体地说是和 是我们在这里没有再讨论的一个大话题。 这些是其他强大且流行的工具可用于处理文夲或时间序列等顺序数据。 目前神经网络中还有其他有趣的发展,它们正在 这些都在积极研究中,并且由于LSTM往往会占用大量计算资源因此似乎是有希望的下一步。

您现在已经了解了自然语言处理中的关键基石可以将其用于各种文本分类。 情感分析是最突出的例子泹这包括许多其他应用程序,例如:

  • 电子邮件中的垃圾邮件检测
  • 具有预定义主题的新闻文章的分类

您可以像在本一样使用此知识以及在高级项目中训练的模型,使用Kibana和Elasticsearch对连续的Twitter数据流进行情感分析 你也可以用语音识别像这个方便的结合情感分析或文本分类使用Python中的语音識别库。

如果您想深入研究本文中的各种主题可以查看以下链接:

参考资料

 

随机推荐