deeplearning4j - 使用Word2Vec进行命名实体识别

时间:2016-01-05 06:24:42

标签: java deep-learning deeplearning4j

我正在尝试使用deeplearning4j复制论文NLP (almost) from scratch。我已完成以下步骤:

  1. 加载SENNA字向量
  2. 为CoNLL 03数据集编写一个迭代器:对于每个单词,我通过连接其邻居单词的单词向量(窗口大小= 5)形成单词特征向量
  3. 使用上面的数据集迭代器来训练一个简单的回归层,例如:
  4. MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
        .seed(seed).iterations(iterations)
        .learningRate(1e-8f)
        .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
        .list(2)
        .layer(0, new DenseLayer.Builder()
            .nIn(wordVecLayers * windowSize).nOut(hiddenSize)
            .activation("relu")
            .weightInit(WeightInit.DISTRIBUTION)
            .dist(new UniformDistribution(-2.83 / Math.sqrt(hiddenSize), 2.83 / Math.sqrt(hiddenSize)))
            .biasInit(0.0f).build())
        .layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD)
            .nIn(hiddenSize).nOut(types.size())
            .activation("softmax").weightInit(WeightInit.DISTRIBUTION)
            .dist(new UniformDistribution(-2.83 / Math.sqrt(hiddenSize), 2.83 / Math.sqrt(hiddenSize)))
            .biasInit(0.0f).build())
        .backprop(true).pretrain(false)
        .build();
    

    我尝试了很多不同的配置,但没有一个适合我。该模型使用' O' -tag预测所有单词。如果你能指出我的方法有什么问题,我将不胜感激?接下来我应该采取什么措施?谢谢!

1 个答案:

答案 0 :(得分:2)

我们的word2vec情绪示例是一个很好的起点: https://github.com/deeplearning4j/dl4j-0.4-examples/tree/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/recurrent/word2vecsentiment

这包括对单词矢量进行序列标记(也是NER)

相关问题