2010-08-10 3 views
3

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

+0

Это похоже на то, что Google, вероятно, использует 300 первоклассных людей в отделе новостей Google ... Не уверен, существуют ли доступные варианты категоризации статей, особенно в мире PHP. Но вы никогда не знаете; интересно узнать, что происходит. –

+0

Я предполагаю, что это то, на что написана академическая статья :) – Ross

+0

Сначала вам нужно определить критерии, по которым вы говорите, что статья X относится к теме Y. Это просто «слова A, B , C, связанные с темой Y, все существуют в статье X "? –

ответ

0

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

+0

Дело в том, что я не знаю, какая тема будет. Это динамично. – Patrick

0

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

0

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

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

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

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

Этот тип техники используется при определении того, является ли сообщение СПАМ или нет.

Это article might некоторой помощи

2

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

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

1

Dirt простой способ создать классификатор:

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

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

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

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

2

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

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

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

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

+0

Ui, я совсем забыл упомянуть еще одну альтернативу. Если вы ищете что-то вроде mahout, но быть проще в реализации, попробуйте Bobo-Browse: http://sna-projects.com/bobo/ На самом деле я считаю, что Bobo-Browse может отлично поработать в вашем случае. – ftiaronsem

+0

привет друг Мне нужна помощь в sphinx. Я новичок в Sphinx. Настройте сфинкс в сегменте wamp на локальном хосте. – Karthik

1

Отрывок из главы 7 «Алгоритмы интеллектуального Web» (Manning 2009):

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

Итак, содержание главы 7 этой книги должно предоставить вам код и понять проблему, которую вы пытаетесь решить.

Смежные вопросы