помогите организовать мои данные для этой проблемы машинного обучения
Я хочу классифицировать твиты в рамках заданного набора категорий, таких как {"спорт", "развлечения", "любовь"} и т. д...
Моя идея состоит в том, чтобы взять термин частоты наиболее часто используемых слов, чтобы помочь мне решить эту проблему. Например, слово " любовь "чаще всего встречается в категории Любовь, но оно также появляется в спорте и развлечениях в форме" я люблю эту игру "и"я люблю этот фильм".Чтобы решить ее, я представил себе 3-осевой график, где значения x все слова, используемые в моих твитах, значения y-это категории, А значения z-это частоты терминов (или некоторые типы оценок) по отношению к слову и категории. Затем я разбивал твит на график, а затем суммировал значения z в каждой категории. Категория с наибольшим суммарным значением z, скорее всего, является правильной категорией. Я знаю, что это сбивает с толку, поэтому позвольте мне привести пример:
Слово "смотреть" часто встречается в спорте и развлечениях ("я есть смотреть игру " и "я смотрю свое любимое шоу")...Поэтому я сузил его по меньшей мере до этих двух категорий. Но слово "игра" не часто встречается в развлечениях, а шоу-в спорте. Z-значение 'смотреть' + 'игра' будет максимальным для спортивного разряда и 'смотреть' + 'показать' будет максимальным для развлечения.
Теперь, когда вы поняли, как работает моя идея, мне нужна помощь в организации этих данных, чтобы алгоритм машинного обучения мог предсказать категории, когда я даю ему слово или набор слов. Я много читал о SVM и думаю, что это правильный путь. Я попробовал libsvm, но, кажется, не могу придумать хороший набор входных данных. Кроме того, libsvm не поддерживает нечисловые значения, что добавляет дополнительную сложность.Есть идеи? Нужна ли мне вообще библиотека, или я должен сам кодировать процесс принятия решений?
Спасибо всем, я знаю, что это было долго, извините.
2 ответа:
Ну, вы пытаетесь сделать классификацию текста в группу категорий. наивный Байес делает это. На самом деле, это статистический аналог вашей идеи. Он предполагает, что частотность слов в тексте являются независимыми индикаторами категории и дает вероятность каждой категории, основываясь на этом предположении. Это хорошо работает на практике; я считаю, чтоWeka имеет реализацию.
Вы должны классифицировать документы(здесь твиты-это ваши документы ) на основе их содержания (слова-признаки) и поместить их в категории (Спорт, окружающая среда, любовь и т. д.).
Вы можете использовать наивный классификатор Байеса или классификатор Фишера ( я предпочитаю Фишера ) для классификации ваших документов. Вы можете найти реализацию обоих в библиотеках python.
Используйте удаление стержня, Нижнего кожуха, стоп-слова (the, is, at etc) и другие методы предварительной обработки для увеличения эффективность.
Все, что вам нужно, это пройти через Главу 6 ( фильтрация документов ) книги Программирование коллективного разума:создание интеллектуальных веб-приложений 2.0. Он имеет хорошее объяснение как классификаторов плюс примеры и реализации в python .