| 830 | self.model = self.__class__.model |
| 831 | |
| 832 | def _test_classifier(self, Classifier, **kwargs): |
| 833 | # Assert classifier training + prediction for trivial cases. |
| 834 | v = Classifier(**kwargs) |
| 835 | for document in self.model: |
| 836 | v.train(document) |
| 837 | for type, message in ( |
| 838 | (False, "win money"), |
| 839 | (False, "buy viagra"), |
| 840 | ( True, "fix bug"), |
| 841 | ( True, "loop array")): |
| 842 | self.assertEqual(v.classify(message), type) |
| 843 | # Assert classifier properties. |
| 844 | self.assertEqual(v.binary, True) |
| 845 | self.assertEqual(sorted(v.classes), [False, True]) |
| 846 | self.assertTrue(isinstance(v.features, list)) |
| 847 | self.assertTrue("postgresql" in v.features) |
| 848 | # Assert saving + loading. |
| 849 | v.save(Classifier.__name__) |
| 850 | v = Classifier.load(Classifier.__name__) |
| 851 | self.assertEqual(v.classify("win money"), False) |
| 852 | self.assertEqual(v.classify("fix bug"), True) |
| 853 | os.remove(Classifier.__name__) |
| 854 | # Assert untrained classifier returns None. |
| 855 | v = Classifier(**kwargs) |
| 856 | self.assertEqual(v.classify("herring"), None) |
| 857 | print "pattern.vector.%s.train()" % Classifier.__name__ |
| 858 | print "pattern.vector.%s.classify()" % Classifier.__name__ |
| 859 | print "pattern.vector.%s.save()" % Classifier.__name__ |
| 860 | |
| 861 | def test_classifier_vector(self): |
| 862 | # Assert Classifier._vector() (translates input from train() and classify() to a Vector). |