我正在尝试进行一些文本分析,以确定给定的字符串是否......在谈论政治。我想我可以创建一个神经网络,其中输入是字符串或单词列表(排序可能很重要?),输出是字符串是否与政治有关。
然而,brain.js 库只接受 0 到 1 之间的数字或 0 到 1 之间的数字数组的输入。如何以能够完成任务的方式强制我的数据?
我正在尝试进行一些文本分析,以确定给定的字符串是否......在谈论政治。我想我可以创建一个神经网络,其中输入是字符串或单词列表(排序可能很重要?),输出是字符串是否与政治有关。
然而,brain.js 库只接受 0 到 1 之间的数字或 0 到 1 之间的数字数组的输入。如何以能够完成任务的方式强制我的数据?
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()有明确的解释和用法
您需要提出模型以将数据转换为元组列表[input, expected_output]
,其中input
0 到 1 之间的数字列表表示给定单词,output
0 到 1 之间的数字表示句子与目标的接近程度分析(政治)。例如,对于句子“The quick brown cat jumped over the lazy dog”,您可能希望给零分。像“总统摆脱腐败丑闻”这样的句子,你可能想给一个非常接近的分数。
如您所见,您最大的挑战实际上是获取数据并对其进行清理。将其转换为训练格式很容易,您可以将单词散列为 0 到 1 之间的数字,并确保处理不同的大小写、标点符号,并且您可能希望对单词进行步进以获得最佳结果。
还有一件事,您可以使用术语相关性算法对训练数据集中单词的重要性进行排名,这样您就可以只选择句子中最k
相关的单词,因为您需要每个句子的数据大小一致。
因此,显然文本不能很好地强制 NN 输入。
朴素贝叶斯分类器看起来正是我想要的。https://github.com/harthur/classifier