Pull to refresh
0
0
Send message
Ой, конечно не вопрос. Конечно, train, нормально, даже лучше, звучит, но то такое )
Стенфордские курсы — замечательная штука, и я, например, очень рад интересу, который явно услился в рунете в результате…

Я тоже наслушался этих курсов, начитался Джурафски. Писал почти такой же классификатор, правда делал не сентимент анализ, а классификатор определяющий жанры текста. Для тестирования брал корпуса, вот смех — то, из «библиотека в кармане» — наивный байесовский классификатор отработал на «ура» с англоязычными текстами.

В общем, в результате класс умеет определять является ли текст документалистикой, фантастикой, приключенияи или Драммой (удивительно, но фантастику и приключения отличает пристойно)

Да, и еще, критикам скажу, что сигнатуры методов тут и не могут быть особо другими, потому не удивительно что это похоже на то, что предложенно в курсе по nlp. У меня например такие методы

метод для обучения (у автора «add_example»)

    def learn(self, genre, words):
        if genre not in self.genres:
            self.genres[genre] = 0
        self.genres[genre] += len(words)

        for word in words:
            if not word in self.vocabulary:
                self.vocabulary[word] = {}
            if not genre in self.vocabulary[word]:
                self.vocabulary[word][genre] = 1
            else:
                self.vocabulary[word][genre] += 1



И сам классификатор

    def classify(self, words):
        result = {}
        for g in self.genres:
            result[g] = 0

        for word in words:
            if word in self.vocabulary:
                for genre in self.genres:
                    if genre in self.vocabulary[word]:
                        k = (self.vocabulary[word][genre] + 1.0) / (self.genres[genre] + len(self.vocabulary))
                        result[genre] += math.log(k)
                    else:
                        result[genre] += math.log(1.0 / (self.genres[genre] + len(self.vocabulary)))
            else:
                for genre in self.genres:
                    result[genre] += math.log(1.0 / (self.genres[genre] + len(self.vocabulary)))

        sigma = 0

        for g in self.genres:
            sigma += self.genres[g]

        for g in self.genres:
            result[g] += math.log(self.genres[g]/float(sigma))
        return result



В любом случае, спасибо за статью!

Information

Rating
Does not participate
Registered
Activity