[RavenclawDev 176] Re: bypassing the parser
Svetlana Stenchikova
svetastenchikova at gmail.com
Sun Nov 5 23:19:36 EST 2006
Antoine, I think this would be still useful for me.
Even if I use another server for recording, I still need to bind
recognized text to a concept.
So, in case you remember how to do it with changes just in DM, please let me
know.
thank you,
Svetlana
On 11/5/06, Svetlana Stenchikova <svetastenchikova at gmail.com> wrote:
>
> Thank you Dan and Antoine for your quick response.
>
> Antoine, your suggestion sounds interesting. DM does get called even if
> there is no parse found (I did not think it was)
>
> So, the change would be in a RequestAgent, right?
>
> I will probably still go for the "second parser" because eventually we
> will want to record and save the audio, where, I guess, the audio input will
> go directly to this "parser" which will output the location of the saved
> file.
>
> Thanks!
> 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/20061105/06e78db9/attachment.html
More information about the Ravenclaw-developers
mailing list