Pull to refresh

Comments 58

Главное чтобы предлоги «в» и «на» в тэгах не были :)
Можно написать массив исключений в котором будут все ненужные но часто встречающиеся слова
Для тех кто минусует этот коммент — вы не верите в массивы или исключения?
Возможно они не не верят, а просто не знают как устраивается полнотекстовый поиск во многих БД… Именно отбрасыванием предлогов, союзов, кавычек и прочих рудиментов.
Это так называемые «стоп-слова», которые отбрасываются при частотном анализе. Основываясь на результаты частотного анализа, строится нейронная сеть Кохонена, которая, собственно, и проводит кластеризацию ресурсов. Это научное определение, а по-сути, для рамок российской морфологии, достаточно составить просто массив предлогов, а не строить нейронные сети, рассчитаные на неуправляемое обучение.
Круто блин… Сколько слов то непонятных ;) если не сложно накидай ссылки где можно про эту тему по подробнее почитать.
Если сам не знаеш, то не надо влезать со своими глупостями
Дока, слегка раскрывающая суть нейронных сетей в применении к морфологическому анализу (забыл поставить (с) при вставке текста — там он очень кратко и чётко написано, а своими словами я бы тут долго размусоливал :))
Если совсем интересно — на вики про сеть Кохонена неплохо написано.
Тоже думал на днях о подобном. Мне кажется, тут все сложнее, нужно подключать словари и использовать AJAX (т.е. отправлять текст на сервер и анализировать его там, находя наиболее релевантные слова). Как-то так.
Проблема лишь в словарном запасе автора, а так идея супер.
имел ввиду не глубоко уважаемого Torwalda, а автора любой статьи в которой будет использоваться данная система тегов. Ведь теги будут браться из самого текста. Странно как-то на хабре выражается не понимание)

ну а в карму-то зачем?
Знаете я сам пытаюсь максимально точно выражать тут свои мысли потому, что даже я вначале не совсем понял какого автора имеете вы ввиду. PS: Сделал вам плюс в карму.
Дело не в карме. Это был крик призывающий общественность задуматься.
Просто один минус заставил еще пять человек уверовать в негативном отношение к автору. Так сказать стадное чувство. Тоже самое происходит с топиками. Первый недопонимает, минусует и пост уходит в хабракладбище.

Пи.Си. Если ты будешь развивать эту идею, советую начать с заголовков.
я просто фигею) за сегодня проголосовало еще семь человек, карма дошла с 16 до 4. эт уже какой-то налет недовольных.

Кто-то из минусовавших в личку может написать за что и почему?
Привет!
Эта идея совершенно не нова, но библиотек, которые реализуют эту функцию, до сих пор нет. Если вы возьметесь и сделаете, то это будет классный компонент на продажу. Мы будем первыми покупателями, у самих руки никак не доходят :)

1. Фактически, это кластерный анализ с исключением наиболее часто используемых слов (стоп-слов).
2. Сложности с русским языком

Семантический веб ждет вас, Torwald :)
Меня тоже это удивило, ну если нет то надо попробовать сделать.
да, эта идея хороша тем что может дорасти до какого-то реально продаваемого компонента.

Функция такая есть в очень дорогих enterprise-wiki системах, и в больших документооборотниках. Но отдельным компонентом — её купят многие маленькие компании, и, если это станет достаточно валидным, то это станет стандартным плагином в Wordpress'ах и пошло-поехало :)

Тебе понадобятся:
1. Словарь синонимов + словарь языка
2. Толковый программист
3. Чуть попозже — лингвист
Удачи :)
Задача, по-моему, полностью совпадает с задачей выбора объявления для показа в контекстной рекламе. Кроме синонимов, идут в ход и другие связи между словами: антонимы, гиперонимы (к тексту про реки вполне подходит тег «водоемы»), гипонимы и т.д. Короче, Wordnet. И много процессорного времени.
Мысль конечно интересная… но без недостатков.
Если я напишу фразу: «Мы с парнями поехали купаться на реку», то мне будет подсказка, «парни», «река», но не будет «друзья», «отдых». Т.е. теги подбераются по «встречаемости», а не по смыслу. :)
А так, идея хорошая, но и правда не новая.
Я думаю прежде всего это можно использовать не только в личных блогах, а например когда у тебя портал и ты постоишь кучу новостей и особо выдумывать не приходится.
Ну это просто идея для следующего шага развития компоненты, составления списка синонимов или даже синонимов на групы слов. Например группа слов «парни, девушки, река, шашлык». Если 50 процентов слов часто встречаются в тексте то из словаря синонимов этой групы подбираются предопределенные «отдых, друзья», к примеру…
Идея отличная! Отличным началом будет, думаю реализовать её компонентом для Drupla, Joomla.
Для начала можно реализовать вариант, где бы предлагался список тегов, которые уже упоминались на сайте и встречаются в этой статье, думаю это будет просто и полезно.
Мне нравится как в делишисе устроено. Там также, если вносишь какой то сайт в закладки, то в тегах он тебе подсказывает наиболее употребимые к данному сайту.
Да, но там они берутся у юзеров уже подумавших и давших теги к сайту.
Выбираются наиболее популярные.
Накидал небольшой простенький скриптик, который показал следующее

