예제 #1
0
    def test_get_similar_words_weighted(self):
        synsets = Synsets()
        self.assertIsNotNone(synsets)

        self.assertEqual(['hack', 'cab', 'chop'],
                         synsets.get_similar_words("hack", weight=3))
        self.assertEqual([], synsets.get_similar_words("hack", weight=10))
예제 #2
0
 def test_get_similar_nouns(self):
     self.assertEquals([
         'cat', 'guy', 'kat', "cat-o'-nine-tails", 'caterpillar', 'big_cat',
         'computerized_tomography'
     ], Synsets.get_similar_nouns("cat"))
     self.assertEquals([], Synsets.get_similar_nouns(""))
     self.assertEquals([], Synsets.get_similar_nouns("lkjghjokg"))
예제 #3
0
    def test_get_similar_adjectives(self):
        synsets = Synsets()
        self.assertIsNotNone(synsets)

        self.assertEqual(['red', 'crimson'],
                         synsets.get_similar_adjectives("red"))
        self.assertEqual([], synsets.get_similar_adjectives(""))
        self.assertEqual([], synsets.get_similar_adjectives("lkjghjokg"))
예제 #4
0
    def test_get_similar_adverbs(self):
        synsets = Synsets()
        self.assertIsNotNone(synsets)

        self.assertEqual(['gently', 'lightly'],
                         synsets.get_similar_adverbs("gently"))
        self.assertEqual([], synsets.get_similar_adverbs(""))
        self.assertEqual([], synsets.get_similar_adverbs("lkjghjokg"))
예제 #5
0
    def test_get_similar_words(self):
        synsets = Synsets()
        self.assertIsNotNone(synsets)

        self.assertEqual(['hack', 'machine_politician', 'cab', 'chop'],
                         synsets.get_similar_words("hack"))
        self.assertEqual([], synsets.get_similar_words(""))
        self.assertEqual([], synsets.get_similar_words("lkjghjokg"))
예제 #6
0
 def test_get_similar_verbs(self):
     self.assertEquals([
         'travel', 'go', 'become', 'run', 'proceed', 'sound', 'function',
         'run_low', 'move', 'survive', 'die', 'belong', 'start', 'blend',
         'fit', 'rifle', 'plump', 'fail'
     ], Synsets.get_similar_verbs("going"))
     self.assertEquals([], Synsets.get_similar_verbs(""))
     self.assertEquals([], Synsets.get_similar_verbs("lkjghjokg"))
예제 #7
0
    def test_get_similarity(self):
        synsets = Synsets()
        self.assertIsNotNone(synsets)

        self.assertEqual([('octopus', 'runt', 0.1),
                          ('octopus', 'prawn', 0.3333333333333333),
                          ('octopus', 'shrimp', 0.0625),
                          ('octopus', 'runt', 0.1),
                          ('octopus', 'prawn', 0.0625),
                          ('octopus', 'shrimp', 0.1111111111111111)],
                         synsets.get_similarity("Octopus", "Shrimp"))
예제 #8
0
파일: synsets.py 프로젝트: lilnana00/3ddd
class IsSynset(DynamicSet):
    NAME = "SYNSET"
    SIMILAR = 'similar'

    def __init__(self, config):
        DynamicSet.__init__(self, config)
        self._synset = Synsets()

    def is_member(self, client_context, value, additional=None):
        if value is not None:
            if additional is not None:
                if IsSynset.SIMILAR in additional:
                    similar = additional[IsSynset.SIMILAR]

                    similars = self._synset.get_similar_words(similar)
                    for word in similars:
                        if word.upper() == value.upper():
                            return True

                else:
                    YLogger.error(self, "Missing 'similar' attribute passed to IsSynset.is_member!")

            else:
                YLogger.error(self, "Missing additional parameters passed to IsSynset.is_member!")

        else:
            YLogger.error(self, "None value passed to IsSynset.is_member!")

        return False
예제 #9
0
 def test_get_similarity(self):
     self.assertEquals([('octopus', 'runt', 0.1),
                        ('octopus', 'prawn', 0.3333333333333333),
                        ('octopus', 'shrimp', 0.0625),
                        ('octopus', 'runt', 0.1),
                        ('octopus', 'prawn', 0.0625),
                        ('octopus', 'shrimp', 0.1111111111111111)],
                       Synsets.get_similarity("Octopus", "Shrimp"))
예제 #10
0
    def is_member(self, client_context, value, additional=None):
        if value is not None:
            if additional is not None:
                if 'similar' in additional:
                    similar = additional['similar']

                    similars = Synsets.get_similar_words(similar)
                    for word in similars:
                        if word.upper() == value.upper():
                            return True

        return False
