我正在学习机器学习,并且正在尝试为一个实际问题实现解决方案:从人类句子中预测他/她正在尝试执行的编程功能。
我有一系列与一系列描述相关的编程功能(每个独特功能可以有 n > 0 个描述)。
我创建了一个神经网络和一个词袋模型,试图将人类句子“我们从数据库中获取数据”转换为编程函数。到目前为止,它适用于非常简单的示例,但不适用于我的真实数据。
像这样的工作:
"description" | programming function
lala lolo lulu ka | function1
lala lolo lulu ke | function1
lala lolo lulu ko | function1
lala lele lili ka | function2
lala lele lili ki | function2
lala lele lili ko | function2
描述中的每个单词都被转换为神经元输入(如果存在则值为 1,如果不存在则值为 0),并且每个可能的函数都被转换为神经元输出。
我正在使用具有反向传播和 0.005 错误阈值的 pyBrain。神经网络有三层,中间一层有长度:可能的单词数+可能的编程函数数(这是任意的)。
我知道全文搜索或自动完成可能是这项任务的更好选择,但我只是在尝试机器学习,如果可能的话,我希望它能够工作。在我的真实数据中,我有 1000 个与约 500 个函数相关的描述。
所以我的问题是:
- 词袋+神经网络是解决这个问题的好方法吗?
- 也许 Word2vec 是一个更好的选择?
- 如果两者都不好,是否有任何已知的机器学习方法可以与类似的东西一起使用?