Skip to content
forked from DrDub/php-nlgen

PHP Natural Language Generation helper classes

License

Notifications You must be signed in to change notification settings

macyli01/php-nlgen

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP Natural Language Generation helper classes
==============================================

These are pure PHP helper classes to implement recursive-descent
natural language generators [1].  The classes provided are an abstract
generator, an ontology container and a lexicon container.

These classes should help build simple to mid-level generators,
speaking about their complexity.  Emphasis has been made in keeping
more advanced features out of the way for simpler cases (i.e., if
there is no need to use the ontology or the lexicon, they can be
skipped).

The generator keeps track of semantic annotations on the generated
text, so as to enable further generation functions to reason about the
text.  A global context blackboard is also available.

This is work in progress, see the ROADMAP for some insights in future
development.

[1] http://duboue.net/blog5.html


How to use it
=============

Look at the examples/ folder, but in a nutshell, subclass the
nlg\Generator class and implemented a function named 'top'. This
function can return either a string or an array with a 'text' and
'sem' for semantic annotations on the returned text.

If you want to use other functions to assemble the text use
$this->gen('name_of_the_function', $data_array_input_to_the_function)
to call it (instead of
$this->name_of_the_function($data_array_input_to_the_function). The
generator abstract class keeps track of the semantic annotations for
you and other goodies.

If the functions that implement the grammar are protected, a dynamic
class can be created with the NewSealed class method. This dynamic
class will have function interception so you can call
$this->name_of_function as usual but actually $this->gen will be
called.

Either way you use it, to call the class, if your instantiated
subclass is $my_gen then $my_gen->generate($input_data_as_an_array)
will return the generated strings. If you want to access the semantic
annotations, use $my_gen->semantics() afterward.

For different use cases, see the examples/ folder.


Learning more about NLG
=======================

I highly recommend Building Natural Language Generation Systems (2000)
by Reiter and Dale.

The SIGGEN site [2] has plenty of good resources. You might also want
to look at the NLG portal at the Association for Computational
Linguistics wiki [3].

Last but not least, you might be interested in the author's blog [4]
and the class notes of his recent NLG course [5].


[2] http://www.siggen.org/
[3] http://aclweb.org/aclwiki/index.php?title=Natural_Language_Generation_Portal
[4] http://duboue.net/blog.html
[5] http://wiki.duboue.net/index.php/2011_FaMAF_Intro_to_NLG

About

PHP Natural Language Generation helper classes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%