หลักการของบทความทางวิทยาศาสตร์วิธีการมุงด้วยไม้มุงหลังคา วิธีการทำงานของ shingle เมื่อตรวจสอบข้อความสำหรับการลอกเลียนแบบ การประมาณอย่างง่ายของวิธี shingle ใน php


Shingle (จากมาตราส่วนภาษาอังกฤษเซลล์) - ลิงค์ที่สร้างห่วงโซ่ของประโยคจึงสร้างข้อความ

โรคงูสวัดช่วยในการตรวจสอบข้อความสำหรับความเป็นเอกลักษณ์ ในปี 1997 Andrei Broder คนหนึ่งของ Yahoo!, Andrei Broder ได้แนะนำวิธีการมุงด้วยหินซึ่งสามารถระบุได้ว่าเนื้อหาที่เป็นเอกลักษณ์อยู่ที่ใดและได้รับการประมวลผลที่ใด ด้วยการพัฒนาการเพิ่มประสิทธิภาพวิธีการมุงด้วยหินได้รับความนิยมสูงสุด

ทำงานกับข้อความ

ในการบัญญัติศัพท์นั้นไม้มุงหลังคาจะใช้ความหมายของข้อความที่วิเคราะห์แล้ว Canonization คือวิธีการตัดคำที่ไม่ใช่ความหมาย (สรรพนามคำสันธานคำบุพบท) และเครื่องหมายวรรคตอนออกจากคำอื่น ๆ ทั้งหมด

ก่อนการรับรอง: ในมุมที่สวยงามของ French Riviera ครึ่งทางจาก Marseille ไปยังชายแดนอิตาลีมีโรงแรมสีชมพูขนาดใหญ่

หลังการทำให้เป็นที่ยอมรับ: ในมุมหนึ่งที่สวยงามของ French Riviera ครึ่งทางของ Marseille โรงแรมสีชมพูขนาดใหญ่ที่อวดแนวชายแดนอิตาลี

การรวบรวมโรคงูสวัด

หลังจากการบัญญัติข้อความแล้วจะแบ่งออกเป็นโรคงูสวัด แต่ก่อนอื่นคุณต้องตัดสินใจเกี่ยวกับความยาวเนื่องจากความแม่นยำของการวิเคราะห์ขึ้นอยู่กับขนาดของแผ่นไม้มุงหลังคา ไม้มุงหลังคาขนาดเล็กต้องใช้ความพยายามในการทำงาน แต่มีความแม่นยำสูง คำที่เล็กที่สุดประกอบด้วย 3 คำที่ใหญ่ที่สุด - จาก 8 คำมุงหลังคามากกว่า 8 คำไม่เหมาะสำหรับการกำหนดความเป็นเอกลักษณ์เนื่องจากไม่ได้ผล โรคงูสวัดเกิดเป็นลูกโซ่ - คำสุดท้าย หรือแม้แต่สองอันจากแผ่นไม้มุงหลังคาก่อนหน้านี้จะถูกผูกติดอยู่กับคำแรกของแผ่นไม้มุงหลังคาถัดไป

ลองยกตัวอย่าง: ไม้มุงหลังคาแผ่นแรก - มุมที่น่ารื่นรมย์หนึ่งมุมไม้มุงหลังคาที่สองอาจมีตัวเลือกต่างๆ - มุมที่น่ารื่นรมย์ของฝรั่งเศสหรือมุมของ French Riviera

ขั้นตอนวิธี

เมื่อข้อความทั้งหมดถูกแบ่งออกเป็นงูสวัดโปรแกรมเมอร์ก็ลงมือทำธุรกิจ พวกเขาเปิดเผยข้อความที่ผ่านการประมวลผลกับอัลกอริทึมพิเศษที่เปรียบเทียบงูสวัดสองตัวจากเอกสารสองชุดที่แตกต่างกันและกำหนดระดับความบังเอิญ อัลกอริทึมนี้ถูกใช้โดยเครื่องมือค้นหา

เพื่อให้ข้อความดูไม่ซ้ำกันมากที่สุดคุณควรแทนที่คำด้วยคำพ้องความหมายและสลับย่อหน้า ฯลฯ นั่นคือเปลี่ยนรูปร่างของข้อความโดยสิ้นเชิงโดยไม่ต้องเปลี่ยนเนื้อหา

