Принцип роботи методу шинглів наукові статті. Як працює метод шинглів при перевірці тексту на плагіат. Просте наближення методу шинглів на php


Шингл (від англ. Чешуйка, осередок) - ланка, з якого будується ланцюжок пропозицій, утворюючи тим самим текст.

Шингли допомагають перевірити текстові матеріали на унікальність. У 1997 р один із співробітників Yahoo !, Andrei Broder, ввів в ужиток метод шинглів, який здатний визначити, де знаходиться унікальний контент, а де оброблений. З розвитком оптимізації метод шинглів придбав найбільшу популярність.

Робота над текстом

У канонізації шингл приймає значення проаналізованого уривка тексту. Канонізація - це метод відсікання не несуть смислового навантаження слів (займенники, сполучники, прийменники) і розділових знаків від всіх інших слів.

До канонізації: В один приємний куточку Французької Рив'єри, на півдорозі від Марселя до італійському кордоні, красується великий рожевий готель.

Після канонізації: один приємний куточку французької Рив'єри півдорозі марселя італійському кордоні красується великий рожевий готель.

збираємо шингли

Після канонізації тексту його розбивають на шингли. Але спочатку слід визначитися з їх довжиною, так як від розміру шингли залежить точність аналізу. Маленький шингл передбачає копітку роботу, але високу точність. Найменший складається з 3 слів, найбільший - з 8. Шингл з більш 8 слів непридатний для визначення унікальності, так як неефективний. Шингли формуються по ланцюжку - останнє слово або навіть два з попереднього шингли нанизується на перше слово наступного шингли.

Наведемо приклад: перший шингл - один приємний куточку, другий шингл може бути з варіантами - приємне куточку французької або куточку французької Рив'єри.

алгоритм

Як тільки весь текст розбили на шингли, за справу беруться програмісти. Вони піддають оброблений текст впливу спеціального алгоритму, який порівнює два шингли з двох різних документів і встановлює ступінь збігів. Даний алгоритм використовується пошуковими системами.

Щоб текст виглядав як можна уникальнее, слід замінювати слова синонімами і міняти місцями абзаци і т.д., тобто повністю змінити форму тексту, не змінюючи змісту.

Алгоритм шинглів (shingles - англ. Черепички, лусочки) призначений для нечіткого пошуку дублікатів тексту. Слово "нечіткий" означає, що входження дублів шукається не точно, а розмито. Наприклад, можливий дублікат не тільки рядки, а й окремих словосполучень. В основному модифікація алгоритму шинглів використовується системами антиплагіату, пошуковими системами для боротьби з пошуковим спамом, копіпастом, а також для визначення унікальності рерайта.
Шингли - виділені для порівняння з тіла тексту окремі частини (підрядка), з певною кількістю слів в його послідовності для перевірки на унікальність. Шингли можуть бути на будь-яку кількість слів, ніж шингл коротше, тим точніше буде результат перевірки.
Існують різні методи розбиття тексту на шингли:
- один за одним, шингли не перетинаються

Внахлест, коли подстроки включають в себе частину попередньої підрядка;

Спосіб формування шинглів і кількість слів або символів в шинглів, а також зрушення шингли (на скільки слів або знаків зсувається подальша подстрока) сильно впливає на точність результату. При визначенні розмірності подстроки вибір залежить від обчислювальної потужності, обсягів пам'яті і необхідної точності результатів.
За допомогою нашого онлайн-сервісу seo-tank ви можете гнучко настроівать параметри алгоритму. Ви можете змінювати свій текст прямо на нашому ресурсі, порівнювати його з оригіналом, і якщо потрібно, відкотиться назад і внести нові виправлення.

