[RavenclawDev 188] Re: bypassing the parser

Svetlana Stenchikova svetastenchikova at gmail.com
Thu Nov 9 09:39:34 EST 2006


Hi Antoine (or Dan),

did you, by any chance, remember the syntax for the grammar mapping to get
text instead of a parse in a request/expect agent?

Thank you
Svetlana

On 11/5/06, Antoine Raux <antoine at cs.cmu.edu> wrote:
>
> Hi Svetlana,
>
> RavenClaw actually has access to the (recognized) text corresponding to
> each input, whether it's parsable or not. It's part of the set of
> features that Helios passes to the DM. I forgot exactly how to access
> these features but I believe it's basically a grammar mapping with a
> special prefix that indicates that you're not binding a grammar slot but
> a Helios input structure slot. Sorry I don't remember the exact syntax
> now... If nobody else (Dan?) replies with more precision, I'll find it
> out and email that later in the week. In any case, you might be able to
> get what you want (the text of the input) without modifying anything at
> all but your task specification (grammar mappings)...
>
> Otherwise, the second approach you are proposing (basically adding a
> second "parser") sounds definitely much better than the first one, in
> the sense that it preserves the integrity of the input line (which is
> important for many things in the DM like grounding, reference to
> previous turns....).
>
> I hope Dan will come up with a more precise answer soon :)
>
> antoine
>
> Svetlana Stenchikova wrote:
>
> > I just thought of another way to implement this without changing
> > RavenClaw:
> >
> > Add another server ProcessRawData which receives the raw data input
> > (in parallel with the parser)
> > ProcessRawData outputs the input text in the format of the Parser:
> >
> > [RawText] ( the typed in text )
> >
> > The output is  passed  to the DialogManager.process_parse message
> >
> > The the text will bind to all concept that are expected in the
> > [RawText] grammar mapping.
> >
> > Please let me know your thoughts on this.
> >
> > thank you
> > Svetlana
> >
> >
> > On 11/5/06, *Svetlana Stenchikova* <svetastenchikova at gmail.com
> > <mailto:svetastenchikova at gmail.com>> wrote:
> >
> >     Dan, thank you for  your answer. I have another question.
> >
> >     We are interested in the functionality where a free text can be
> >     entered through TTY (or through free speech recognition).
> >
> >     For example, a user can be asked to describe the event. The
> >     grammar for this description is not available, so we want to store
> >     all of the typed ( or recognized) text, and/or a URL of the
> >     recorded speech  into the concept in a dialog manager.
> >
> >     We need to bypass the parser. I would need to make changes to the
> >     RavenClaw to accommodate this, right?
> >
> >     Currently the user input from the TTY (or ASR)  is processed by
> >     the parser.
> >
> >      The control flow is determined by the .pgm file. This entry
> >     causes it to call process_parse when an output from the parser is
> >     available:
> >
> >
> >
> >     ;; If we have a confidence annotated hypothesis, but
> >     ;; no parse, call phoenix to parse it
> >     ;; ---
> >     RULE: :confhyps & !:parses --> phoenix.phoenixparse
> >     IN: :confhyps :npow :pow :clip_info
> >     OUT: :total_numparses :parses :input_source
> >     LOG_OUT: :parses
> >
> >
> >
> >     So I plan to add another entry:
> >
> >      ;; If we have a confidence annotated hypothesis, but
> >     ;; no parse, call DM directly
> >     ;; ---
> >     RULE: :confhyps & !:parses --> DM.process_raw
> >     IN: :confhyps :npow :pow :clip_info
> >     OUT:
> >     LOG_OUT:
> >
> >
> >
> >     Add process_raw() to
> >
> >     Libraries/RavenClaw/DMInterfaces/GalaxyInterfaceFunctions.h&
> >     implement in GalaxyInterface.cpp
> >
> >
> >     process_raw() function will be called whenever an output from the
> >     TTY (or ASR) is received. So, this output will go to both parser
> >     and DialogManager.process_raw.
> >     process_raw()  assigns the text to a concept (but only in the case
> >     when the concept is currently expected):
> >     For every expected concept as compiled by
> >     CDMCoreAgent::compileExpectationAgenda():
> >     If a concept is a "raw speech" concept,  set its value to the raw
> >     text received in an  input frame  to process_raw
> >     I would have to add a type to a concept to indicate that it allows
> >     "raw text" input.
> >
> >
> >     Does this implementation plan make sense?
> >
> >     Could you please make any suggestions?
> >
> >     Jahanzeb must have done something similar because his application
> >     can record user's input. Do you know how that was implemented?
> >
> >
> >
> >     Thank you,
> >     Svetlana
> >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.srv.cs.cmu.edu/pipermail/ravenclaw-developers/attachments/20061109/44938464/attachment.html


More information about the Ravenclaw-developers mailing list