อัลกอริทึมของโรคงูสวัด (งูสวัด) มีไว้สำหรับการค้นหาข้อความที่ซ้ำกันอย่างไม่ชัดเจน คำว่า "ฟัซซี่" หมายความว่าการค้นหาซ้ำที่เกิดขึ้นจะไม่ถูกค้นหาอย่างแน่นอน แต่ไม่ชัดเจน ตัวอย่างเช่นเป็นไปได้ที่จะทำซ้ำไม่เพียง แต่สตริงเท่านั้น แต่ยังรวมถึงแต่ละวลีด้วย โดยพื้นฐานแล้วการปรับเปลี่ยนอัลกอริธึม shingle จะถูกใช้โดยระบบป้องกันการลอกเลียนแบบเครื่องมือค้นหาเพื่อต่อสู้กับสแปมการค้นหาคัดลอกวางและเพื่อกำหนดความเป็นเอกลักษณ์ของการเขียนซ้ำ
โรคงูสวัด - ส่วนที่แยกจากกัน (สตริงย่อย) ที่เลือกเพื่อเปรียบเทียบจากเนื้อหาของข้อความด้วย จำนวนหนึ่ง คำในลำดับเพื่อตรวจสอบความเป็นเอกลักษณ์ โรคงูสวัดสามารถเป็นได้หลายคำยิ่งงูสวัดสั้นเท่าไหร่ผลการทดสอบก็จะแม่นยำมากขึ้นเท่านั้น
มีหลายวิธีในการแยกข้อความออกเป็นงูสวัด:
- งูสวัดไม่ทับซ้อนกัน

ทับซ้อนกันเมื่อสตริงย่อยรวมส่วนหนึ่งของสตริงย่อยก่อนหน้า

วิธีการเกิดโรคงูสวัดและจำนวนคำหรืออักขระในงูสวัดตลอดจนการเลื่อนของไม้มุงหลังคา (ตามจำนวนคำหรืออักขระที่จะเลื่อนสตริงย่อยที่ตามมา) มีผลอย่างมากต่อความถูกต้องของผลลัพธ์ เมื่อกำหนดขนาดของสตริงย่อยตัวเลือกจะขึ้นอยู่กับพลังการประมวลผลขนาดหน่วยความจำและความแม่นยำที่ต้องการของผลลัพธ์
ด้วยบริการ seo-tank ออนไลน์ของเราคุณสามารถกำหนดค่าพารามิเตอร์อัลกอริทึมได้อย่างยืดหยุ่น คุณสามารถเปลี่ยนข้อความของคุณได้โดยตรงในทรัพยากรของเราเปรียบเทียบกับต้นฉบับและหากจำเป็นให้ย้อนกลับและทำการแก้ไขใหม่

หลังจากแยกออกเป็นงูสวัด (สตริงย่อย) ก็มีอยู่เช่นกัน แนวทางที่แตกต่างกัน ในการคำนวณเช็คซัมและการเปรียบเทียบเพิ่มเติมเพื่อประเมินความคล้ายคลึงกันของข้อความ สามารถรับเช็คซัมได้โดยใช้การแฮชตามอัลกอริทึมต่างๆ (SHA1, SHA3, CRC32, MD5) ถัดไปคุณต้องประเมินความบังเอิญของการตรวจสอบที่ได้รับสำหรับทั้งสองข้อความที่เปรียบเทียบกัน บริการของเราช่วยให้คุณตรวจสอบการลอกเลียนแบบหรือความเป็นเอกลักษณ์ของข้อความทางออนไลน์โดยใช้อัลกอริทึมมุงหลังคา จะคำนวณเปอร์เซ็นต์ของการยืมข้อความ ในกรณีนี้ มันมา เฉพาะเกี่ยวกับการทำซ้ำสมบูรณ์หรือในกรณีของการเขียนซ้ำบางส่วนเนื่องจากเป็นไปไม่ได้ที่จะเขียนข้อความที่เหมือนกันทั้งหมดอย่างอิสระ อัลกอริทึมนี้ใช้โดยเครื่องมือค้นหาและระบบป้องกันการลอกเลียนแบบ กำหนดคุณภาพของการเขียนใหม่และระดับของการยืมข้อความทางออนไลน์

เพื่อการเปรียบเทียบที่มีประสิทธิภาพคุณต้องตั้งค่าพารามิเตอร์อัลกอริทึมที่ถูกต้อง ยิ่งแผ่นไม้มุงหลังคามีขนาดเล็กก็จะระบุคำที่ตรงกันได้แม่นยำมากขึ้น นอกจากนี้เมื่อมีการเปลี่ยนแปลงมีโอกาสน้อยที่จะ "กระโดดข้าม" วลีซ้ำ ๆ อย่างไรก็ตามยิ่งข้อความมีขนาดใหญ่เท่าใดก็ยิ่งค้นหารายการที่ตรงกันได้ง่ายขึ้นเท่านั้น (ถ้ามี) และไม่จำเป็นต้องเลือกค่าแผ่นไม้มุงหลังคาขั้นต่ำ สำคัญ! การประมวลผลข้อความขนาดใหญ่ที่แม่นยำยิ่งขึ้นอาจช้าลง!

