4 ms·
Nice work by the O.P. Amusingly a year or so ago I took the Stanford Dependency parser and fed its output tree into a Prolog system to try to pull out the sema
by alanlit 10y ago
Nice work by the O.P.
Amusingly a year or so ago I took the Stanford Dependency parser and fed its output tree into a Prolog system to try to pull out the semantics. It was used to analyze business news (getting at the who's, what's and why's).
The easiest approach was to wrap a very simple DSL around Prolog (which, BTW, Prolog is great at). Then in the DSL (which still retained logical variables and backtracking) you could write things like:
%% Simple statements -- root is an announcement word whose subject and object tell the story.
%% 'IBM announced a new computer today'
announce(Who, About, What) ==>
s+root(['announc', 'releas', 'introduc','launch', 'unveil', 'reveal', 'agre']),
#Dep1,
subject(Who),
Dep1 >> object(About, What).
%% 'IBM has announced a partnership ...' is caught by the above. But 'IBM has entered into a partnership ...' needs
%% a little more work
announce(Who, About, announcement) ==>
s+root(['enter']),
#Obj,
subject(Who),
Obj >> prep_pobj_chain(PPC),
{PPC = [Prep|About]}.
I think a Prolog-based query planner as a front end to Sparql on Wikidata could be quite interesting.
Alanl
- alanlit 10y agoBah -- try again so it is readable !! %% Simple statements -- root is an announcement word whose subject and object tell the story. %% 'IBM announced a new computer today' announce(Who, About, What) ==> s+root(['announc', 'releas', 'introduc','launch', 'unveil', 'reveal', agre']), #Dep1, subject(Who), Dep1 >> object(About, What). %% 'IBM has announced a partnership ...' is caught by the above. But 'IBM has entered into a partnership ...' needs %% a little more work announce(Who, About, announcement) ==> s+root(['enter']), #Obj, subject(Who), Obj >> prep_pobj_chain(PPC), {PPC = [Prep|About]}.