Скалъпих набързо един груб алгоритъм за изчисляване на подобни произведения и го пуснах в действие. В края на всеки текст в момента се показват първите пет подобни текста, а на отделна страница за всеки текст могат да се разгледат малко повече бройки от подобните. Ето
пример с „Чужда принуда“ от Филип Хосе Фармър.
Все още никъде няма връзка към новата страница просто защото не ми хрумва къде да сложа такава. Дори се чудя дали въобще е нужна тази отделна страница…
Подобните творби се изчисляват въз основа на отбелязаните като прочетени. Това значи, че алгоритъма не връща резултати за текстове, които никой не е маркирал като прочетени.
Ето как работи долу-горе алгоритъма:
0. Имаме ограничение от X за броя върнати текстове. Имаме даден базов текст.
1. Търсят се всички читатели на дадения текст и се взимат всички техни прочетени творби.
2. За всяка творба от този списък се изчислява броя на читателите й и списъка се сортира по тази бройка.
3. После се взимат всички текстове от сортирания списък до X-то място.
4. В случай че повече от X текста отговарят на критерия, се прави пресявка по етикет на последните текстове с еднакъв брой читатели. Печелят творбите, които имат най-много общи етикети с дадения базов текст.
Ето пример:
Даден е текст № 1. Искаме първите пет подобни творби.
Търсим читателите на текст № 1. Търсим всички техни прочетени текстове и ги сортираме по брой срещания. Получава се този списък:
- 1. № 3 — 4 читатели
- 2. № 6 — 3 читатели
- 2. № 8 — 3 читатели
- 4. № 2 — 2 читатели
- 4. № 7 — 2 читатели
- 4. № 4 — 2 читатели
- 4. № 9 — 2 читатели
- 8. № 10 — 1 читател
Взимаме всички от първо до пето място. Това са:
- 1. № 3 — 4
- 2. № 6 — 3
- 2. № 8 — 3
- 4. № 2 — 2
- 4. № 7 — 2
- 4. № 4 — 2
- 4. № 9 — 2
Имаме повече от пет текста, затова тези, които са на последното място (четвърто), ги пресяваме по етикет. Получаваме следния списък:
- 1. № 7 — два общи етикета с № 1
- 2. № 9 — един общ етикет с № 1
- 2. № 2 — един общ етикет с № 1
- 4. № 4 — няма общи етикети с № 1
Взимаме първите два от списъка (7 и 9), защото толкова са ни нужни, за да си попълним бройката от пет подобни текста. № 2 просто е без късмет в случая.
Това е.
Скалъпих набързо един груб алгоритъм за изчисляване на подобни произведения и го пуснах в действие. В края на всеки текст в момента се показват първите пет подобни текста, а на отделна страница за всеки текст могат да се разгледат малко повече бройки от подобните. Ето [url=http://chitanka.info/text/666/similar]пример с „Чужда принуда“ от Филип Хосе Фармър[/url].
Все още никъде няма връзка към новата страница просто защото не ми хрумва къде да сложа такава. Дори се чудя дали въобще е нужна тази отделна страница…
Подобните творби се изчисляват въз основа на отбелязаните като прочетени. Това значи, че алгоритъма не връща резултати за текстове, които никой не е маркирал като прочетени.
Ето как работи долу-горе алгоритъма:
0. Имаме ограничение от X за броя върнати текстове. Имаме даден базов текст.
1. Търсят се всички читатели на дадения текст и се взимат всички техни прочетени творби.
2. За всяка творба от този списък се изчислява броя на читателите й и списъка се сортира по тази бройка.
3. После се взимат всички текстове от сортирания списък до X-то място.
4. В случай че повече от X текста отговарят на критерия, се прави пресявка по етикет на последните текстове с еднакъв брой читатели. Печелят творбите, които имат най-много общи етикети с дадения базов текст.
Ето пример:
Даден е текст № 1. Искаме първите пет подобни творби.
Търсим читателите на текст № 1. Търсим всички техни прочетени текстове и ги сортираме по брой срещания. Получава се този списък:
[list]
[*] 1. № 3 — 4 читатели
[*] 2. № 6 — 3 читатели
[*] 2. № 8 — 3 читатели
[*] 4. № 2 — 2 читатели
[*] 4. № 7 — 2 читатели
[*] 4. № 4 — 2 читатели
[*] 4. № 9 — 2 читатели
[*] 8. № 10 — 1 читател[/list]
Взимаме всички от първо до пето място. Това са:
[list]
[*] 1. № 3 — 4
[*] 2. № 6 — 3
[*] 2. № 8 — 3
[*] 4. № 2 — 2
[*] 4. № 7 — 2
[*] 4. № 4 — 2
[*] 4. № 9 — 2[/list]
Имаме повече от пет текста, затова тези, които са на последното място (четвърто), ги пресяваме по етикет. Получаваме следния списък:
[list]
[*] 1. № 7 — два общи етикета с № 1
[*] 2. № 9 — един общ етикет с № 1
[*] 2. № 2 — един общ етикет с № 1
[*] 4. № 4 — няма общи етикети с № 1[/list]
Взимаме първите два от списъка (7 и 9), защото толкова са ни нужни, за да си попълним бройката от пет подобни текста. № 2 просто е без късмет в случая.
Това е.