มักมีการเขียนว่าอัลกอริทึม shingle ไม่สามารถระบุตัวตนของวลีเช่น "ครูให้สื่อการเรียนการสอนนักเรียน / ครูให้สื่อการเรียนการสอนแก่นักเรียน" บริการตรวจสอบความเป็นเอกลักษณ์หลายอย่างที่ใช้อัลกอริทึม shingle จะแสดงให้เห็นว่าวลีนั้นไม่ซ้ำกันแม้ว่าจะเหมือนกันสำหรับเครื่องมือค้นหาก็ตาม ประเด็นที่นี่ไม่ได้อยู่ในข้อบกพร่องของอัลกอริทึม shingle แต่อยู่ที่วิธีการสร้างข้อความ (การทำความสะอาด) หากใช้สัณฐานวิทยาในการบัญญัติศัพท์นั่นคือทุกคำจะถูกลดขนาดให้อยู่ในรูปแบบปกติอัลกอริทึมจะจดจำวลีที่เหมือนกันได้ง่ายโดยไม่คำนึงถึงคำลงท้าย รูปแบบปกติของคำใช้สำหรับนามนามเอกพจน์สำหรับคำกริยารูปแบบไม่ จำกัด ฯลฯ

แผ่นไม้มุงหลังคา

ไม้มุงหลังคาคือเซลล์อนุภาคก้อนอิฐ - อย่างน้อยถ้าคุณใช้ความหมายที่คำนี้มีอยู่ ภาษาอังกฤษมันมาจากไหน ในด้านการโปรโมตเว็บไซต์ไม้มุงหลังคาหมายถึงอิฐอนุภาคที่สร้างข้อความและเป็นพื้นฐานสำหรับวิธีการตรวจสอบความเป็นเอกลักษณ์ของข้อความที่น่าเชื่อถือที่สุด Shingle ในแง่นี้เกี่ยวข้องโดยตรงกับการวิเคราะห์ทางภาษาของข้อความและเป็นวิธีการและแนวคิดที่มีมาตั้งแต่ปี 1997 เมื่อ Andrei Broder พนักงานระดับสูงของ Yahoo! เสนอให้ใช้อย่างแพร่หลาย ด้วยการใช้การวิจัยข้อความแบบแผ่นเดียวคุณสามารถแยกข้อความที่ไม่ซ้ำกันออกจากเนื้อหาที่เหมือนกันได้อย่างแม่นยำ ปัจจุบันเมื่อ SEO กำลังมาแรง ระดับมืออาชีพปัญหาของโรคงูสวัดและการทำงานร่วมกับพวกเขามีความเกี่ยวข้องมากยิ่งขึ้น

กำลังเตรียมข้อความ

แผ่นไม้มุงหลังคาเป็นข้อความชิ้นเล็ก ๆ ประกอบด้วยคำหลายคำประมวลผลโดยใช้เทคนิคพิเศษในการวิเคราะห์ เทคนิคนี้ - การบัญญัติศัพท์ - ประกอบด้วยข้อเท็จจริงที่ว่าข้อความได้รับการอำนวยความสะดวกโดยคำทั้งหมดที่ไม่เกี่ยวข้องกับความหมายและไวยากรณ์ (คำสันธานคำบุพบทคำอุทาน) และเครื่องหมายวรรคตอน ใช้วลีต่อไปนี้เป็นตัวอย่าง:

“ นี่คือรายชื่อเมืองจำนวนมากและแต่ละแห่งมีสถานประกอบการพนันมีคาสิโนที่ผิดกฎหมายเหล่านี้หลายร้อยแห่ง” เมดเวเดฟกล่าว

หลังจากการจัดรูปแบบแล้วจะมีลักษณะดังนี้:

นี่คือรายชื่อของเมืองจำนวนมากที่แต่ละแห่งมีสถานประกอบการพนันที่นี่คาสิโนที่ผิดกฎหมายหลายร้อยแห่งกล่าวว่า Medvedev

การรวบรวม Shingle

