使用brain.js神经网络进行文本分析

时间:2016-05-05 06:10:23

标签: neural-network text-analysis brain.js

我正在尝试进行一些文本分析,以确定给定字符串是否......谈论政治。我想我可以创建一个神经网络,输入是一个字符串或一个单词列表(排序可能很重要?)输出是字符串是否与政治有关。

然而,brain.js库只接受0到1之间的数字输入或0到1之间的数字数组。我如何以能够完成任务的方式强制数据?

3 个答案:

答案 0 :(得分:10)

new brain.recurrent.LSTM(); 

这对你有用。

实施例,

var brain = require('brain.js')
var net = new brain.recurrent.LSTM();
net.train([
  {input: "my unit-tests failed.", output: "software"},
  {input: "tried the program, but it was buggy.", output: "software"},
  {input: "i need a new power supply.", output: "hardware"},
  {input: "the drive has a 2TB capacity.", output: "hardware"},
  {input: "unit-tests", output: "software"},
  {input: "program", output: "software"},
  {input: "power supply", output: "hardware"},
  {input: "drive", output: "hardware"},
]);

console.log("output = "+net.run("drive"));


output = hardware

参考此链接=> https://github.com/BrainJS/brain.js/issues/65 这有明确的解释和使用brain.recurrent.LSTM()

答案 1 :(得分:0)

您需要提供模型以将数据转换为元组[input, expected_output]列表,其中input是0到1之间代表给定单词的数字列表,{{1是0到1之间的一个数字,表示句子与客观分析(政治)的接近程度。例如,对于“快速的棕色猫跳过懒狗”的句子,你可能想要得分为零。像“总统摆脱腐败丑闻”这样的句子,你可能想要得到一个非常接近一个的分数。

如您所见,您面临的最大挑战实际上是获取数据并进行清理。将其转换为训练格式很简单,您可以将单词哈希值设置为0到1之间的数字,并确保处理不同的大小写,标点符号,并且您可能需要单词来获得最佳结果。

还有一件事,您可以使用术语相关性算法对训练数据集中单词的重要性进行排名,这样您就可以只选择句子中的前output个相关单词,因为您需要统一的数据每个句子的大小。

答案 2 :(得分:0)

所以很明显,文字并没有很好地强化NN输入。

朴素贝叶斯分类器看起来就像我想要的那样。 https://github.com/harthur/classifier