Как будет выглядеть пример Word2Ve c «король, королева и женщина» в DL4J, использующем INDArray с базой данных GloVe? - PullRequest
0 голосов
/ 25 мая 2020

На веб-сайте действительно есть пример решения этой проблемы, но без INDArrays (существует специальный c API для аналогичных случаев, принимающих слова, а не векторы).

Наличие векторов означает мы можем опробовать множество различных преобразований и вычислений - хорошие времена!.

В любом случае, это должно удовлетворить все ваши потребности:

File file = new File("/glove.6B.100d.txt");
Word2Vec word2Vec = WordVectorSerializer.readWord2VecModel(file);

INDArray king = word2Vec.getWordVectorMatrix("king");
INDArray queen = word2Vec.getWordVectorMatrix("queen");
INDArray woman = word2Vec.getWordVectorMatrix("woman");

INDArray kingMinusQueenPlusWoman = king.sub(queen).add(woman);

Collection<String> wordsNearest = word2Vec.wordsNearest(kingMinusQueenPlusWoman, 10);
for (String word : wordsNearest) {
    System.out.println(word);
}

И необходимые зависимости Maven:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-nlp</artifactId>
    <version>1.0.0-beta6</version>
</dependency>
<dependency>
    <groupId>org.nd4j</groupId>
    <artifactId>nd4j-native-platform</artifactId>
    <version>1.0.0-beta6</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...