ขั้นตอนที่สองของการทำงานกับข้อความ: การเลือกงูสวัดโดยตรง ในการทำสิ่งนี้ก่อนอื่นคุณต้องกำหนดความยาวของไม้มุงหลังคา ยิ่งไม้มุงหลังคามีขนาดเล็กเท่าไหร่ก็ยิ่งทำงานได้มากขึ้นและการวิเคราะห์ที่แม่นยำยิ่งขึ้น แผ่นไม้มุงหลังคาขั้นต่ำคือสามคำสูงสุดคือแปดคำ ไม้มุงหลังคาที่ยาวกว่ามักไม่สมเหตุสมผลเนื่องจากมีข้อผิดพลาดมากเกินไปในการตรวจสอบนี้ หนึ่งในกฎสำหรับการเขียนแผ่นไม้มุงหลังคาคือการซ้อนทับกันนั่นคือการจับคำอย่างน้อยหนึ่งคำจากแผ่นไม้มุงหลังคาก่อนหน้านี้ นี่คือสิ่งที่จะทำให้สามารถตรวจสอบคำทั้งหมดได้อย่างรอบคอบ

ตัวอย่างเช่น shingle 3 คำแรกของวลีจะมีลักษณะดังนี้:

นี่คือรายการใหญ่

และไม้มุงหลังคาที่สองอาจมีตัวเลือก:

รายชื่อจำนวนมากและเมืองจำนวนมาก

งูสวัดทั้งหมดของข้อความถูกรวบรวมตามหลักการนี้: ทับซ้อนกันโดยมีจำนวนคำเท่ากันในแผ่นไม้มุงหลังคา

Shingle Algorithm

จากนั้นโปรแกรมเมอร์จะสร้างการตรวจสอบข้อความ อัลกอริทึมของโรคงูสวัดเกี่ยวข้องกับการเปรียบเทียบโรคงูสวัดของข้อความสองข้อความที่แตกต่างกันโดยพิจารณาว่าหนึ่งในนั้นซ้ำกับข้อความที่สองหรือไม่ เครื่องมือค้นหาซึ่งฝังอยู่ วิธีการโปรแกรม การตรวจสอบไม้มุงหลังคาเป็นการยากที่จะหลอกลวง พวกเขาพบเอกสารที่คล้ายกันและเปรียบเทียบจำนวนไม้มุงหลังคาที่ตรงกันซึ่งระบุได้อย่างชัดเจนว่าไม่มีเอกลักษณ์ ดังนั้นเมื่อมีการคูณข้อความจึงจำเป็นต้องใช้ความพยายามในการทำให้ตรงกันเจือจางและจัดโครงสร้างข้อความแทนที่นิพจน์ทางวลีซึ่งจะทำให้ไม่เหมือนต้นฉบับ อย่างไรก็ตามความเสี่ยงในการถูกจับโดยเครื่องมือค้นหาในข้อความที่ไม่ใช่ต้นฉบับจะหายไปก็ต่อเมื่อมีการใช้บทความที่ไม่ซ้ำใครจริงๆ

ความเป็นเอกลักษณ์ของเนื้อหา

เนื้อหาที่ไม่ซ้ำกันเป็นสิ่งสำคัญในการโปรโมตเว็บไซต์ใด ๆ ในขณะเดียวกันความเป็นเอกลักษณ์ก็เป็นตัวบ่งชี้การใช้เนื้อหาต้นฉบับและไม่ได้ยืมมาจากแหล่งข้อมูลอื่น การคัดลอกข้อมูลที่เป็นข้อความอย่างง่ายไม่เพียง แต่ไร้ประโยชน์ แต่ยังเต็มไปด้วยการลงโทษของเครื่องมือค้นหาอีกด้วย

Shingle ใช้สำหรับการทำสำเนาบทความ

ใครก็ตามที่ทำซ้ำบทความอย่างน้อยหนึ่งครั้งต้องเผชิญกับแนวคิดเช่นนี้ แผ่นไม้มุงหลังคา... หลายคนไม่ได้พยายามที่จะเข้าใจสาระสำคัญของคำนี้ สิ่งนี้สามารถเห็นได้จากตัวอย่างการสื่อสารกับผู้เพิ่มประสิทธิภาพมือใหม่

