本文整理汇总了Python中nltk.sem.glue.DrtGlue.parse_to_meaning方法的典型用法代码示例。如果您正苦于以下问题:Python DrtGlue.parse_to_meaning方法的具体用法?Python DrtGlue.parse_to_meaning怎么用?Python DrtGlue.parse_to_meaning使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nltk.sem.glue.DrtGlue
的用法示例。
在下文中一共展示了DrtGlue.parse_to_meaning方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: tag_sentences
# 需要导入模块: from nltk.sem.glue import DrtGlue [as 别名]
# 或者: from nltk.sem.glue.DrtGlue import parse_to_meaning [as 别名]
def tag_sentences(self, text, hyp, verbose=False):
"""
Tag a RTEPair as to whether the hypothesis can be inferred from the text.
"""
glueclass = DrtGlue()
text_drs_list = glueclass.parse_to_meaning(text)
if text_drs_list:
text_ex = text_drs_list[0].simplify().toFol()
else:
if verbose: print 'ERROR: No readings were generated for the Text'
hyp_drs_list = glueclass.parse_to_meaning(hyp)
if hyp_drs_list:
hyp_ex = hyp_drs_list[0].simplify().toFol()
else:
if verbose: print 'ERROR: No readings were generated for the Hypothesis'
#1. proof T -> H
#2. proof (BK & T) -> H
#3. proof :(BK & T)
#4. proof :(BK & T & H)
#5. satisfy BK & T
#6. satisfy BK & T & H
result = inference.Prover9().prove(hyp_ex, [text_ex])
if verbose: print 'prove: T -> H: %s' % result
if not result:
bk = self._generate_BK(text, hyp, verbose)
bk_exs = [bk_pair[0] for bk_pair in bk]
if verbose:
print 'Generated Background Knowledge:'
for bk_ex in bk_exs:
print bk_ex
result = inference.Prover9().prove(hyp_ex, [text_ex]+bk_exs)
if verbose: print 'prove: (T & BK) -> H: %s' % result
if not result:
consistent = self.check_consistency(bk_exs+[text_ex])
if verbose: print 'consistency check: (BK & T): %s' % consistent
if consistent:
consistent = self.check_consistency(bk_exs+[text_ex, hyp_ex])
if verbose: print 'consistency check: (BK & T & H): %s' % consistent
return result
示例2: DrtGlueReadingCommand
# 需要导入模块: from nltk.sem.glue import DrtGlue [as 别名]
# 或者: from nltk.sem.glue.DrtGlue import parse_to_meaning [as 别名]
class DrtGlueReadingCommand(ReadingCommand):
def __init__(self, semtype_file=None, remove_duplicates=False,
depparser=None):
"""
:param semtype_file: name of file where grammar can be loaded
:param remove_duplicates: should duplicates be removed?
:param depparser: the dependency parser
"""
if semtype_file is None:
semtype_file = 'drt_glue.semtype'
self._glue = DrtGlue(semtype_file=semtype_file,
remove_duplicates=remove_duplicates,
depparser=depparser)
def parse_to_readings(self, sentence):
""":see: ReadingCommand.parse_to_readings()"""
return self._glue.parse_to_meaning(sentence)
def process_thread(self, sentence_readings):
""":see: ReadingCommand.process_thread()"""
try:
return [self.combine_readings(sentence_readings)]
except AnaphoraResolutionException:
return []
def combine_readings(self, readings):
""":see: ReadingCommand.combine_readings()"""
thread_reading = reduce(add, readings)
return resolve_anaphora(thread_reading.simplify())
def to_fol(self, expression):
""":see: ReadingCommand.to_fol()"""
return expression.fol()
示例3: DrtGlueDemo
# 需要导入模块: from nltk.sem.glue import DrtGlue [as 别名]
# 或者: from nltk.sem.glue.DrtGlue import parse_to_meaning [as 别名]
#.........这里部分代码省略.........
else:
self._select_next_example()
def _select_next_example(self):
#if the current example is not the last example
if self._curExample < len(self._examples)-1:
self._exampleList_store_selection(self._curExample+1)
else:
#go to the first example
self._exampleList_store_selection(0)
def about(self, *e):
ABOUT = ("NLTK Discourse Representation Theory (DRT) Glue Semantics Demo\n"+
"Written by Daniel H. Garrette")
TITLE = 'About: NLTK DRT Glue Demo'
try:
from tkMessageBox import Message
Message(message=ABOUT, title=TITLE).show()
except:
ShowText(self._top, TITLE, ABOUT)
def postscript(self, *e):
self._autostep = 0
self._cframe.print_to_file()
def mainloop(self, *args, **kwargs):
"""
Enter the Tkinter mainloop. This function must be called if
this demo is created from a non-interactive program (e.g.
from a secript); otherwise, the demo will close as soon as
the script completes.
"""
if in_idle(): return
self._top.mainloop(*args, **kwargs)
def resize(self, size=None):
if size is not None: self._size.set(size)
size = self._size.get()
self._font.configure(size=-(abs(size)))
self._boldfont.configure(size=-(abs(size)))
self._sysfont.configure(size=-(abs(size)))
self._bigfont.configure(size=-(abs(size+2)))
self._redraw()
def _toggle_remove_duplicates(self):
self._glue.remove_duplicates = not self._glue.remove_duplicates
self._exampleList.selection_clear(0, 'end')
self._readings = []
self._populate_readingListbox()
self._readingCache = [None for ex in self._examples]
self._curExample = -1
self._error = None
self._drs = None
self._redraw()
def _exampleList_select(self, event):
selection = self._exampleList.curselection()
if len(selection) != 1: return
self._exampleList_store_selection(int(selection[0]))
def _exampleList_store_selection(self, index):
self._curExample = index
example = self._examples[index]
self._exampleList.selection_clear(0, 'end')
if example:
cache = self._readingCache[index]
if cache:
if isinstance(cache, list):
self._readings = cache
self._error = None
else:
self._readings = []
self._error = cache
else:
try:
self._readings = self._glue.parse_to_meaning(example)
self._error = None
self._readingCache[index] = self._readings
except Exception, e:
self._readings = []
self._error = DrtVariableExpression(Variable('Error: ' + str(e)))
self._readingCache[index] = self._error
#add a star to the end of the example
self._exampleList.delete(index)
self._exampleList.insert(index, (' %s *' % example))
self._exampleList.config(height=min(len(self._examples), 25), width=40)
self._populate_readingListbox()
self._exampleList.selection_set(index)
self._drs = None
self._redraw()
示例4: demo_inference_tagger
# 需要导入模块: from nltk.sem.glue import DrtGlue [as 别名]
# 或者: from nltk.sem.glue.DrtGlue import parse_to_meaning [as 别名]
def demo_inference_tagger(verbose=False):
tagger = RTEInferenceTagger()
text = 'John see a car'
print 'Text: ', text
hyp = 'John watch an auto'
print 'Hyp: ', hyp
# text_ex = LogicParser().parse('exists e x y.(david(x) & own(e) & subj(e,x) & obj(e,y) & car(y))')
# hyp_ex = LogicParser().parse('exists e x y.(david(x) & have(e) & subj(e,x) & obj(e,y) & auto(y))')
glueclass = DrtGlue(verbose=verbose)
text_drs_list = glueclass.parse_to_meaning(text)
if text_drs_list:
text_ex = text_drs_list[0].simplify().toFol()
else:
print 'ERROR: No readings were be generated for the Text'
hyp_drs_list = glueclass.parse_to_meaning(hyp)
if hyp_drs_list:
hyp_ex = hyp_drs_list[0].simplify().toFol()
else:
print 'ERROR: No readings were be generated for the Hypothesis'
print 'Text: ', text_ex
print 'Hyp: ', hyp_ex
print ''
#1. proof T -> H
#2. proof (BK & T) -> H
#3. proof :(BK & T)
#4. proof :(BK & T & H)
#5. satisfy BK & T
#6. satisfy BK & T & H
result = inference.Prover9().prove(hyp_ex, [text_ex])
print 'prove: T -> H: %s' % result
if result:
print 'Logical entailment\n'
else:
print 'No logical entailment\n'
bk = tagger._generate_BK(text, hyp, verbose)
bk_exs = [bk_pair[0] for bk_pair in bk]
print 'Generated Background Knowledge:'
for bk_ex in bk_exs:
print bk_ex
print ''
result = inference.Prover9().prove(hyp_ex, [text_ex]+bk_exs)
print 'prove: (T & BK) -> H: %s' % result
if result:
print 'Logical entailment\n'
else:
print 'No logical entailment\n'
# Check if the background knowledge axioms are inconsistent
result = inference.Prover9().prove(assumptions=bk_exs+[text_ex]).prove()
print 'prove: (BK & T): %s' % result
if result:
print 'Inconsistency -> Entailment unknown\n'
else:
print 'No inconsistency\n'
result = inference.Prover9().prove(assumptions=bk_exs+[text_ex, hyp_ex])
print 'prove: (BK & T & H): %s' % result
if result:
print 'Inconsistency -> Entailment unknown\n'
else:
print 'No inconsistency\n'
result = inference.Mace().build_model(assumptions=bk_exs+[text_ex])
print 'satisfy: (BK & T): %s' % result
if result:
print 'No inconsistency\n'
else:
print 'Inconsistency -> Entailment unknown\n'
result = inference.Mace().build_model(assumptions=bk_exs+[text_ex, hyp_ex]).build_model()
print 'satisfy: (BK & T & H): %s' % result
if result:
print 'No inconsistency\n'
else:
print 'Inconsistency -> Entailment unknown\n'