Test Suites for Grammars

Sentences in the test suite are divided into two classes:

If a sentence should parse accordng to the grammar, the value of trees will be a non-empty list. If a sentence should be rejected according to the grammar, then the value of trees will be None.

 
>>> from nltk.parse import TestGrammar
>>> germantest1 = {}
>>> germantest1['doc'] = "Tests for person agreement"
>>> germantest1['accept'] = [
... 'ich komme',
... 'ich sehe mich',
... 'du kommst',
... 'du siehst mich',
... 'sie kommt',
... 'sie sieht mich',
... 'ihr kommt',
... 'wir kommen',
... 'sie kommen',
... 'du magst mich',
... 'er mag mich',
... 'du folgst mir',
... 'sie hilft mir',
... ]
>>> germantest1['reject'] = [
... 'ich kommt',
... 'ich kommst',
... 'ich siehst mich',
... 'du komme',
... 'du sehe mich',
... 'du kommt',
... 'er komme',
... 'er siehst mich',
... 'wir komme',
... 'wir kommst',
... 'die katzen kommst',
... 'sie komme',
... 'sie kommst',
... 'du mag mich',
... 'er magst mich',
... 'du folgt mir',
... 'sie hilfst mir',
... ]
>>> germantest2 = {}
>>> germantest2['doc'] = "Tests for number agreement"
>>> germantest2['accept'] = [
... 'der hund kommt',
... 'die hunde kommen',
... 'ich komme',
... 'wir kommen',
... 'ich sehe die katzen',
... 'ich folge den katzen'
... ]
>>> germantest2['reject'] = [
... 'ich kommen',
... 'wir komme',
... 'der hunde kommt',
... 'der hunde kommen',
... 'die katzen kommt',
... 'ich sehe der hunde',
... 'ich folge den hund',
... ]
>>> germantest3 = {}
>>> germantest3['doc'] = "Tests for case government and subcategorization"
>>> germantest3['accept'] = [
... 'der hund sieht mich',
... 'der hund kommt',
... 'ich sehe den hund',
... 'ich helfe dem hund',
... ]
>>> germantest3['reject'] = [
... 'ich sehe',
... 'ich helfe',
... 'ich komme den hund',
... 'ich sehe den hund die katzen',
... 'du hilfst mich',
... 'du siehst mir',
... 'du siehst ich',
... 'der hunde kommt mich',
... 'die hunde sehe die hunde',
... 'der hund sehe die hunde',
... 'ich hilft den hund',
... 'ich hilft der hund',
... 'ich sehe dem hund',
... ]
>>> germantestsuites = [germantest1, germantest2, germantest3]
>>> tester = TestGrammar('grammars/german.fcfg', germantestsuites)
>>> tester.run()
Tests for person agreement: All tests passed!
Tests for number agreement: All tests passed!
Tests for case government and subcategorization: All tests passed!