ตัวอย่างทั่วไปของบทสนทนาเมื่อสั่งให้ผลิตซ้ำบทความ:

  • 1 - ฉันคาดหวังความเป็นเอกลักษณ์อย่างน้อย 95%!
  • 2 - ควรตรวจสอบข้อความในขั้นตอนใดของแผ่นไม้มุงหลังคา?
  • 1 - คืออะไร แผ่นไม้มุงหลังคา?
  • 2 - เป็นพารามิเตอร์ที่ใช้สำหรับการเปรียบเทียบเมื่อทำซ้ำบทความ
  • 1 - ที่นี่ฉันจะจัดวางบทความ หลังจากจัดทำดัชนีแล้วสิ่งที่เป็นเอกลักษณ์จะเป็นอย่างไร? แค่บอกว่าไม่มีโรคงูสวัดอย่าเขียนถึงฉันเกี่ยวกับโรคงูสวัด

นี่คือบทสนทนาบางส่วนที่บางครั้งเกิดขึ้นระหว่างการสนทนา ข้อกำหนดทางเทคนิค บน . ปัญหานี้ทำให้ฉันต้องพยายามหาว่าคืออะไร อัลกอริทึม shingle และ "สิ่งที่พวกเขากินด้วย" เครื่องมือเพิ่มประสิทธิภาพ บทความนี้ไม่ได้แสร้งทำเป็นว่าเป็นการพิจารณาปัญหาอย่างสมบูรณ์หรือเป็นคำจำกัดความคลาสสิกของคำศัพท์ หน้าที่ของเราคือทำความเข้าใจว่าวิธีการที่ไม่สามารถเข้าใจได้นี้ใช้ในการกำหนดความเป็นเอกลักษณ์เมื่อเราพยายามทำซ้ำบทความได้อย่างไร

นี่เป็นส่วนหนึ่งของข้อความต้นฉบับ

Shingle เป็นโซ่ที่ประกอบด้วยคำติดต่อกันหลายคำ ในทางปฏิบัติใช้ ขนาดไม้มุงหลังคา จาก 3 ถึง 10 คำ อาร์เรย์ถูกสร้างขึ้นก่อนที่จะเปรียบเทียบข้อความ โซ่อาร์เรย์ไม่ได้สร้างขึ้นตามลำดับ แต่ซ้อนทับกัน ฉันจะยกตัวอย่างอาร์เรย์ดังกล่าวในขั้นตอนที่ 3 คำ

ข้อความต้นฉบับคือ "First second third third four five sixth word"
อาร์เรย์ผลลัพธ์:

  • ที่หนึ่งที่สองที่สาม
  • วินาทีที่สามที่สี่
  • ที่สามสี่ที่ห้า
  • ที่สี่ที่ห้าที่หก
  • คำที่หกที่ห้า

ความยาวของอาร์เรย์เท่ากับจำนวนคำลบด้วยความยาวของขั้นตอนมุงด้วยไม้บวกหนึ่ง ในตัวอย่างของเรา 7 - 3 + 1 \u003d 5 นอกจากนี้ข้อความจะถูกทำให้เป็นมาตรฐานก่อนที่จะได้รับอาร์เรย์ กระบวนการนอร์มัลไลเซชันเกี่ยวข้องกับการวางคำหยุดคำบุพบทคำสันธานสัญลักษณ์ตัวเลข ฯลฯ เมื่อเรามีอาร์เรย์สำหรับแต่ละข้อความแล้วคุณสามารถคำนวณเปอร์เซ็นต์ของความไม่ซ้ำกันระหว่างบทความได้อย่างง่ายดาย การคำนวณความเป็นเอกลักษณ์ของบทความ - เปอร์เซ็นต์ของโรคงูสวัดที่ไม่เท่ากันจากจำนวนทั้งหมดในบทความ ในการคำนวณความเป็นเอกลักษณ์ของบทความในชุดข้อความหนึ่ง ๆ เราต้องเปรียบเทียบบทความนี้กับบทความที่เหลือและใช้ผลลัพธ์ขั้นต่ำ

ขนาดของไม้มุงหลังคาที่จะใช้ในการตรวจสอบ

