Как использовать wordnet, чтобы найти семантическую связь между двумя веб-страницами? - PullRequest
0 голосов
/ 27 мая 2011

Я хочу каким-то образом определить, являются ли две веб-страницы семантически связанными. Я гуглил и нашел нечто, называемое WordNet (большая лексическая база данных). Я хочу знать, что, как я могу сделать это, используя Python и WordNet?

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

Самый простой и грубый способ сделать это будет:

  1. извлечение первых N терминов (ключевых слов) с каждой страницы (может быть так же просто, как первые N терминов по частоте, за исключением стоп-слов, таких как «a, the, an» на английском языке). Это даст вам набор функций для каждой страницы.

  2. Сравните верхние термины между страницами для совпадений. Вы можете использовать Wordnet для сравнения синонимов ваших терминов, например, кроссовки <==> кроссовки. Если у вас есть определенное совпадение ключевых слов, то страницы каким-то образом связаны.

EDIT:

Лучший способ получить набор ключевых слов для каждой страницы - извлечь статистически значимые слова для каждой страницы. Вы можете сделать это путем получения или составления списка (1 2 и 3 слова) n-грамм из справочного текста, например, wikipedia), а затем вычислите n-граммы для слов / фраз на вашей странице и сравните частоту появления ваших n-граммов с частотой встречаемости в глобальном наборе n-граммов. Если вы обнаружите, что у вас есть n-граммы на вашей странице, которые встречаются чаще, чем вы ожидаете, учитывая справочный корпус, то они, скорее всего, будут статистически значимыми для этой страницы.

Сложной частью в этом является получение или компиляция эталонной n-граммы (она должна быть достаточно большой, чтобы быть статистически жизнеспособной), которую вы должны сравнить с n-граммами на своих веб-страницах. Вы можете приобрести n-граммовый корпус Google или, возможно, создать свой собственный, просмотрев свободно доступные для загрузки веб-сайты, такие как Википедия. Другие, возможно, опубликовали свободно доступный набор n-грамм, если вы посмотрите в Google.

1 голос
/ 27 мая 2011

Лично я этим не пользовался, но слышал, что библиотека *1001* (NLTK (Natural Language Toolkit)) может быть очень полезна для такого рода задач анализа языка. У них есть много приятной документации и учебных пособий в Интернете, а также множество языковых корпусов и других наборов данных, которые помогут вам начать работу.

...