deeplearning4j - использовать Word2Vec для распознавания именованных сущностей

Я пытаюсь воспроизвести бумажное НЛП (почти) с нуля с помощью deeplearning4j. Я сделал следующие шаги:

  1. загрузить векторы слова SENNA
  2. напишите итератор для набора данных CoNLL'03: для каждого слова я формирую вектор признаков слова путем конкатенации векторов слов его соседних слов (с размером окна = 5)
  3. используйте указанный выше итератор набора данных для обучения простого уровня регрессии, например:
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();

Я пробовал много разных конфигураций, но ни одна из них у меня не сработала. Модель продолжает предсказывать все слова с меткой «О». Буду признателен, если вы укажете, что не так с моим подходом? И какие шаги мне делать дальше? Спасибо!


person Dung Thai    schedule 05.01.2016    source источник
comment
Присоединяйтесь к нам на Gitter и спросите @ raver119 там: gitter.im/deeplearning4j/deeplearning4j   -  person racknuf    schedule 09.01.2016


Ответы (1)


Наш пример настроений word2vec - хорошее место для начала: https://github.com/deeplearning4j/dl4j-0.4-examples/tree/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/recurrent/word2vecsentiment

Это касается выполнения маркировки последовательностей векторов слов (что также является NER)

person Adam Gibson    schedule 25.07.2016