คำถามตอบโต้เกิดขึ้นทันที: เรากำลังเปรียบเทียบข้อความเพื่อจุดประสงค์ใด? หากเราเพียงแค่ต้องการค้นหาความเป็นเอกลักษณ์ของบทความกันเองคำตอบนั้นง่าย - ยิ่งสั้น แผ่นไม้มุงหลังคายิ่งมีข้อความที่เป็นเอกลักษณ์มากขึ้น ให้ฉันอธิบาย: ความเป็นเอกลักษณ์เช่น 95% ในขั้นตอนที่ 5 คำนั้น "ไม่ซ้ำกัน" มากกว่า 95% ที่เท่ากันที่ 10 คำ กล่าวอีกนัยหนึ่ง: ความไม่ซ้ำกัน 97% โดยมีความยาว 10 คำเท่ากับความเป็นเอกลักษณ์ 90% โดยมีความยาว 5 คำ และหากเราต้องการทำนายความเป็นเอกลักษณ์ของข้อความเดียวกันจากมุมมองของเครื่องมือค้นหา (หลังจากการจัดวางและการจัดทำดัชนี) ก็ไม่มีคำตอบที่แน่นอน มีเพียงสิ่งเดียวเท่านั้นที่สามารถพูดได้อย่างแจ่มแจ้ง: ยิ่งน้อย ขนาดไม้มุงหลังคา และเปอร์เซ็นต์ของความเป็นเอกลักษณ์ที่สูงขึ้นเครื่องมือค้นหาที่ภักดีก็จะเข้ามาที่บทความของคุณมากขึ้น จุดนี้ควรคำนึงถึงเป็นพิเศษสำหรับผู้ที่ตัดสินใจสร้างเว็บไซต์ของตนเองเป็นครั้งแรกและเติมเต็มด้วยเนื้อหาที่เป็นเอกลักษณ์

เปอร์เซ็นต์ความไม่ซ้ำกันของข้อความและขนาด

และอีกหนึ่งข้อสังเกต ยิ่งบทความต้นฉบับสั้นลงเท่าใดก็ยิ่งยากที่จะบรรลุเปอร์เซ็นต์ของความเป็นเอกลักษณ์ของข้อความที่ทำซ้ำได้มากขึ้นเท่านั้น และนี่เป็นสิ่งที่เข้าใจได้ตั้งแต่ เปอร์เซ็นต์ของความเป็นเอกลักษณ์ของข้อความ เท่ากับอัตราส่วนของจำนวนโซ่ไม้มุงหลังคาที่ตรงกันกับจำนวนโซ่มุงด้วยไม้ทั้งหมดในบทความ ในข้อความสั้น ๆ จำนวนทั้งหมดของโซ่ไม้มุงหลังคามีขนาดเล็ก ดังนั้นทัศนคติจะแย่ลง นอกจากนี้เมื่อเขียนข้อความ seo ภายใต้ ข้อความค้นหาที่สำคัญ ในความหนาแน่นของบทความสั้น ๆ คำหลัก จะสูงขึ้นอย่างหลีกเลี่ยงไม่ได้ การคัดลอกบทความแสดงให้เห็นว่าการมีนิพจน์หลัก 1-3 ยาวเกิน 3 คำทำให้ยากมากที่จะได้เปอร์เซ็นต์ความเป็นเอกลักษณ์ของข้อความที่ดี กฎนี้เป็นจริงอย่างยิ่งสำหรับบทความที่มีความยาวน้อยกว่า 2K อักขระ

วิธี shingle ใช้ในทุกโปรแกรมสำหรับการทำสำเนาบทความ

โปรแกรมสำหรับการคูณบทความใช้วิธี CRC เมื่อใช้อัลกอริธึม shingle ซึ่งช่วยให้คุณได้ความเร็วที่เหมาะสมในการเปรียบเทียบข้อความที่คูณจำนวนมาก ซึ่งจะช่วยเพิ่มความเร็วในการสร้างข้อความ สำหรับการอ้างอิง: อัลกอริทึม CRC ช่วยให้คุณไม่สามารถทำงานกับสายของงูสวัดได้ด้วยตัวเอง แต่ด้วยการตรวจสอบซึ่งตามธรรมชาติจะเพิ่มความเร็ว (การเปรียบเทียบตัวเลขเป็นลำดับขนาดที่เร็วกว่าการเปรียบเทียบสตริง)

เรากำลังรอคำสั่งซื้อของคุณสำหรับการผลิตซ้ำบทความและการเขียนคำโฆษณาบนแหล่งข้อมูลของเรา http: //www.site

