Из-за громадного количества всевозможных письменных изданий зачастую очень трудно найти то, что требуется или, во всяком случае, сделать это очень быстро. В первую очередь это касается художественной литературы, где мы можно судить о книге только по жанру, автору, советам других людей и другим менее значительным критериям, которых все равно недостаточно, чтобы заранее определить, будет ли книга интересна.
Эта статья является продолжением [1] и ее цель показать результаты эксперимента по определению наиболее оптимального алгоритма для выполнения части, изложенной в статье [1] задачи. Задача состоит в том, чтобы, имея ряд книг, о которых известно, что они интересны пользователю, подобрать из множества книг те, которые также могут понравиться пользователю или, что более точно, близки к тем, что ему интересны. Наиболее существенной частью этой задачи является определение подмножества книг, которые будут близки к какой-то одной книге. Именно для этой подзадачи определяется оптимальный алгоритм в этом исследовании.
Исходным был выбран алгоритм косинусной близости, который обладает рядом плюсов, в частности, позволяет оптимизировать алгоритм, так как полностью прочитать документ нужно один раз при формировании вектора термов, дает возможность обобщать различные документы, путем обобщения векторов и вообще работать и преобразовывать вектора, которые однозначно связаны с документами. Тем не менее, этот алгоритм нуждается во множестве уточнений и дает большую свободу. Например, необходимо определить, что выбрать в качестве терма, обрабатывать ли как-то дополнительно эти термы и обрабатывать ли вектора в целом.
В статье [1] было выбрано несколько вариантов термов:
- n-грамма;
- слово;
- словосочетание.
В любом документе смысл несут слова и связи между ними (взаимное расположение), а также знаки препинания. Поэтому вариант n-граммы в качестве терма был отброшен как непригодный заранее – отдельная часть слова, особенно, если неизвестно даже, какая это его часть, не несет смысла сама по себе. И даже статистически куда уместнее брать целые слова, нежели n-граммы. Таким образом, остаются слова и словосочетания. Словосочетания могут быть разной длины и это, само собой, будет влиять на результат.
В русском языке существует множество различных форм слов, различия между которыми имеют большое значение на уровне словосочетаний или предложений. Однако когда речь идет об определении смысла документа в целом, путем подсчета количества одинаковых термов эти различные формы только ухудшают точность анализа, ведь, по сути, они имеют одно и то же значение. Собственно, поэтому применяется усечение слов до их основ так, что разница между различными формами слова пропадает. Поэтому в эксперименте каждое слово было предварительно усечено при помощи стеммера Портера [4].
Обобщая все вышесказанное, суть эксперимента в следующем: есть база данных, состоящая из примерно десяти тысяч книг разных жанров, для нескольких из них определяются ближайшие 20 книг, выбранные с 4 различными видами термов по алгоритму косинусной близости: слово, словосочетание из 2, 3 и 4 слов. Все книги заранее обработаны и преобразованы в вектора, кроме того, ко всем словам применяется стеммер Портера.
Всего было выбрано 15 книг. Результат для одной из них – «Божественной комедии» Данте Алигьери, жанра античная литература, представлен в таблицах 1, 2, 3 и 4.
Таблица 1
Результат сравнения с использованием слов
Степень схожести |
Название книги |
Автор |
Жанры |
0.9576486 |
Где небом кончилась земля. Биография. Стихи. Воспоминания |
Гумилев Николай |
биография, поэзия |
0.9545289 |
Амето |
Боккаччо Джованни |
античная литература |
0.95162904 |
Поэзия и проза Древнего Востока |
|
античная литература |
0.9497368 |
Симплициссимус |
Гриммельсгаузен Ганс Якоб |
античная литература |
0.9484388 |
Я, Есенин Сергей... |
Есенин Сергей |
биография |
0.94773024 |
Том 3. Рассказы и повести 1917-1930. Жизнь Арсеньева |
Бунин Иван |
русская проза |
Таблица 2
Результат сравнения с использованием словосочетаний длиной 2
Степень схожести |
Название книги |
Автор |
Жанры |
0.50456226 |
Сочинения |
Данте Алигьери |
античная литература |
0.44796115 |
Избранное |
де Кеведо Франсиско |
античная литература |
0.445811 |
Поэзия и проза Древнего Востока |
|
античная литература |
0.4342808 |
Сочинения |
Лукиан Самосатский |
античная литература |
0.43093514 |
Новые забавы и веселые разговоры |
|
античная литература |
0.42563424 |
Амето |
Боккаччо Джованни |
античная литература |
Таблица 3
Результат сравнения с использованием словосочетаний длиной 3
Степень схожести |
Название книги |
Автор |
Жанры |
0.13903892 |
Пестрые рассказы |
Элиан Клавдий |
античная литература |
0.10866527 |
О военном искусстве |
Макиавелли Николо |
античная литература, научно-историческая |
0.10789134 |
Сатурналии |
Макробий, |
античная литература, философия |
0.095850006 |
Поэзия и проза Древнего Востока |
античная литература | |
0.09377335 |
Мифы и легенды народов мира. Т. 2. Ранняя Италия и Рим |
Немировский Александр |
античная литература |
0.09017851 |
Римская история |
Марцеллин Аммиан |
античная литература |
Таблица 4
Результат сравнения с использованием словосочетаний длиной 4
Степень схожести |
Название книги |
Автор |
Жанры |
0.044497494 |
Пестрые рассказы |
Элиан Клавдий |
античная литература |
0.02364399 |
Сатурналии |
Макробий, |
античная литература, философия |
0.023087153 |
О военном искусстве |
Макиавелли Николо |
античная литература, научно-историческая |
0.022602256 |
Мифы и легенды народов мира. Т. 2. Ранняя Италия и Рим |
Немировский Александр |
античная литература |
0.020204172 |
Римская история |
Марцеллин Аммиан |
античная литература |
0.017662238 |
История |
Фукидид |
античная литература |
Из приведенных результатов видно, что все полученные книги, так или иначе, близки к исходной. Степень схожести векторов, образованных словами, очень близка к единице, в то время как схожесть степени словосочетаний тем ниже, чем больше длина словосочетания, что и понятно. Также следует упомянуть про время поиска книг: для слов – 134 с., для словосочетаний длиной 2 – 471 с., для словосочетаний длиной 3 – 507 с. и для длины 4 – 557 с. Конкретное время, конечно же, зависит от многих факторов, но в сравнении алгоритмов эти величины имеют значение – время сравнения книг по словам в разы быстрее чем даже сравнение по словосочетанию наименьшей длины. Максимальная степень схожести для словосочетаний высокой длины сильно разнится в зависимости от жанра, если для античной литературы для словосочетания длиной 4 это значение близко к 0, то для фантастики близко к 0,7.
Тем не менее, оценить результат в таком представлении объективно довольно сложно, потому что слишком много данных. Однако для обобщения результатов можно использовать жанры. Они повсеместно используются для классификации книг, и такая классификация включает опыт множества поколений людей. Поэтому обобщение каждой книги до набора жанров, в которые она входит и сравнение уже жанров вполне допустимо.
Таблица 5
Результат вычислений для терма – слова, жанра "античная литература"
Жанр |
Жанры близких книг |
Количество книг, % |
античная литература |
античная литература |
30 |
античная литература, детский рассказ |
2,5 | |
античная литература, проза |
2,5 | |
биография |
12,5 | |
биография, искусство |
2,5 | |
биография, поэзия |
2,5 | |
мистика, античная литература, проза |
2,5 | |
приключения (детская лит,), проза, фэнтези |
2,5 | |
проза, биография |
2,5 | |
проза, русская проза |
2,5 | |
русская проза |
15 | |
русская проза, биография |
2,5 | |
фантастика |
12,5 | |
фэнтези |
2,5 | |
фэнтези, юмор |
2,5 | |
юмор |
2,5 |
В таблице 5 представлен пример результата для жанра “античная литература” с применением слова в качестве терма. Из-за того, что было несколько книг в жанре «античная литература», количество соответствующих им жанров пришлось нормализировать. Так уже видно, что абсолютное большинство соответствий приходится на античную литературу, т.е. соответствуют требуемому. Для сравнения, в таблице 6 представлены результаты для того же жанра, но с использованием словосочетаний длиной 2:
Таблица 6
Результат вычислений для терма – словосочетания длиной 2, жанра «античная литература»
Жанр |
Жанры близких книг |
Количество книг, % |
античная литература |
античная литература |
72,5 |
античная литература, биография, научно-историческая |
2,5 | |
античная литература, детский рассказ |
2,5 | |
античная литература, научно-историческая |
2,5 | |
античная литература, проза |
7,5 | |
античная литература, философия |
7,5 | |
мистика, античная литература |
2,5 | |
мистика, античная литература, проза |
2,5 |
Здесь соответствий еще больше и можно сказать, что для античной литературы использование словосочетаний длиной 2 больше подходит, чем использование слов. Однако этого все равно недостаточно, чтобы сделать общий вывод. Необходимо еще более обобщить полученные результаты. Для этого для каждого жанра и каждого вида терма были просуммированы книги подходящего жанра и разделены на их общее количество (15). Результаты представлены в таблице 7:
Таблица 7
Обобщенные результаты эксперимента
Жанр |
Слово |
Словосочетание длиной 2 |
Словосочетание длиной 3 |
Словосочетание длиной 4 |
античная литература |
0.375 |
1 |
1 |
1 |
античная литература, проза |
0.85 |
0.5 |
0.35 |
0.35 |
античная литература, религия (наука) |
0.55 |
1 |
1 |
1 |
бизнес |
0.85 |
0.1 |
0.1 |
0.1 |
биография, животные, домашние животные |
0.55 |
0.3 |
0.2 |
0.2 |
компьютерная литература, бизнес |
0.7 |
0.55 |
0.2 |
0.2 |
лингвистика, юмор, справочники |
0.45 |
0.3 |
0.5 |
0.55 |
мистика, фэнтези, юмор |
0.5 |
0.75 |
0.45 |
0.35 |
приключения (детская лит.), биография |
0.4 |
0.1 |
0.2 |
0.25 |
триллер |
0.45 |
0.3 |
0.3 |
0.25 |
фантастика |
0.675 |
0.4 |
0.25 |
0.275 |
фэнтези |
0.225 |
0.375 |
0.3 |
0.275 |
Итог |
0.548 |
0.473 |
0.4042667 |
0.4 |
Видно, что в среднем поиск по словам дает более точный результат в плане жанров. Близко к нему идет поиск по словосочетаниям с длиной 2, словосочетания с длиной 3 и 4 дают приблизительно одинаковый результат. Однако следует учитывать, что это всего лишь обобщение результата. Например, для жанра бизнес поиск по словам отдает те книги, которые явно отнесены к жанру бизнеса, поиск же по словосочетаниям как правило находит книги жанра философия и психология, которые близки (по крайней мере на первый взгляд) к исходной. При этом, поиск по словам сильно ошибается в жанре античной литературы – основные результаты – это античная литература и биографии.
В конечно счете можно сделать вывод, что поиск с использованием слов и словосочетаний длиной 2 дают наиболее релевантный результат.