Після поділу на шингли (підрядка) Також існують різні підходи до обчислення контрольних сум і подальшого їх порівнянні для оцінки подібності тексту. Контрольні суми можна отримати за допомогою хешування за різними алгоритмами (SHA1, SHA3, CRC32, MD5). Далі потрібно оцінити збіг отриманих контрольних сум для двох порівнюваних текстів. Наш сервіс дозволяє визначити плагіат або унікальність тексту онлайн за допомогою алгоритму шинглів. Він розраховує відсоток запозичення тексту. В даному випадку мова йде виключно про дублікаті, повному або, в у разі рерайтинга, частковому, так як неможливо незалежно написати повністю ідентичні шматки тексту. Цей алгоритм використовують пошукові системи і системи антиплагіату. Визначте якість рерайта і ступінь запозичення тексту онлайн

Для ефективного порівняння потрібно задати правильні параметри алгоритму. Чим менше шингл, тим точніше будуть виявлені збігаються слова. Також і із зсувом-менше ймовірності "перестрибнути" повторювані словесні звороти. Однак чим більше текст, тим простіше знайти в ньому збіги (якщо вони є), і немає необхідності вибирати мінімальне значення шингли. Важливо! Більш точна обробка на великому тексті може бути більш повільної!

Нерідко пишуть, що алгоритм шинглів не здатний визначити ідентичність таких фраз, як "Викладач дає студенту матеріал / Викладачі дають студентам матеріали". І дійсно, багато сервісів перевірки унікальності, засновані на алгоритмі шинглів, покажуть, що фрази унікальні, хоча для пошукових систем вони ідентичні. Справа тут не в недоліках алгоритму шинглів, а в методах канонізації тексту (очищення). Якщо в канонізації використовується морфологія, тобто все слова наводяться до своєї нормальної формі, то алгоритм легко розпізнає фрази як однакові, не залежно від їх закінчень. Нормальна форма слова - для іменника називний відмінок, однина, для дієслова -невизначеність форма і т.д.

Шингл

Шингл - це осередок, частинка, цеглинка - у всякому разі, якщо брати значення, які має це слово в англійській мові, Звідки воно родом. У сфері просування сайтів шингл означає ті самі частинки-цеглинки, з яких будується текст, і є основою для самого надійного методу перевірки унікальності тексту. Шингл в цьому значенні має пряме відношення до лінгвістичного аналізу тексту і як метод і поняття існує з 1997 року, коли Andrei Broder, високопоставлений співробітник Yahoo! запропонував його для повсюдного використання. Користуючись дослідженням тексту за допомогою шинглів можна безпомилково відокремити унікальний текст від сінонімізірованного контенту. В даний час, коли SEO-оптимізація набуває професійний рівень, Питання шинглів і роботи з ними став ще більш актуальним.

підготовка тексту

Шингл - це невеликий, що складається з декількох слів, фрагмент тексту, оброблений за спеціальною методикою для аналізу. Ця методика - канонізація - полягає в тому, що текст полегшується на все несуттєві для сенсу і граматики слова (сполучники, прийменники, вигуки) і розділові знаки. Як приклад візьмемо таку фразу:

"Тут список з величезної кількості міст, і в кожному є гральні заклади, тут сотні цих нелегальних казино", - сказав Медведєв.

Після канонізації вона буде виглядати так:

тут список величезної кількості міст кожному є гральні заклади тут сотні цих нелегальних казино сказав Медведєв.

складання шинглів

Другий етап роботи з текстом: безпосереднє виділення шинглів. Для цього в першу чергу потрібно визначити довжину шингли. Чим менше шингл, тим більше роботи і тим точніше аналіз. Мінімальний шингл дорівнює трьом словами, максимальний - восьми. Довший шингл часто не має сенсу, так як при такій перевірці допускається занадто багато похибок. Одне з правил складання шингли - внахлест, тобто з захопленням як мінімум одного слова з попереднього шингли. Саме це дасть можливість скрупульозної перевірки всіх слів.

Наприклад, перший трехсловний шингл фрази буде виглядати так:

тут список величезного