อัลกอริทึมของโรคงูสวัด (งูสวัดในภาษาอังกฤษคือกระเบื้องมาตราส่วน) มีไว้สำหรับการค้นหาข้อความที่ซ้ำกันอย่างไม่ชัดเจน คำว่า "ฟัซซี่" หมายความว่าการค้นหาซ้ำที่เกิดขึ้นจะไม่ถูกค้นหาอย่างแน่นอน แต่เบลอ ตัวอย่างเช่นเป็นไปได้ที่จะทำซ้ำไม่เพียง แต่สตริงเท่านั้น แต่ยังรวมถึงแต่ละวลีด้วย โดยทั่วไปเครื่องมือค้นหาจะใช้การปรับเปลี่ยนอัลกอริทึม shingle เพื่อต่อสู้กับสแปมของเครื่องมือค้นหา อนุญาตให้ยกเว้นข้อความที่คล้ายกันหรือเหมือนกันทั้งหมดจากผลการค้นหา อย่างไรก็ตามปัญหาของแหล่งที่มาเดิมยังคงอยู่นั่นคือ แหล่งที่ข้อมูลนี้ปรากฏเป็นอันดับแรก แม้ว่าจะเชื่อกันว่าเครื่องมือค้นหาบันทึกข้อเท็จจริงนี้ไว้อย่างชัดเจน แต่ความล้มเหลวเกิดขึ้นในระบบใด ๆ ลองพิจารณารายละเอียดคำถามเกี่ยวกับวิธีนี้ดูว่าไม้มุงหลังคานี้กินกับอะไร!

Shingle Method อัลกอริทึม

สำหรับแต่ละส่วนของข้อความ (สตริงย่อย) จะมีการคำนวณการตรวจสอบบางอย่างซึ่งเป็นหน้าที่ในการระบุข้อความที่กำหนดนี่คือแผ่นไม้มุงหลังคา ข้อความที่เป็นสัญลักษณ์เหล่านี้ควรซ้อนทับกันทีละส่วนเพื่อไม่ให้สัญลักษณ์หรือคำใดสูญหายไป นอกจากนี้จากชุดการตรวจสอบทั้งหมดเหล่านี้จะถูกเลือกที่ตรงตามเกณฑ์บางอย่าง - แม้จะถูกหารด้วยจำนวนบางส่วนเป็นต้น เป็นผลให้กลุ่มตัวอย่างมีกฎหมายการกระจายที่เหมือนกันไม่มีการเน้นที่ส่วนใดส่วนหนึ่งของข้อความ ด้วยเหตุนี้ถ้าการตรวจสอบตรงกันระหว่างข้อความที่เข้ารหัสสองข้อความความคล้ายคลึงกันของข้อความจะชัดเจน และยิ่งมีการแข่งขันมากเท่าไหร่ข้อความก็จะยิ่งมีความคล้ายคลึงกันมากขึ้นเท่านั้น

คุณสามารถเลือกหน่วยการเข้ารหัส - สตริงย่อยได้หลายวิธี คุณสามารถใช้ขั้นตอนขนาดอักขระหรืออักขระหลายตัวหรือจะใช้คำหรือหลายคำก็ได้ จากนั้นคุณต้องตัดสินใจว่าสตริงย่อยควร "ป้อน" (รวมส่วนหนึ่งของรายการก่อนหน้า) ในโค้ดของคุณหรือไม่ซึ่งจะส่งผลต่อความถูกต้องของผลลัพธ์ กำหนดขนาดของสตริงย่อยเป็นสิบคำหรือสิบตัวอักษรตัวเลือกขึ้นอยู่กับพลังการประมวลผลขนาดหน่วยความจำและความแม่นยำของผลลัพธ์ นอกจากนี้ขอแนะนำให้ล้างข้อความต้นทางของช่องว่างซ้ำเครื่องหมายวรรคตอนและแม้แต่คำบุพบท tk พวกเขาไม่ได้รับภาระข้อมูลพิเศษใด ๆ

ตัวอย่างของการใช้อัลกอริทึมวิธีการมุงด้วยไม้มุงหลังคา

ลองพิจารณาเป็นตัวอย่างสารสกัดที่ปรับเปลี่ยนเล็กน้อยจากบทกวีของ A.S. พุชกิน

ข้อความต้นฉบับ:

"
พายุปกคลุมท้องฟ้าด้วยความมืดมิด
พายุหมุนวงกลมหิมะ
เธอจะหอนแค่ไหน
มันจะร้องไห้เหมือนเด็ก
- อัลกอริทึมวิธี Shingle ในที่ทำงาน
"

แก้ไขข้อความเล็กน้อย:

"
พายุปกคลุมพื้นด้วยสีขาว
พายุหมุนวงกลมหิมะ
เธอจะหอนสิงโตได้อย่างไร
มันจะร้องไห้เหมือนเด็ก
- อัลกอริธึมเริ่มต้น Shingle
"

มาเลือกคำเป็นขั้นตอนกันเถอะ ลองใช้ความยาวของสตริงย่อยเท่ากับ 5 คำ เราจะเขียนเส้นเป็นรอยต่อ (ทีละเส้น) เนื่องจากข้อความมีขนาดเล็กจึงไม่รวมคำ
ด้วยเหตุนี้เราจึงได้รับรหัสข้อความที่มีความยาว 5 ตัวเลข