Вот топ самых встречающихся слов на странице:

39 мы
29 по
21 теги
18 идеи
14 сентября
13 для
13 вас
13 текста
12 тех
12 (ответить)
10 14:54
10 ввода
9 карму
8 будет
8 нет
8 идея
8 списка
7 тегов
7 Google
6 что
6 Блоги
6 верят,
6 слов)
6 тегом
6 я!

А это топ самых встречающихся слов в топике:
4 тегов
3 ввода
2 идеи
2 текста
2 по
2 строку
проблему уже озвучили — а если нужный тег не встречается в тексте?
Одно из решений (не дающее 100% резульата). Создание каких-либо зависимостей или даже иерархии. Например для тегов водка, бухать, нажраться и пр. родительским тегом будет «пьянка». Однако это здорово усложняет систему и, как уже упомянул, сто процентного результата все равно не дает (плюс неясно как заполнять эти связи).
Поэтому топик и называется «Полуавтоматическое добавление тегов». Исскуственный разум создать не получится но облегчить забивание тегов к материалам показывая часто встречающиеся в тексте топика слова — да. А вообще совершенствовать его можно сколько хочешь создавая эти самые связки. И как тут уже говорилось можно использовать словарь синонимов как вариант.
Тогда проще после создания новости включить некий «тэг-режим» и кликать по нужным словам прямо в тексте. Потом надо морфологически эти слова разобрать, избавив от предлогов/окончаний и т.д., так что по-сути задача сводится не к отлову слов, а к их обработке, т.к. отлов, каким бы он ни был, сам по себе не так и сложен.
Отличня идея! Я давно об этом думал, только для помощи вставки мета-тэгов для страницы, но для тэгов, о которых мы сейчас — это ещё более полезно. Освещай свои труды здесь, думаю найдешь много поддержки и советов. Пиши на php (+ MySQL) 8-)
Оформляй как класс, который можно будет в любом движке интегрировать и цены ему не будет… а потом будет 8-)
Отдельное внимание надо обращать на слова, написанные с заглавной буквы (исключая, конечно те, что идут после точки). Как правило это будут названия компаний, программ и технологий.

«Майкрософт готовит свой ответ онлайновому Фотошопу, основанный на Сильверлайте».

предполагаемые теги: Майкрософт, Фотошоп, Сильверлай.

(да, со склонениями надо тоже что-то придумывать)
Занимался такой темой.
Все не так просто как кажется. Алгоритм такой:
1. Нормализация текста (приведение слов в тексте к каноническому виду).
2. Удаление стоп-слов (предлогов, союзов и т. д.).
3. Подсчет частоты слов.
4. Получение списка ключевых слов. Если нам надо выбрать 10 ключевых слов, то нужно убирать по 1 слову с начала и с конца списка кандидатов в ключевые слова, пока он не сократиться до 10.
Кстати говоря, на основе этого алгоритма можно забабахать автоматический обучающийся рубрикатор текстов: каждому набору ключевых слов ставиться в соответствие одна или несколько рубрик. После десятка добавленных вручную текстов в каждую группу точность распознавания становиться достаточно высокой.
Хотелось узнать о результате. Вы добились чего хотели?
Я авторубрикатором не занимался, мне просто только что пришла в голову такая идея.
Если ты про первый коммент, то в принципе да, работали над системой анализа рефератов в институте. Она, в принципе, работала, но использовать ее не планировалось — это число учебный проект. Что с ним сейчас — не знаю.
2,3 — очень просто
1 — просто, как вариант, приводить не к каноническому виду, а оставлять только корень.
4 — не очень понял насчет начала и конца списка. Видимо я не осознал, что представляет из себя этот список…
4 — nikitad имел ввиду ограничение предполагаемых тегов до 10. и как вариант убирал по концам слова из списка наиболее релевантных. но я думаю логичнее убирать слова наименее встречающиеся в тексте.
Ты не правильно понял. Подсчитывать надо все слова, без ограничений. Ключевые слова выбираются из середины получившегося списка.
Почему самые частые слова не стоит считать ключевыми? Потому что у любого автора есть слова, которые он употребляет наиболее часто, но которые не отражают смысл текста, и которые нельзя отнести к стоп-словам. Поэтому выбирать теги следует из середины, или несколько ближе к началу списка частоты слов.
Хм, действительно не подумал. Спасибо за разъяснение.
Проще привести именно к каноническому виду: в этом случае можно пользоваться open source словарями (aspell вроде). Морфологический анализ — вещь намного более сложная, ибо в русском языке есть исключения из правил, слова с одинаковыми корнями, но разным значением и т. д.