А другий шингл може мати варіанти:

список величезної кількості і величезної кількості міст

За таким принципом складаються всі шингли тексту: внахлест, з рівним числом слів в шинглів.

алгоритм шинглів

Далі програмістом виробляється контрольна сума тексту. Алгоритм шингли передбачає порівняння шинглів двох різних текстів, визначаючи не є один з них дублікатом другого. Пошукові системи, в які закладено програмний метод шінгловой повірки, обдурити дуже важко. Вони знаходять подібні документи і порівнюють число збігів шинглів, чітко виявляючи відсутність унікальності. Тому при розмноженні тексту потрібна копітка робота по сінонімізаціі, розведення і структурування тексту, заміну фразеологічних висловів, що зробить його не схожим на оригінал. Однак ризик бути викритим пошуковою системою в неоригінальні тексті зникає лише в тому випадку, якщо використовуються дійсно унікальні статті.

унікальність контенту

Унікальний контент необхідний для просування будь-якого сайту. При цьому показником використання оригінального, а не запозиченого з інших ресурсів контенту, і є унікальність. Просте ж копіювання текстової інформації не тільки марно, але й небезпечно санкціями пошукових систем.

Шингл використовується при розмноженні статей

Всім, хто хоч раз виконував розмноження статей, довелося зіткнутися з таким поняттям, як шингл. Багато хто й не намагаються зрозуміти суть даного терміна. Це можна помітити на прикладі спілкування з початківцями оптимізаторами.

Типовий приклад діалогу при замовленні на розмноження статей:

  • 1 - Очікую унікальність не нижче 95%!
  • 2 - При якому етапі шингли перевіряти тексти?
  • 1 - А що таке шингл?
  • 2 - Це параметр, який використовується для порівняння, коли виконують розмноження статті.
  • 1 - Ось я зроблю розміщення статей. Після їх індексації яка унікальність буде? Тільки скажіть без шинглів, не пишіть мені про них.

Ось такі приблизно діалоги іноді трапляються при обговоренні технічного завдання на. Ця проблема підштовхнула мене зробити спробу розібратися: що ж таке алгоритм шинглів і «з чим його їдять» оптимізатори. Дана стаття не претендує на повноту розгляду питання або на класичне визначення терміна. Наше завдання - зрозуміти, яким чином використовується цей незрозумілий метод при визначенні унікальності, коли ми намагаємося розмножити статтю.

Це частина вихідного тексту

Шингл - ланцюжок, що складається з декількох, що йдуть підряд слів. На практиці використовується розмір шингли від 3 до 10 слів. Перед порівнянням текстів формують масив. Формуються ланцюжка масиву не послідовно, а внахлест. Наведу приклад такого масиву при кроці 3 слова.

Оригінальний текст - «Перше другій третині четверте п'яте шостому слова».
отриманий масив:

  • Перше другій третині
  • друга третина четверте
  • третя чверть п'ята
  • четверте п'яте шосте
  • п'ятого шостому слова

Довжина масиву дорівнює кількості слів мінус довжина кроку шингли плюс один. У нашому прикладі 7-3 + 1 \u003d 5. Більш того, перед отриманням масиву текст нормалізується. Процес нормалізації полягає в відкиданні стоп-слів, прийменників, спілок, символів, цифр і т.д. Після того, як ми отримали масив для кожного тексту, нескладно розрахувати відсоток унікальності між статтями. Розрахунок унікальності статей - відсоток неоднакових шинглів від загальної їх кількості в статтях. Для розрахунку унікальності статті в деякому наборі текстів ми повинні порівняти цю статтю з іншими і взяти мінімальний результат.

Який розмір шингли використовувати при перевірці