รูปที่. 1 ตัวอย่างเค้าโครงข้อความโดยใช้วิธีงูสวัด

เรามีชุดคำสำหรับกรณีแรก:
Stormglawnecovers กระแสน้ำวน | วงกลมหิมะ เธอจะกรีดร้อง childAlgorithmMethodShinglesin | งาน
กัญชา:
| | | |

และที่สอง:
พายุหมุนโลกสีขาว | วงกลมหิมะ Tokaklev | เธอจะกรีดร้อง childAlgorithmmethodashinglovna | เริ่มต้น
กัญชา:
| | | |

เป็นผลให้เราได้การแข่งขันหนึ่งครั้ง - หมายเลขที่สาม (c0c522529b0e810f73b210cc972e9966) ความบังเอิญนี้แสดงให้เห็นว่าความคล้ายคลึงกันระหว่างข้อความทั้งสองอย่างน้อย 25% แน่นอนว่าสำหรับข้อความขนาดเล็กเช่นนี้มันเป็นไปได้ที่จะลดขั้นตอนลง แต่ถึงแม้จะมีพารามิเตอร์เริ่มต้นเช่นนี้ก็เป็นตัวอย่างที่ดี

Supershingle

แม้ว่าสำหรับแต่ละข้อความจะมีการรวบรวมชุดของโรคงูสวัดซึ่งลดลงตามเกณฑ์บางอย่าง แต่ก็เหมือนกันทั้งหมดสำหรับเอกสารจำนวนมากพลังการคำนวณที่จะต้องใช้ก็ยังคงมีอยู่อย่างมหาศาล ดังนั้นในทางปฏิบัติมักจะพิจารณาการตรวจสอบอีกครั้งหนึ่งในชุดของงูสวัดเอกสารที่เรียกว่า "supershingle" ดังนั้นเอกสารที่มีชุดงูสวัดที่ตรงกันทั้งหมดจะถือว่าตรงกัน

อัลกอริทึมวิธีการ Shingle หมายเหตุ

อย่างไรก็ตามควรสังเกตว่าปัจจุบันมีการใช้อัลกอริทึมที่ได้รับการปรับปรุงสำหรับการตรวจหารายการที่ซ้ำกัน ตัวอย่างเช่นอัลกอริทึมทางเลือกสำหรับการตรวจจับรายการที่ซ้ำกันไม่ชัดเจนถูกสร้างและคิดค้นโดยยานเดกซ์ อัลกอริทึมที่แก้ไขคือความจริงที่ว่าเครื่องมือค้นหามีเอกสารดัชนีในรูปแบบของไฟล์กลับหัว (หรือดัชนีกลับด้าน) และสถานการณ์นี้สามารถนำมาใช้อย่างเป็นประโยชน์ในขั้นตอนการค้นหารายการที่ซ้ำกัน

การประมาณอย่างง่ายของวิธี shingle ใน php

ด้านล่างนี้เป็นคำอธิบายและซอร์สโค้ดเพื่อสาธิตอัลกอริทึม shingle ใน php ลองจำลองเครื่องมือค้นหา

ขั้นแรกคุณต้องดาวน์โหลดไฟล์ผ่านเครือข่าย ซึ่งสามารถทำได้ด้วยฟังก์ชัน php ง่ายๆ:

// รับไฟล์ตามลิงค์ $ url ?> // ลบแท็กโดยใช้ฟังก์ชัน php ?>

กำหนดตัวแปรที่ต้องการ

// อาร์เรย์ของสตริงย่อย $ hesh_mass \u003d อาร์เรย์ (); // อาร์เรย์ของค่าแฮชสตริงย่อย $ tmp \u003d "; ?\u003e

มาสร้างอาร์เรย์ของคำ เราใช้ช่องว่างเป็นเกณฑ์การแยก

// ฟังก์ชัน php มาตรฐานอีกครั้ง ?>

มาสร้างอาร์เรย์ของสตริงย่อย ในฟังก์ชั่นนี้เราใส่คำห้าคำเข้าด้วยกัน

มาสร้างอาร์เรย์ของค่าแฮช:

ในฐานะฟังก์ชันการเปรียบเทียบเราจะใช้การค้นหาอย่างง่ายเนื่องจากฟังก์ชันนี้จะแสดงเปอร์เซ็นต์ของการจับคู่

"เปอร์เซ็นต์การจับคู่:"... $ similar_counter * 100 / ขนาด ($ hesh_mass1); ?\u003e