PHP \ Python中的Fasttext。 第一步

为什么为什么




长期以来,各种机器学习算法得到普及。 同样,由于大公司在推动技术进步,因此出现了许多开源产品。 其中之一是Fasttext,将在下面进行讨论。

Fasttext-来自Facebook的开发。 该计划的主要目标是对文本进行分类。 文本分类可能需要用于:

  1. 将文字信息组合为“相似”组(一个主题的新闻)
  2. 将具有类似主题的文本分为一组(有关汽车的新闻)
  3. 搜索可能是垃圾邮件的信息
  4. 点击诱饵搜索
  5. ...

实际上,有很多选择,并且列出所有内容是没有意义的;这个想法应该很清楚。

初训


在库页面上,有逐步安装第一培训 说明 。 我不会细说。

他们还提供了各种语言的现成模型,可在此处进行分类

库设置


训练的问题是参数的个性化。 没有任何参数可以保证出色的结果。 您可以在Internet上找到大量带有参数示例的文章( 或不是这样 ),它们可能不适合您,因为它们会带来不令人满意的结果。

仅凭经验可以选择适合您的参数。 以下是对结果有重大影响的那些列表:

- 暗淡 -尺寸控制矢量( 黄油 )的大小:它们越多,它们可以捕获的信息越多,但这需要更多的数据。 但是,如果数据太多,则训练过程会变慢。 默认值为100次测量。 从150开始,为您选择最佳值。

-lr-学习速度。 如果参数很小,则模型对文本更敏感,可能无法区分相似的文本,但是,如果参数很大,则可以“说”文本相似,尽管实际上并非如此。 从0.1开始(默认为0.05)。

- 时代 -时代数。 这是根据您的数据通过的次数。 更多-更好(但可惜,并非总是如此)。 这增加了训练时间。 从150开始(默认为5)。

学习模式 。 从Facebook阅读说明。 很清楚。

- 损失 -比较将如何进行。 这里的一切都是非常独立的,并取决于数据。

小题外话
即使没有足够的文本分类和神经网络的内部机制的知识,也可以得到一个完整的工作模型,这是很酷的。

文字准备


输入文本也很重要。 文字越好,来自模型的信息越好。 准备培训文字的基本规则:

  • 删除所有标签
  • 转换为小写
  • 删除标点符号
  • 删除哈希标签,链接
  • 排除停用词
  • 排除小词(1、2、3个字符。每个人都在决定自己的数据)

有些人写道,您可以简单地将文本驱动到模型中并进行训练。 这个选项不适合我。 我倾向于认为,如果不进行预处理,就会得到质量较差的模型。

准备分类文字


相同的规则在这里适用,但是经验表明,可以通过定形或填塞来补充这些规则。 使用它们可以显着改善( 或恶化 )结果。此外,当您已经形成聚类时,请不要忘记也必须将聚类算法应用于这些聚类,但是要非常小心,因为您可以将相似的主题分解为一个聚类。 这在体育运动中非常明显:该模型知道新闻来自足球。 但是要使模型区分西班牙冠军和意大利冠军是非常困难的。

程式语言


超过真实
就像《家常小伙子》所说:“是的, 没有人在乎

要训​​练模型,您可以选择PHP(使用它,因为大多数网站都写在它上)和Python(有一个库)。 但是有一个非常有趣的时刻 。 如果训练时间对您来说很昂贵,您仍然必须通过从命令行运行fasttext来训练模型。 因此,编写培训代码无关紧要(方便的话,就此编写)。

至于群集机制,则有点复杂( 或更简单 )。 如果您喜欢自行车( 自己控制所有过程,并且需要灵活的控制机制 ),请使用php(如果站点位于php中)编写。 如果您不想编写库并且可以选择语言,那么采用Python可能更好。 我没有注意到速度的显着差异(在代码的速度上,而不是在编写代码的速度上)。 由您决定。

而不是结论


我有一个过去几天完全基于新闻内容建立的模型。 其中的单词大小约为40,000 。 你可以和她一起 。 但是,请记住:

  • 这不是通用模型。 她只训练新闻内容。
  • 该模型不包含数据库中的所有新闻,而仅包含社论(这足以解决任务)。 这意味着该模型在类似新闻中的百分比较低。

Source: https://habr.com/ru/post/zh-CN469917/


All Articles