[JAVA] Versuchen Sie es mit GloVe mit Deeplearning4j

Ich werde GloVe mit Deeplearning4j, einer Java-Bibliothek, verwenden.

Annahme

Korpus

Bitte bereiten Sie den Korpus, den Sie lernen möchten, im Voraus vor. Notieren Sie einen japanischen Korpus. Es kann besser sein, die Verben usw. auf die Grundform (Originalform) zu korrigieren, wenn Sie in die Form schreiben.

Lernen

Die Textdatei des Korpus sollte ** input.txt ** sein. Speichern Sie das erstellte Modell als ** model.txt **.

ModelBuild.java


import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer;
import org.deeplearning4j.models.glove.Glove;
import org.deeplearning4j.text.sentenceiterator.BasicLineIterator;
import org.deeplearning4j.text.sentenceiterator.SentenceIterator;
import org.deeplearning4j.text.tokenization.tokenizer.preprocessor.CommonPreprocessor;
import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFactory;
import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory;

import java.io.*;

public class ModelBuild {
    public static void main( String[] args ) throws Exception{
    	
     	//Korpusdatei lesen
    	System.out.println("Lade Daten...");
        File inputFile = new File("input.txt");
    	
        //Als Textdatenklasse lesen
        SentenceIterator iter = new BasicLineIterator(inputFile);
        
        //Erstellen Sie eine Tokenizer-Klasse (Word Split)
        System.out.println("Erstellen Sie einen Tokenizer...");
        TokenizerFactory t = new DefaultTokenizerFactory();
        t.setTokenPreProcessor(new CommonPreprocessor());
        
        //Modell erstellen
        System.out.println("Modell erstellen...");
        Glove glove = new Glove.Builder()
        		.iterate(iter) //Satzdatenklasse
        		.tokenizerFactory(t) //Wortzerlegungsklasse
        		.alpha(0.75) //Parameter im Exponenten der Gewichtungsfunktion
        		.learningRate(0.1) //Anfangslernrate
        		.epochs(25) //Anzahl der Iterationen auf dem Trainingskorpus während des Trainings
        		.layerSize(300) //Anzahl der Dimensionen des Vektors
        		.maxMemory(2) //Maximale Speichernutzung
        		.xMax(100) //Gewichtsfunktionsabschaltung
        		.batchSize(1000) //Anzahl der Wörter, die in einem Mini-Batch gelernt werden sollen
        		.windowSize(10) //Fenstergröße
        		.shuffle(true)
        		.symmetric(true)
        		.build();
        
        //Lernen
        System.out.println("ich lerne...");
        glove.fit();
        
        //Modell speichern
        System.out.println("Modell speichern...");
        WordVectorSerializer.writeWordVectors(glove, "model.txt");
        
        System.out.println("Das Programm ist vorbei");
    }
}

Auswertung

Evaluation.java


import java.io.File;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.Collection;

import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer;
import org.deeplearning4j.models.embeddings.wordvectors.WordVectors;

public class Evaluation {

	public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
		//Modelldatei laden
    	System.out.println("Modelldatei wird geladen...");
    	File inputFile = new File(args[0]);
    	WordVectors vec = WordVectorSerializer.loadTxtVectors(inputFile);
    	
    	//Zeigen Sie die 10 häufigsten Wörter für das Wort an (z. B. "Wetter").
    	System.out.println("Top 10 ähnliche Wörter...");
    	String  word        = "Wetter";
        int     ranking     = 10;
        Collection<String>  similarTop10    = vec.wordsNearest( word , ranking );
        System.out.println( String.format( "Similar word to 「%s」 is %s" , word , similarTop10 ) );
        
        //Kosinusähnlichkeit zeigen (zB "sonnig" und "Regen")
        System.out.println( "Kosinusähnlichkeit zeigen..." );
        String  word1       = "Sonnig";
        String  word2       = "Regen";
        double  similarity  = vec.similarity( word1 , word2 );
        System.out.println( String.format( "The similarity between 「%s」 and 「%s」 is %f" , word1 , word2 , similarity ) );
	}
}

Die Seite, auf die ich mich bezogen habe

Recommended Posts

Versuchen Sie es mit GloVe mit Deeplearning4j
Versuchen Sie es mit Redis mit Java (jar)
Versuchen Sie es mit libGDX
Versuchen Sie es mit Maven
Versuchen Sie es mit powermock-mockito2-2.0.2
Versuchen Sie es mit GraalVM
Versuchen Sie es mit jmockit 1.48
Versuchen Sie es mit Spring Boot mit VS-Code
Versuchen Sie es mit SwiftLint
Versuchen Sie es mit Log4j 2.0
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie es mit einem GPS-Empfänger-Kit mit Raspberry Pi 3 (Ruby).
Versuchen Sie, S3Proxy mit Microsoft Azure Blob Storage zu verwenden
Versuchen Sie, einen anderen Servlet-Container-Steg mit Docker zu verwenden
Versuchen Sie DI mit Micronaut
Versuchen Sie es mit dem Axon Framework
Versuchen Sie es mit Trailblazer
Versuchen Sie es mit der REST-API von JobScheduler
Versuchen Sie es mit der Methode java.lang.Math
Versuchen Sie es mit der WhiteBox von PowerMock
Verwenden Sie Pair mit OpenJDK
Probieren Sie WebSocket mit Jooby aus
Versuchen Sie es mit Talend Teil 2
Versuchen Sie es mit Talend Teil 1
Versuchen Sie es mit der F # -Liste
Versuchen Sie es mit der Methode each_with_index
Versuchen Sie es mit Spring JDBC
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
Versuchen Sie, mit Keycloak mit Spring Security SAML (Spring 5) zu arbeiten.
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie eine DB-Verbindung mit Java
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie es mit Cocoa von Ruby
Versuchen Sie gRPC mit Java, Maven
Japanisieren Sie mit i18n mit Rails
Verwenden von Mapper mit Java (Spring)
Versuchen Sie es mit IntelliJ IDEA, da Sie dies nur einmal tun müssen
Versuchen Sie, XML mit JDOM zu lesen
Versuchen Sie es mit Spring Boot Security
[Rails] Versuchen Sie, Faradays Middleware zu verwenden
[Verarbeitung] Versuchen Sie es mit GT Force.
[Vollständige Programmierung] §2 Versuchen Sie es mit Ruby
Verwenden von PlantUml mit Honkit [Docker]
Versuchen Sie, die Dokumentendatenbank mit X DevAPI mit MySQL Connector / J 8.0.15 zu betreiben
Teil 1: Versuchen Sie, die von Spring Security 5 unterstützte OAuth 2.0-Anmeldung mit Spring Boot zu verwenden
Ordnerkomprimierung mit Scala. Verwenden von java.util.zip.ZipOutputStream.
Probieren Sie Redmine auf dem Mac Docker aus
Ich habe versucht, JOOQ mit Gradle zu verwenden
Versuchen Sie, den Cloudera Manager mit Docker auszuführen
Versuchen Sie, recaptcha mit eingebettetem Jetty zu implementieren.
Versuchen Sie, PostgreSQL-Arrays mit JDBC zu bearbeiten