Как я могу сделать "связанные теги"? - PullRequest
3 голосов
/ 29 июня 2011

У меня есть теги на моем веб-сайте, и я добавляю их один за другим, когда создаю сообщение в блоге. Мне нравится новая функция gmail, которая спрашивает вас, хотите ли вы включить X в почту, вводите ли вы имя Y и часто ли вы включаете их обоих в одни и те же сообщения.

Я бы хотел сделать что-то похожее на своем веб-сайте, но я не знаю, как представить теги "related-ness" в объекте или базе данных ... мысли?

Ответы [ 4 ]

5 голосов
/ 29 июня 2011

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

Это можно сделать несколькими способами: от «полностью жестко закодированной» ассоциации до некоего «обучающего ИИ» ... и всего, что между ними.

жестко закодированные решения

Это самые простые алгоритмы для реализации.Сначала вы должны решить, какие характеристики вашего поста имеют отношение к тегированию (например: его длина, если вы пометите их «короткий» или «длинный», наличие фотографий или видео, если вы пометите их как «мультимедийный контент» и т. Д.).Однако самое очевидное - сосредоточиться на том, какие слова используются в сообщениях.Например, вы можете построить отображение следующим образом:

tag_hint_words = {'code-development' : ['programming', 
                                        'language', 'python', 'function', 
                                        'object', 'method'],
                  'family' : ['Theresa', 'kids', 
                              'uncle Ben', 'holidays']}

Затем вы проверите свой пост на наличие слов в списке (код между [ и ]) и предложите тег(слово перед :) в качестве возможного кандидата.

Обычный подход состоит в том, чтобы давать «оценки», или, другими словами, ставить число, которое указывает на вероятность того, что данный тег является правильным.Например: если ваш пост будет содержать предложение ...

После месяцев программирования мы наконец-то уехали на летние каникулы в домик дяди Бена.Тереза ​​и дети были в восторге!

... несмотря на наличие слова "программирование", программа должна указать семейство в качестве наиболее вероятного тега для использования, так как естьнамекает еще много слов.

Изучение ИИ

Одно из очевидных ограничений описанного выше метода заключается в том, что - скажем, однажды вы берете Java рядом с Python - вам, вероятно, придется изменить свой код ивключите такие слова, как "Java" или "оракул" тоже.То же самое применимо, если вы создаете новые теги.

Чтобы обойти это ограничение (и повеселиться!), Вы можете попытаться реализовать алгоритм обучения.Алгоритмы обучения - это те, кто совершенствует свой результат по мере того, как вы их используете (так что они действительно ... учатся!).Некоторые алгоритмы требуют начального обучения (многим спам-фильтрам и программам распознавания голоса требуется этот начальный «учебник»).Некоторые этого не делают.

Я абсолютно не эксперт по этому вопросу, но есть два распространенных ИИ: Наивный байесовский классификатор и некоторая разновидность Нейронная сеть .

Хотя страницы WP могут выглядеть пугающе, их удивительно легко реализовать (по крайней мере, в Python).Вот запись лекции на PyCon 2009 на тему « Простой ИИ с Python ».Я нашел это очень информативным и даже как-то вдохновляющим!:)

HTH!

1 голос
/ 07 июня 2012

Поиск Кластеризация (алгоритм машинного обучения). Не пугайтесь математики, это довольно простой алгоритм. Проверьте Машинное обучение для хакеров для более простых объяснений многих алгоритмов и методов машинного обучения.

1 голос
/ 29 июня 2011

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

1 голос
/ 29 июня 2011

Вы должны взглянуть на этот пост: Какие-либо предложения для схемы БД для хранения связанных ключевых слов?

Если вы ищете схему для хранения связанных тегов, это поможет.

...