2017-10-25 1 views
0

Ich beginne gerade mit dem chinesischen Wort Segmenter, und ich möchte es in meiner Android-Anwendung verwenden (in erster Linie, um die Tatoeba Beispielsätze zu analysieren). Ich bin mir nicht sicher, wo ich anfangen soll und suche nach Dokumentation und/oder Beispielen für die Verwendung auf Android. Außerdem habe ich die .jar als Bibliothek in Android Studio importiert, aber ich habe Probleme, die Quelle und Javadoc der Bibliothek hinzuzufügen, wobei das Hauptproblem darin besteht, dass die Bibliothek nicht im Ordner Externe Bibliotheken in der Projektansicht angezeigt wird. Einige gute Startfragen, die ich habe sind:Stanford chinesisches Wort Segmenter in Android Studio

  • Welche Klassen muss ich verwenden, um Text zu segmentieren?
  • Wie behandelt der Segmentierer englische Namen?
  • Gibt es neben der this eine Seite für die Dokumentation? (Ich brauche Dokumentation für die Verwendung in Java, nicht nur als Befehlszeilenprogramm)
  • Gibt es Beispiele für die Verwendung des Segmenters in Android?
  • Muss ich auch die CoreNLP-Bibliothek haben?
  • Gibt es einfachere Alternativen zum Stanford Segmentierer?

Sorry für eine solche grundlegende Frage, aber ich bin wirklich nicht verstehen, wie es zu diesem Zeitpunkt verwenden

Antwort

0

Sie benötigen ein Glas in Ihrem CLASSPATH mit dem Code enthalten und brauchen ein Glas mit diesen Dateien in es (sie können alle in dem chinesischen Modellen Glas zu finden):

edu/stanford/nlp/models/segmenter/chinese/dict-chris6.ser.gz 
edu/stanford/nlp/models/segmenter/chinese/ctb.gz 
StanfordCoreNLP-chinese.properties 

Sie dieses Glas von der Hauptverteilung umfassen könnte den Code zu erhalten:

stanford-corenlp-3.8.0.jar 

Die Datei, die ich oben ist mit dem chinesischen Modelle jar hier gefunden verwiesen: https://stanfordnlp.github.io/CoreNLP/download.html

Sie werden einige kleine Gläser haben, zu erstellen, wenn Sie diese mit einem Android-App integrieren möchten, da es sehr strenge Größenanforderungen sind. Ich würde empfehlen, den Großteil des Codes auszuschneiden, der für das Ausführen des Segmenters nicht erforderlich ist.

Wenn Sie den Stanford-corenlp-3.8.0.jar verwenden, ist dies ein Beispielcode:

package edu.stanford.nlp.examples; 

import edu.stanford.nlp.ling.*; 
import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.util.*; 

import java.util.*; 

public class PipelineExample { 

    public static void main(String[] args) { 
    // set up pipeline properties 
    Properties props = StringUtils.argsToProperties("-props", "StanfordCoreNLP-chinese.properties"); 
    props.setProperty("annotators", "tokenize,ssplit"); 
    // set up Stanford CoreNLP pipeline 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
    // build annotation for a review 
    Annotation annotation = new Annotation("...Chinese text to segment..."); 
    // annotate the review 
    pipeline.annotate(annotation); 
    for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
     for (CoreLabel token : sentence.get(CoreAnnotations.TokensAnnotation.class)) { 
     System.out.println(token); 
     } 
    } 
    } 
} 

Sie wollen einige Arbeit tun, um die Gläser bis auf das absolute Minimum zu schrumpfen, schließlich diese Sie müssen viele Klassen entfernen und sicherstellen, dass die Dinge weiterhin ordnungsgemäß ausgeführt werden.

Sie könnten auch die Standalone-Segmentierer, herunterladen, die den gleichen Prozess läuft, weitere Infos hier:

https://nlp.stanford.edu/software/segmenter.html

Es könnte einfacher sein, die Standalone-Segmentierer Verteilung zu verwenden. Es wird eine Demo mit dem Namen SegDemo.java haben, die in diesem Fall die Verwendung von Java API zeigt. Der Beispielcode, den ich oben angegeben habe, funktioniert nicht, wenn Sie die Klassen aus dem Standalone-Segmentierer verwenden.

Verwandte Themen