Я делаю проект для колледжа, который я беру.
Я использую PHP для создания простого веб-приложения, которое классифицирует твиты как «позитивные» (или счастливые) и «негативные» (или печальные) на основе набора словарей. Алгоритм, о котором я сейчас думаю, – это классификатор Naive Bayes или дерево решений.
Однако я не могу найти какую-либо библиотеку PHP, которая помогла бы мне сделать серьезную обработку языка. Python имеет NLTK ( http://www.nltk.org ). Есть ли что-то подобное для PHP?
Я планирую использовать WEKA в качестве задней части веб-приложения (вызывая Weka в командной строке из PHP), но это не кажется эффективным.
Вы не знаете, что я должен использовать для этого проекта? Или я должен просто переключиться на Python?
благодаря
Если вы собираетесь использовать классификатор Naive Bayes, вам не нужна целая тонна обработки NL. Все, что вам понадобится, это алгоритм, чтобы остановить слова в твитах, и если хотите, удалите стоп-слова.
Сложные алгоритмы изобилуют и не сложно кодировать. Удаление стоп-слов – это вопрос поиска хэш-карты или чего-то подобного. Я не вижу оправдания переключать вашу платформу разработки, чтобы разместить NLTK, хотя это очень хороший инструмент.
Некоторое время назад я сделал очень похожий проект – только классифицировал новостные статьи RSS вместо twitter – также используя PHP для front-end и WEKA для внешнего сервера. Я использовал PHP / Java Bridge, который был относительно прост в использовании – несколько строк, добавленных в ваш код Java (WEKA), и это позволяет вашему PHP вызывать его методы. Вот пример кода на PHP с их сайта:
<?php require_once("http://localhost:8087/JavaBridge/java/Java.inc"); $world = new java("HelloWorld"); echo $world->hello(array("from PHP")); ?>
Затем (как уже упоминалось ранее) вам просто нужно отфильтровать слова остановки. Хранение txt-файла для этого довольно удобно для добавления новых слов (они, как правило, накапливаются, когда вы начинаете отфильтровывать нерелевантные слова и учитывать опечатки).
Модель наивных байков имеет сильные независимые предположения, т. Е. Не учитывает слова, которые обычно спариваются (например, идиома или фраза) – просто беря каждое слово как независимое событие. Тем не менее, он может превзойти некоторые из более сложных методов (например, word-stemming, IIRC) и должен быть идеальным для класса колледжа, не делая его излишне сложным.
Вы также можете использовать API uClassify, чтобы сделать что-то похожее на Naive Bayes. Вы в основном обучаете классификатор, как и с любым алгоритмом (за исключением того, что вы делаете это через веб-интерфейс или отправляете XML-документы в API). Затем, когда вы получаете новый твит (или пакет твитов), вы вызываете API, чтобы он классифицировал их. Это быстро, и вам не нужно беспокоиться о его настройке. Конечно, это означает, что вы теряете гибкость, которую вы получаете, контролируя сам классификатор, но это также означает, что вам не нужно работать, если это само по себе не является целью проекта класса.
Попробуйте открыть кале – http://viewer.opencalais.com/ . Он имеет api, классы PHP и многие другие. Кроме того, LingPipe для этой задачи – http://alias-i.com/lingpipe/index.html
вы можете проверить эту библиотеку https://github.com/Dachande663/PHP-Classifier очень прямолинейно
вы также можете использовать бережливость или редуктор для работы с nltk