Thanks so much for the quick response!

On Wed, Jun 5, 2013 at 8:54 AM, Ian Jackson <
[email protected]> wrote:

> The parse constructor takes an Incomplete parse node, which you add token
> nodes.
> The tool does the following steps:
>     1) Split the string into tokens
>     2) Create a new string which each token separated by a single space
>     3) Create the "Incomplete parse node".
>     4) Insert the tokens into the "Incomplete parse node".
>     5) Parse the "Incomplete parse node" (You need to decide if you only
> want the best parse or some number of the parses)
>
> private static Pattern untokenizedParenPattern1 = Pattern.compile("([^
> ])([({)}])");
>   private static Pattern untokenizedParenPattern2 =
> Pattern.compile("([({)}])([^ ])");
>
>   public static Parse[] parseLine(String line, opennlp.tools.parser.Parser
> parser, int numParses) {
>     line = untokenizedParenPattern1.matcher(line).replaceAll("$1 $2");
>     line = untokenizedParenPattern2.matcher(line).replaceAll("$1 $2");
>     StringTokenizer str = new StringTokenizer(line);
>     StringBuffer sb = new StringBuffer();
>     List<String> tokens = new ArrayList<String>();
>     while (str.hasMoreTokens()) {
>       String tok = str.nextToken();
>       tokens.add(tok);
>       sb.append(tok).append(" ");
>     }
>     String text = sb.substring(0, sb.length() - 1);
>     /*Create "Incomplete node"*/
>     Parse p = new Parse(text, new Span(0, text.length()),
> AbstractBottomUpParser.INC_NODE, 0, 0);
>     int start = 0;
>     int i=0;
>     for (Iterator<String> ti = tokens.iterator(); ti.hasNext();i++) {
>       String tok = ti.next();
>      /*Add token nodes*/
>       p.insert(new Parse(text, new Span(start, start + tok.length()),
> AbstractBottomUpParser.TOK_NODE, 0,i));
>       start += tok.length() + 1;
>     }
>     Parse[] parses;
>     if (numParses == 1) {
>     /*Parse*/
>       parses = new Parse[] { parser.parse(p)};
>     }
>     else {
>     /*Parse*/
>       parses = parser.parse(p,numParses);
>     }
>     return parses;
>   }
> -----Original Message-----
> From: Jason Scherer [mailto:[email protected]]
> Sent: Wednesday, June 05, 2013 8:37 AM
> To: [email protected]
> Subject: help using Parser class
>
> Hi, I'm having some trouble figuring out how to use the Parser class.
>  Sorry if this is a noob question.
>
> The Parser interface doesn't seem to have any parse() method that accepts
> a tokenized sentence or string.  The parse() methods accept a Parse object,
> i.e. the root of a parse tree, which seems weird to me -- if something is
> already parsed, why do you need to parse it?  The only thing I can think of
> is that you're supposed to pass it an empty Parse node and maybe it fills
> in the children.  But -- how do you tell it what to actually parse?
>
> Meanwhile, the documentation says to use a method from the command line
> tool:
>
> String sentence = *"The quick brown fox jumps over the lazy dog ."*; Parse
> topParses[] = ParserTool.parseLine(sentence, parser, 1);
>
> Is that really the only way to parse a sentence -- to use a class from the
> command line tool?  Also, I can't find any information about the ParserTool
> class anywhere in the javadocs so this is a nonstarter.
>
> Can anyone on the list point me to some information about how to use this
> class?  Thanks.
>
>

Reply via email to