Тут же напрошується зустрічне запитання: для якої мети порівнюємо тексти? Якщо нам необхідно просто дізнатися унікальність статей між собою, то і відповідь проста - чим коротше шингл, Тим більше унікальні тексти. Поясню: унікальність, наприклад, 95% при кроці 5 слів, «більш унікальна» ніж ті ж 95% при кроці 10 слів. Можна сказати по-іншому: унікальність 97% при довжині 10 слів приблизно дорівнює унікальності 90% при довжині 5 слів. А якщо нам необхідно прогнозувати унікальність цих же текстів з точки зору пошукових систем (після їх розміщення та індексації), то тут немає точної відповіді. Однозначно можна стверджувати лише одне: чим менше розмір шингли і вище відсоток унікальності, тим більш лояльні будуть до ваших статей пошукові системи. Цей момент особливо необхідно враховувати тим, хто вирішив вперше створити свій сайт і наповнити його унікальним контентом.

Відсоток унікальності тексту і його розмір

І ще одне зауваження. Чим коротше вихідна стаття, тим важче домогтися високого відсотка унікальності розмножених текстів. І це зрозуміло, тому що відсоток унікальності тексту дорівнює відношенню кількості збіглися ланцюжків шингли до загальної кількості ланцюжків шингли в статті. У короткому тексті загальне число ланцюжків шингли невелика. Відповідно ставлення буде в гіршу сторону. Крім того, при написанні seo текстів під ключові запити в коротких статтях щільність ключових слів буде неминуче вище. Практика розмноження статей показує, що наявність 1-3 ключових виразів довжиною більше 3-х слів дуже сильно ускладнює отримати хороший відсоток унікальності тексту. Це правило особливо актуально для статей розміром менш 2К символів.

Метод шинглів застосовується у всіх програмах для розмноження статей

Програма для розмноження статей застосовує при використанні алгоритму шинглів метод CRC, що дозволяє досягти досить пристойній швидкості порівняння великої кількості розмножених текстів. А це, в свою чергу, збільшує і швидкість, з якою виконується генерація тексту. Для довідки: алгоритм CRC дозволяє працювати не з самими рядками шинглів, а з їх контрольними сумами, що, природно, підвищує швидкість (порівняння чисел відбувається на порядок швидше порівняння рядків).

Чекаємо ваших замовлень по розмноженню статей і копірайтингу на нашому ресурсі http: //www.сайт

Алгоритм шинглів (шингл (shingles) з англійської це черепички, лусочки) призначений для нечіткого пошуку дублікатів тексту. Слово "нечіткий" означає, то що входження дублів шукається не точно, а розмито. Наприклад, можливий дублікат не тільки рядки, а й окремих словосполучень. В основному модифікація алгоритму шинглів використовується пошуковими системами для боротьби з пошуковим спамом. Це дозволяє з пошукової видачі виключати тексти схожі один на одного або повністю ідентичні. Однак залишається проблема першоджерела, тобто джерела на якому дана інформація з'явилася в перші. Хоча вважається, що пошукові системи чітко фіксують цей факт, але в будь-якій системі трапляються збої. Розглянемо більш детально питання щодо цього методу, подивимося з чим їдять цей шингл!

Алгоритм методу шинглів

Для кожної частини тексту (підрядка) розраховується якась контрольна сума, завдання якої якось ідентифікувати даний текст, це шингл. Ці символьні шматочки тексту повинні йти в нахлест, один за одним, щоб жоден символ або слово не пропало. Далі зі всієї безлічі цих контрольних сум відбираються ті, які відповідають якогось критерію - парні, діляться на яке-небудь число і т.д. В результаті вибірка має рівномірний закон розподілу, не робиться акцент на будь-якої частини тексту. У підсумку, якщо між двома кодованими текстами співпадуть контрольні суми, то схожість текстів очевидна. І чим більше збігів, тим більше схожості текстів.

