【问题标题】:TensorflowJS text/string classificationTensorflowJS 文本/字符串分类
【发布时间】:2019-09-18 11:02:56
【问题描述】:

主题

你好。我想在NodeJS 中使用 Tensorflow.js 实现文本分类功能。
它的工作是将字符串与一些预定义的主题相匹配。

示例:

输入String:“我的狗喜欢在沙滩上散步”
预定义主题 Array<String>["dog", "cat", "cow"]
输出:有很多输出变体我很熟悉。这些是一些例子,但如果你能提出更好的建议,那就去做吧!

  • String (最有可能的话题) - 示例:“狗”
  • Object (每个主题都有预测分数)
    示例:{"dog": 0.9, "cat": 0.08, "cow": 0.02}

研究

我知道可以通过过滤主题名称的字符串并执行一些算法来实现类似的结果,但也可以使用 ML 来实现。

已经有一些关于使用字符串、分类文本和使用 TensorFlow 创建自动完成功能的帖子(但不确定TFjs,例如:

您如何提供帮助

我的目标是使用TensorflowJS 进行主题预测。我只需要一个示例,说明使用字符串训练模型或如何对文本进行分类的最佳方法,然后我将自行扩展其余部分。

【问题讨论】:

  • 抱歉,您需要向我们展示您尝试解决问题的方法。研究是不够的,你需要尝试一些东西。完成后,我们会尽力为您提供帮助。

标签: node.js tensorflow machine-learning text tensorflow.js


【解决方案1】:

文本分类有一个额外的挑战,即首先从单词中找到向量。根据所解决问题的性质,有多种方法。在构建模型之前,可以确保将向量与语料库的所有单词相关联。在从语料库中表示向量后,又遇到了另一个稀疏问题。因此需要word embedding。该任务最流行的两种算法是Wor2VecGloVe。 js中有一些实现。或者可以使用here 概述的词袋创建向量。

一旦有了向量,完全连接的神经网络 FCNN 就足以预测文本的主题。其他要考虑的事情是决定文本的长度。如果文本太短,可能会有一些填充等......这是一个模型

const model = tf.sequential();
model.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [lengthSentence]}));
model.add(tf.layers.dense({units: numTopics, activation: 'softmax'}));
model.compile({optimizer: 'sgd', loss: 'categoricalCrossentropy'});

模型的关键要点

模型只是将输入连接到分类输出。这是一个非常简单的模型。但在某些场景下,可以考虑在输入层之后添加嵌入层。

model.add(tf.layers.embedding({inputDim: inputDimSize, inputLength: lengthSentence, outputDim: embeddingDims}))

在其他情况下,LSTM 层可能是相关的

tf.layers.lstm({units: lstmUnits, returnSequences: true})

【讨论】:

    【解决方案2】:

    我从事这样的工作。

    我的代码https://github.com/ran-j/ChatBotNodeJS/blob/master/routes/index.js

    基于https://chatbotsmagazine.com/contextual-chat-bots-with-tensorflow-4391749d0077

    还有他们

    classify('is your shop open today?')
    [('opentoday', 0.9264171123504639)]
    

    但是我的代码还不能预测

    【讨论】:

      猜你喜欢
      • 2019-09-12
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      相关资源
      最近更新 更多