PHP найти актуальность - PullRequest
       2

PHP найти актуальность

3 голосов
/ 10 августа 2010

Скажем, у меня есть коллекция из 100 000 статей по 10 различным темам. Я не знаю, какие статьи на самом деле относятся к какой теме, но у меня есть вся новостная статья (могу проанализировать их по ключевым словам). Я хотел бы сгруппировать эти статьи по темам. Есть идеи, как мне это сделать? Любой двигатель (сфинкс, люцен) в порядке.

Ответы [ 7 ]

2 голосов
/ 10 августа 2010

Хорошо, проект apache, обеспечивающий обучающие библиотеки, - это Mahout . Его функции включают в себя возможность:

[...] Кластеризация занимает, например, текстовые документы и группирует их в группы тематически связанных документов. Классификация узнает из существующих категоризированных документов, как выглядят документы определенной категории, и может отнести немаркированные документы к (надеюсь) правильной категории. [...]

Вы можете найти Mahout под http://mahout.apache.org/

Хотя я никогда не использовал Mahout, просто подумал об этом ;-), казалось, что всегда требовалось немало теоретических знаний. Поэтому, если вы планируете потратить некоторое время на решение этой проблемы, Mahout, вероятно, будет хорошей отправной точкой, особенно с учетом того, что она хорошо документирована. Но не ждите, что это будет легко; -)

2 голосов
/ 10 августа 2010

В терминах машинного обучения / интеллектуального анализа данных мы назвали такого рода проблемы классификационной проблемой .Самый простой подход - использовать прошлые данные для прогноза на будущее, то есть статистически ориентированный: http://en.wikipedia.org/wiki/Statistical_classification,, в котором можно начать с использования Наивного байесовского классификатора (обычно используется для обнаружения спама)

Я бы предложил вам прочитать эту книгу (хотя и написанную для Python): Программирование Коллективного Разума (http://www.amazon.com/Programming-Collective-Intelligence-Building-Applications/dp/0596529325), У них есть хороший пример.

1 голос
/ 01 декабря 2010

Выдержка из главы 7 «Алгоритмы интеллектуальной сети» (Manning 2009):

«Другими словами, мы обсудим принятие наших алгоритмов в контексте гипотетического веб-приложения.В частности, наш пример относится к новостному порталу, вдохновленному веб-сайтом Новостей Google. "

Таким образом, содержание главы 7 этой книги должно предоставить вам код и понимание проблемычто вы пытаетесь решить.

1 голос
/ 10 августа 2010

Грязный простой способ создания классификатора:

. Прочитайте и сложите N примеров документов из 100 КБ в каждую из ваших 10 тем.Как правило, чем больше примеров документов, тем лучше.

Создайте индекс Lucene / Sphinx с 10 документами, соответствующими каждой теме.Каждый документ будет содержать все примеры документов по этой теме, объединенные вместе.

Чтобы классифицировать документ, отправьте этот документ как запрос, сделав каждое слово термином ИЛИ.Вы почти всегда получите все 10 результатов назад.Lucene / Sphinx назначит оценку каждому результату, которую вы можете интерпретировать как «сходство» документа с каждой темой.

Может быть не очень точным, но это легко, если вы не хотите проходитьпроблема обучения настоящего наивного байесовского классификатора.Если вы хотите пойти по этому пути, вы можете использовать Google для WEKA или MALLET, двух хороших библиотек машинного обучения.

0 голосов
/ 10 августа 2010

Я не могу полностью автоматизировать это, но вы могли бы сделать большую часть этого. Проблема в том, откуда берутся темы?

Извлечение списка самых необычных слов и фраз из каждой статьи и использование их в качестве тегов.

Затем я составлял бы список тем и назначал слова и фразы, которые попадали в эту тему, а затем сопоставлял их с тегами. Проблема в том, что вы можете получить более одной темы на статью.

Возможно, лучшим способом было бы использовать некоторую форму байесовских классификаторов, чтобы определить, какая тема лучше всего описывает статью. Первоначально вам потребуется обучить систему.

Этот метод используется для определения, является ли электронная почта спамом или нет.

Эта статья может быть полезной

0 голосов
/ 10 августа 2010

Я рекомендую книгу «Алгоритмы интеллектуальной сети» Хараламбоса Марманиса и Дмитрия Бабенко.Есть глава о том, как это сделать.

0 голосов
/ 10 августа 2010

вы можете использовать sphinix для поиска всех статей по всем 10 различным темам, а затем установить порог для количества совпадений, которое делает статью связанной с определенной темой, и т. Д.

...