java - the - Sentencia Parse Stanford Parser pasando Cadena no una serie de cadenas
stanford nlp github (1)
Para un uso simple, con el tokenizador predeterminado y las opciones predeterminadas de tokenizer para una gramática, existe un método de conveniencia fácil que puede usar:
lp.parse(String)
Pero los métodos de PTBTokenizer
que apunta no toman un FileReader
, simplemente toman un Reader
, por lo que también puede apuntar fácilmente un PTBTokenizer
a una Cadena al envolver la Cadena en un StringReader
. Este es el enfoque correcto si necesita más control sobre cómo ocurre la tokenización.
¿Es posible analizar una oración utilizando Stanford Parser al pasar una cadena y no una matriz de cadenas? Este es el ejemplo que dieron en su breve tutorial ( Ver Documentos ):
Aquí hay un ejemplo:
import java.util.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.parser.lexparser.LexicalizedParser;
class ParserDemo {
public static void main(String[] args) {
LexicalizedParser lp = LexicalizedParser.loadModel("edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz");
lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});
String[] sent = { "This", "is", "an", "easy", "sentence", "." }; // This is the sentence to be parsed
List<CoreLabel> rawWords = Sentence.toCoreLabelList(sent);
Tree parse = lp.apply(rawWords);
parse.pennPrint();
System.out.println();
TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
List<TypedDependency> tdl = gs.typedDependenciesCCprocessed();
System.out.println(tdl);
System.out.println();
}
}
Estoy tratando de ver si puedo hacer esto porque necesito obtener oraciones de una base de datos MySQL y analizarlas directamente como cadenas. Podría cambiar las oraciones y agregar las palabras, comas y punto a una matriz de cuerdas. Sin embargo, para tokenizar estas oraciones, tendría que usar Stanford Tokenizer, PTBTokenizer. El constructor de este tokenizer se enumera aquí
( Ver Documentos )
requiere un objeto "java.io.FileReader", pero no estoy leyendo un archivo del directorio. Así que me pregunto si hay una forma de Parsear la oración directamente pasando una cadena, o si puedo resolver mi problema al tokenizar la oración sin requerir un objeto "java.io.FileReader".