|There's more than one way to do things|
Re: natural language sentence constructionby mattr (Curate)
|on Jun 18, 2001 at 12:35 UTC||Need Help??|
I think you will have more success if you aim at clearly defining a limited domain and a single use-case, especially if you stick to text report generation and not go into interactive feedback which requires language parsing. You don't need parsing at all if you just want to be able to express system status in English.
Besides defining nouns for system objects and working out the kinds of messages that can be provided, you also need to work on prioritizing what gets told to the user so they don't end up with ten pages of unimportant information when there are one or two really important things that need to be told (emailed) to them. More difficult heuristics are just that, way more difficult.. but if you can provide even a small very minimal AI engine it would be quite useful to people.
Perhaps AI::Fuzzy would be useful in figuring out the best way to express values which are not clearly defined.
You may know about this from CPAN:
As far as parsing goes, there are also some projects like these from freshmeat.net:
But maybe what you really need is CLIPS, an expert system used by NASA and other government institutions. You can get the source code.. a Perl front end to this for even a limited problem space would be very cool! (Hint, Hint..)
"CLIPS is a productive development and delivery expert system tool which
provides a complete environment for the construction of rule and/or
object based expert systems... CLIPS provides a cohesive tool for handling
a wide variety of knowledge with support for three different
programming paradigms: rule-based, object-oriented and procedural.
Rule-based programming allows knowledge to be represented as
heuristics, or "rules of thumb," which specify a set of actions to be
performed for a given situation. Object-oriented programming allows
complex systems to be modeled as modular components (which can be
easily reused to model other systems or to create new components).
The procedural programming capabilities provided by CLIPS are similar
to capabilities found in languages such as C, Pascal, Ada, and LISP."