Как я могу построить алгоритм для классификации HTML-страницы на основе ключевых слов? - PullRequest
3 голосов
/ 02 сентября 2011

Я пытаюсь создать алгоритм, который устанавливает некоторую релевантность веб-странице на основе ключевых слов, которые он находит на странице.

Я делаю это в данный момент:

Я установил некоторые слова и значение для них: "фильм" (10) , "кино" (6) , "актер" (5) и «Голливуд» (4) и выполните поиск в некоторых частях страницы, указав вес для каждой части и умножив вес слов.

Пример: слово "фильм" слово было найдено в URL (1.5) * 10 и в заголовке (2.5) * 10 = 40

Это мусор! Это моя первая попытка, и она возвращает некоторые релевантные результаты, но я не думаю, что релевантность, определяемая значением типа 244, 66, 30, 15, полезна.

Я хочу сделать что-то, находящееся в диапазоне от 0 до 1 или от 1 до 100.
Какой тип взвешивания для слов я могу использовать?

Помимо этого, есть готовые алгоритмы для установки некоторой релевантности HTML-страницы, основанные на таких вещах, как URL, ключевые слова, заголовок и т. Д., Кроме основного контента?

РЕДАКТИРОВАТЬ 1 : Все это можно перестроить, веса являются случайными, я хочу использовать некоторые краткие веса, а не числа Рэмдона для представления веса, такие как 10, 5 и 3.

Что-то вроде: low importance = 1, medium importance = 2, high importante = 4, deterministic importance = 8.

Title > Link Part of URL > Domain > Keywords
movie > cinema> actor > hollywood

РЕДАКТИРОВАТЬ 2: В данный момент я хочу проанализировать релевантность страницы для слов, исключая body content страницы. Я включу в анализ домен, часть ссылки, URL, заголовок, ключевые слова (и другую метаинформацию, которую я считаю полезной).

Причина этого в том, что содержимое HTML грязное. Я могу найти много слов, таких как «фильм», в меню и рекламных объявлениях, но основное содержание страницы не содержит ничего относящегося к теме.

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

Позже, после запуска анализа релевантности на странице HTML, я проведу анализ релевантности для содержимого (отфильтрованного) отдельно.

Ответы [ 4 ]

3 голосов
/ 02 сентября 2011

Вы можете проиндексировать эти документы в поисковой системе?Если да, то, возможно, вам стоит подумать об использовании этой скрытой семантической библиотеки .

Фактический проект можно получить здесь: https://github.com/algoriffic/lsa4solr

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

Например, предположим, что у вас есть статья, в которой много говорится о "Windows".Это слово используется 7 раз в статье из 300 слов.Итак, вы знаете, что это важно.Однако чего вы не знаете, так это того, говорит ли он об операционной системе «Windows» или о вещах, которые вы просматриваете.

Предположим, что вы также видите такие слова, как «Установка», ну, в общем, это вам тоже не поможет.Потому что люди устанавливают окна в свои дома так же, как они устанавливают операционную систему Windows.Однако, если в той же статье говорится о дефрагментации, операционных системах, командной строке и Windows 7, то вы можете догадаться, что значение этого документа актуально для операционной системы Windows.

Однако как вы можете это определить?

Здесь скрытое семантическое индексирование . Вам нужно лишь извлечь весь текст документа, а затем применить к этому документу какой-нибудь умный анализ.

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

Рад удалить этот ответ, если вы не ищете внешние библиотеки и хотите сделать это самостоятельно

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

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

1 голос
/ 02 сентября 2011
your_sum / (max_score_per_word * num_words) * 100

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

1 голос
/ 02 сентября 2011

Простой способ преобразовать что-либо в диапазон 0-100 (для любого положительного значения X):

(1-1 / (1 + X)) * 100

Чем выше X, тем ближе значение к 100.

Но это не сулит вам правильного или правильного распределения.Это зависит от вашего алгоритма определения фактического значения X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...