Объясняю про 4й пункт. После пункта мы имеем список из некоторого числа слов. Чтобы определить n ключевых слов нужно отсчитывать их в обе стороны от середины списка.
Пример. У нас есть список кандидатов в ключевые слова (невозбранно взято из коммента komjah, удалены стоп-слова, слова приведены к канонической форме):

21 тег
18 идея
14 сентябрь
13 текст
10 ввод
9 карма
8 нет
8 список
7 Google
6 блог
6 верить
6 слово

Из него нам надо получить 5 ключевых слов. Убираем 1 слово в начале и 1 в конце списка. Он станет таким:

18 идея
14 сентябрь
13 текст
10 ввод
9 карма
8 нет
8 список
7 Google
6 блог
6 верить

Потом — еще раз, и так до тех пор, пока не список не сократиться до 5:

10 ввод
9 карма
8 нет
8 список
7 Google
Пример решения подобной задачи: www.nzdl.org/Kea/
+ если я не ошибаюсь в alias-i.com/lingpipe/, то же есть нечто подобное.

Задача на самом деле очень не простая, а точнее очень даже сложная ;) Не обладая заранее заданным тезаурусом адекватно определить врятли получится.
«внизу появляются возможныe варианты тегов»

Поправьте, так будет интереснее смотреться, честно.
А я наоборот придумал. Вообдишь теги, а тебе наиболее вероятный текст статьи выдается.
Это поиск называется ;-)
А почему бы не использовать готовые сервисы? Например тотже tagthe.net
Первая проверка текста «Hello world» показала:
urn: memanage: E6063857C71351A393B6DBD74ABB5DB0
При задании урла тоже ничего хорошего, а как давно он (сервис) появился?
Странно, но tagthe.net/api/? text=Hello%20World! (взято из примера) выдает, что язык фразы итальянский.
Было реализовано у тег-плагина к Вордпрессу 2.*.

Интересна, скорее не сама идея, а идея общих синонимов. Это было бы в разы интереснее.

И ещё, это, естественно, подходит только к большим записям. Смыла использования, предположим, в тлогах не будет.
UFO just landed and posted this here
Только что хотел что-то подобное предложить, Вы меня опередили. Моя мысль схожа:

1. Из текста выделить слова, длина которых не менее трех букв, и встречающихся в тексте более чем N раз.

2. По каждому из этих слов проверить по БД, есть ли теги, соответствующие этим словам. При этом можно проверять или по прямому совпадению, или, что лучше, но накладнее по ресурсам — используя морфологический словарь (я делал нечто подобное для одного из проектов, работает отлично).

3. Это можно делать в фоне посредством AJAX, если ресурсы позволяют.
Классная идея. Использовать как «базу связей» языка, так и «базу связей» уже существующего какого-то ресурса.
Новых тэгов автоматически построено не будет, но существующие будут подбираться очень даже валидно.

Обьясню.

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

Нормал :)
4. Соответственно, если такие теги из прошлых сообщений найдены, их и предлагать подставить в полуавтоматическом режиме, как и предлагает автор.

Более того, хочу сделать прогноз. Мне видится, что где-то через 1-2 года такой принцип полуавтоматического добавления тегов станет стандартом де-факто в социальных сетях, блоггерских сервисах, и т.д. и т.п.
«Со смыслом тегов можно поступить гораздо проще».
Кстати, да. Вот оно — главное отличие этой задачи от контекстной рекламы. Оно в том, что теги исключать из решения не так «жалко», как рекламные объявления. Поэтому и алгоритмы вполне могут быть не такими суровыми.
UFO just landed and posted this here
Sign up to leave a comment.

Articles