예제 #11
0
파일: extension.py 프로젝트: lilnana00/3ddd
class SynsetsExtension(Extension):
    def __init__(self):
        self._synsets = Synsets()

    def _get_similarities(self, word1, word2, weight):
        results = self._synsets.get_similarity(word1, word2)
        for result in results:
            if result[2] >= weight:
                return True

        return False

    # execute() is the interface that is called from the <extension> tag in the AIML
    def execute(self, client_context, data):
        del client_context

        words = data.split(" ")
        if words[0] == 'SIMILAR':
            if len(words) == 3:
                word1 = words[1]
                word2 = words[2]
                weight = 0.00
            elif len(words) == 6:
                word1 = words[1]
                word2 = words[2]
                weight = float("%s.%s" % (words[3], words[5]))
            else:
                return "FALSE"

            try:
                if self._get_similarities(word1, word2, weight) is True:
                    return "TRUE"

            except Exception as e:
                YLogger.exception_nostack(self, "Failed to get similarity", e)

        elif words[0] == 'SIMILARS':

            if len(words) == 3:
                word_type = words[1]
                word = words[2]

                if word_type == 'WORDS':
                    results = self._synsets.get_similar_words(word)
                elif word_type == 'VERBS':
                    results = self._synsets.get_similar_verbs(word)
                elif word_type == 'NOUNS':
                    results = self._synsets.get_similar_nouns(word)
                elif word_type == 'ADJECTIVES':
                    results = self._synsets.get_similar_adjectives(word)
                elif word_type == 'ADVERBS':
                    results = self._synsets.get_similar_adverbs(word)
                else:
                    return "FALSE"

                return "TRUE %s" % " ".join([word.upper() for word in results])

        return "FALSE"
예제 #12
0
    def execute(self, context, data):

        words = data.split(" ")
        if words[0] == 'SIMILAR':
            if len(words) == 3:
                word1 = words[1]
                word2 = words[2]
                weight = 0.00
            elif len(words) == 6:
                word1 = words[1]
                word2 = words[2]
                weight = float("%s.%s"%(words[3], words[5]))
            else:
                return "FALSE"

            try:
                results = Synsets.get_similarity(word1, word2)
                for result in results:
                    if result[2] >= weight:
                        return "TRUE"
            except Exception as e:
                print(e)

        elif words[0] == 'SIMILARS':

            word_type = words[1]
            word = words[2]

            if word_type == 'WORDS':
                results = Synsets.get_similar_words(word)
            elif word_type == 'VERBS':
                results = Synsets.get_similar_verbs(word)
            elif word_type == 'NOUNS':
                results = Synsets.get_similar_nouns(word)
            elif word_type == 'ADJECTIVES':
                results = Synsets.get_similar_adjectives(word)
            elif word_type == 'ADVERBS':
                results = Synsets.get_similar_adverbs(word)
            else:
                return "FALSE"

            return "TRUE %s"%" ".join([word.upper() for word in results])

        return "FALSE"
예제 #13
0
파일: extension.py 프로젝트: lilnana00/3ddd
 def __init__(self):
     self._synsets = Synsets()
예제 #14
0
파일: synsets.py 프로젝트: lilnana00/3ddd
 def __init__(self, config):
     DynamicSet.__init__(self, config)
     self._synset = Synsets()
예제 #15
0
 def test_get_similar_words_weighted(self):
     self.assertEquals(['hack', 'cab', 'chop'],
                       Synsets.get_similar_words("hack", weight=3))
     self.assertEquals([], Synsets.get_similar_words("hack", weight=10))
예제 #16
0
 def test_get_similar_adjectives(self):
     self.assertEquals(['red', 'crimson'],
                       Synsets.get_similar_adjectives("red"))
     self.assertEquals([], Synsets.get_similar_adjectives(""))
     self.assertEquals([], Synsets.get_similar_adjectives("lkjghjokg"))
예제 #17
0
 def test_get_similar_adverbs(self):
     self.assertEquals(['gently', 'lightly'],
                       Synsets.get_similar_adverbs("gently"))
     self.assertEquals([], Synsets.get_similar_adverbs(""))
     self.assertEquals([], Synsets.get_similar_adverbs("lkjghjokg"))
예제 #18
0
 def test_get_similar_words(self):
     self.assertEquals(['hack', 'machine_politician', 'cab', 'chop'],
                       Synsets.get_similar_words("hack"))
     self.assertEquals([], Synsets.get_similar_words(""))
     self.assertEquals([], Synsets.get_similar_words("lkjghjokg"))