Вибирати одиницю кодування - подстроку можна по різному. Можна використовувати крок розміром з символ, або кілька символів, а можна брати слово або кілька слів. Далі, потрібно визначитися чи повинні підрядка "заїжджати" (включати частину попередньої) в свій код - це впливає на точність результату. Визначити розмірність підрядка в десять слів або десять символів, вибір залежить від обчислювальної потужності, обсягів пам'яті і точності результатів. До тогож бажано вихідний текст очистити від повторюваних пробілів, розділових знаків і навіть прийменників, тому що вони не несуть особливої \u200b\u200bінформаційного навантаження.

Приклад використання алгоритму методу шинглів

Розглянемо як приклад дві злегка змінені витяги з вірша А.С. Пушкіна

Оригінальний текст:

"
Буря млою небо криє,
Вихори снігові кружляючи,
Те як звір вона завиє,
Те заплаче як дитя
- Алгоритм методу шинглів в роботі
"

Трохи підправлений текст:

"
Буря білим землю криє,
Вихори снігові кружляючи,
Те як лев вона завиє,
Те заплаче як дитя
- Алгоритм методу шинглів на старт
"

В якості кроку виберемо слово. Довжину подстроки візьмемо рівну 5 словами. Складати рядки будемо в стик (один за одним). Так як текст маленький, то виключати слова
В результаті отримаємо кодований текст довжиною в 5 чисел.

Мал. 1 Приклад компонування тексту методом шинглів

Ось у нас вийшов набір слів для першого випадку:
БурямглоюнебокроетВіхрі | снежниекружаТокакзверь | оназавоетТозаплачеткак | дітяАлгорітмметодашінгловв | роботі
хеш:
| | | |

і другого:
БурябелимземлюкроетВіхрі | снежниекружаТокаклев | оназавоетТозаплачеткак | дітяАлгорітмметодашінгловна | старт
хеш:
| | | |

В результаті, у нас вийшло один збіг - третє число (c0c522529b0e810f73b210cc972e9966). Це збіг показує те, що між двома текстами схожість становить не менше 25%. Звичайно для такого маленького тексту, можна було зменшити крок, але і при таких початкових параметрах це є хорошим прикладом.

супершінглів

Якщо для кожного тексту складати навіть зменшене будь-яким критерієм набір шинглів, то все одно для великого обсягу документів обчислювальні потужності, які необхідно буде задіяти все одно залишаться колосальними. Тому на практиці часто над набором шинглів документа вважають ще одну контрольну суму, так званий «супершінглів». Отже, збіглися тоді будуть вважатися документи з повністю збіглися наборами шинглів.

Зауваження алгоритму методу шинглів

Однак, необхідно відзначити, що на поточний момент застосовуються вдосконалені алгоритми визначення дублікатів. Наприклад, альтернативний алгоритм визначення нечітких дублікатів, був створений і придуманий в Яндексі. Модифікований алгоритм той факт, що пошукова система мають індексним документом у вигляді інвертованого файлу (або інвертованим індексом) та цю ситуацію можна з користю використовувати в процедурі знаходження майже-дублікатів.

Просте наближення методу шинглів на php

Наведемо нижче опис і вихідний код, для демонстрації алгоритму шинглів на мові php. Будемо імітувати пошукову систему

Спочатку необхідно завантажити файл по мережі. Це можна зробити за допомогою простої функції на php:

// отримати файл за посиланням $ url ?> // видалимо теги за допомогою функції php ?>

Визначимо необхідні змінні

// масив подстрок $ Hesh_mass \u003d array (); // масив значень хеш подстрок $ Tmp \u003d »; ?\u003e

Створимо масив з слів. Як критерій поділу використовуємо пробіл.

// знову стандартна функція php ?>

Сформуємо масив подстрок. У цій функції ми просто складаємо слова по п'ять штук разом.

Сформуємо масив хеш значень:

В якості опції порівняння скористаємося простим перебором В результаті роботи функції виводиться відсоток збігів.

"Відсоток збігу:". $ Similar_counter * 100 / size ($ hesh_mass1); ?\u003e