Google“ คุณหมายถึงอะไร” อัลกอริทึมทำงานอย่างไร


436

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

ฉันต้องสามารถใช้คิวรีผู้ใช้อย่างชาญฉลาดและตอบสนองไม่เพียง แต่ผลการค้นหาแบบดิบ แต่ยังมี "คุณหมายถึงอะไร" การตอบสนองเมื่อมีคำตอบอื่น ๆ ที่เป็นไปได้สูง

[ฉันกำลังพัฒนาในASP.NET (VB - อย่าถือมันไว้กับฉัน!)]

อัปเดต: ตกลงฉันจะเลียนแบบสิ่งนี้อย่างไรหากไม่มีผู้ใช้ที่ยังไม่ได้ชำระเงินนับล้าน

  • สร้างคำที่พิมพ์ผิดสำหรับแต่ละคำที่ 'รู้จัก' หรือ 'ถูกต้อง' และทำการค้นหา?
  • วิธีการอื่นที่หรูหรากว่านี้?

1
นี่คือเวอร์ชั่น VB.NET ของ Norvig Spelling Corrector คุณอาจพบว่ามีประโยชน์นี้หากยังไม่สาย!
Ralph Wiggum

7
ความเป็นไปได้ที่ซ้ำกันของคุณใช้ "คุณหมายถึง" อย่างไร?
Kurt McKee

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

คำตอบ:


366

นี่คือคำอธิบายโดยตรงจากแหล่งที่มา (เกือบ)

ค้นหา 101!

เวลาขั้นต่ำ 22:03

น่าดู!

โดยพื้นฐานแล้วตาม Douglas Merrill อดีต CTO ของ Google มันเป็นเช่นนี้:

1) คุณเขียนคำ (สะกดผิด) ใน google

2) คุณไม่พบสิ่งที่คุณต้องการ (อย่าคลิกที่ผลลัพธ์ใด ๆ )

3) คุณรู้ว่าคุณสะกดคำผิดดังนั้นคุณจึงเขียนคำใหม่ในช่องค้นหา

4) คุณค้นหาสิ่งที่คุณต้องการ (คุณคลิกที่ลิงค์แรก)

รูปแบบนี้ทวีคูณเป็นล้าน ๆ ครั้งแสดงให้เห็นว่าคำที่สะกดผิดบ่อยที่สุดคืออะไร

วิธีนี้ Google สามารถเกือบจะทันทีให้การแก้ไขการสะกดในทุกภาษา

นอกจากนี้ยังหมายความว่าหากทุกคนข้ามคืนเริ่มสะกดคำว่า "nigth" google จะแนะนำคำนั้นแทน

แก้ไข

@ThomasRutter: Douglas อธิบายว่าเป็น "การเรียนรู้ด้วยเครื่องเชิงสถิติ"

พวกเขารู้ว่าใครแก้ไขแบบสอบถามเพราะรู้ว่าแบบสอบถามใดมาจากผู้ใช้รายใด (ใช้คุกกี้)

หากผู้ใช้ทำการค้นหาและมีเพียง 10% ของผู้ใช้คลิกที่ผลลัพธ์และ 90% กลับไปและพิมพ์แบบสอบถามอื่น (ด้วยคำที่ถูกต้อง) และเวลาที่ 90% คลิกที่ผลลัพธ์พวกเขารู้ว่าพวกเขาได้พบ การแก้ไข

พวกเขายังสามารถทราบได้ว่าข้อความค้นหาเหล่านั้นเป็น "ข้อความค้นหา" ที่เกี่ยวข้องกับสองข้อความหรือไม่เนื่องจากมีข้อมูลของลิงก์ทั้งหมดที่แสดง

นอกจากนี้ตอนนี้พวกเขายังรวมถึงบริบทในการตรวจสอบการสะกดเพื่อให้พวกเขาสามารถแนะนำคำที่แตกต่างกันขึ้นอยู่กับบริบท

ดูตัวอย่างของ google wave (@ 44m 06s) ที่แสดงให้เห็นว่าบริบทได้รับการพิจารณาอย่างไรเพื่อแก้ไขการสะกดโดยอัตโนมัติ

ที่นี่มีการอธิบายว่าการประมวลผลภาษาธรรมชาติทำงานอย่างไร

และสุดท้ายนี่คือตัวอย่างที่ยอดเยี่ยมของสิ่งที่สามารถทำได้โดยเพิ่มการแปลด้วยเครื่องอัตโนมัติ(@ 1h 12m 47s) ลงในส่วนผสม

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


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

51
หากทุกคนเริ่มสะกดคำว่า "คืน" ... ฉันเชื่อว่าพวกเขาพบเจอกับคนที่ค้นหาคำว่า "Flickr"
Max Lybbert

42
ปัญหาที่เกิดขึ้นกับทุกคนที่สะกดผิดมีบางสิ่งเกิดขึ้นในแง่ที่รุนแรงมากกว่าเดิมลองพิมพ์ 'fuscia' ลงใน Google Google กล่าวว่า "คุณหมายถึง fuschia หรือเปล่า" ในความเป็นจริงการสะกดที่ถูกต้องคือ "บานเย็น" แต่ไม่มีใครสามารถสะกดได้อย่างถูกต้องด้วยเหตุผลบางอย่าง ปัญหาเลวร้ายยิ่งกว่าเดิมใน Dictionary.com ถ้าคุณพิมพ์ "fuschia" ลงในการค้นหาของพวกเขามันจะช่วยให้คุณ "ไม่มีผลลัพธ์สำหรับ fuschia. คุณหมายถึง 'fuschia' หรือไม่? (กล่าวคือคุณหมายถึงสิ่งที่คุณเพิ่งพิมพ์ใช่ไหม)
Daisy Sophia Hollman

8
ฉันไม่เชื่อว่าพวกเขาใช้ข้อมูลการสะกดผิดเท่านั้น - มีบางระยะทางของ Levenshtein หรือคล้ายกันเกิดขึ้น - ค้นหา 'Plack' (และคำอื่น ๆ หนึ่งคำหรือมากกว่า) และจะได้รับการแก้ไขเป็น 'ดำ' ซึ่งเป็นการสะกดที่ไม่น่า / พิมพ์ผิด
plusplus

4
@Jakub ฉันคิดว่าพวกเขาได้แก้ไขปัญหาตั้งแต่ฉันแสดงความคิดเห็น 4+ ปีที่ผ่านมา แท้จริงแล้ว Google ได้แก้ไขปัญหาด้วยเช่นกัน การค้นหา fuschia จะรวมผลลัพธ์ของ Fuchsia โดยอัตโนมัติ
Daisy Sophia Hollman

104

ฉันพบบทความนี้เมื่อไม่นานมานี้: วิธีเขียนตัวแก้ไขการสะกดคำที่เขียนโดยPeter Norvig (ผู้อำนวยการฝ่ายวิจัยของ Google Inc. )

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

ด้านล่างเป็นคำอธิบายสั้น ๆ ของอัลกอริทึม อัลกอริทึมประกอบด้วยสองขั้นตอนการเตรียมการและการตรวจสอบคำ

ขั้นตอนที่ 1: การเตรียมการ - การตั้งค่าฐานข้อมูลคำ

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

ขั้นตอนที่ 2 การตรวจสอบคำ - การค้นหาคำที่คล้ายกับคำที่ตรวจสอบ

วิธีที่คล้ายกันนี้หมายความว่าระยะการแก้ไขต่ำ (โดยทั่วไปคือ 0-1 หรือ 0-2) ระยะทางแก้ไขเป็นจำนวนขั้นต่ำของการแทรก / ลบ / การเปลี่ยนแปลง / การสลับที่จำเป็นในการแปลงคำหนึ่งไปเป็นอีกคำหนึ่ง

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


6
@Davide: "" "ตัวอย่างเป็นไพ ธ อน แต่มันชัดเจนและเข้าใจง่าย" "": ฉันไม่เข้าใจการใช้งานของคุณ "แต่" ... ฉันจะบอกว่าสไตล์การเขียนของ Python + Norvig ชัดเจนและชัดเจน เข้าใจง่าย "เป็นผลลัพธ์ที่คาดหวัง
John Machin

20
"แต่" อยู่ที่นั่นเพราะแฮร์รี่พูดในคำถามของเขาว่าเขาเป็นนักพัฒนา VB.NET ดังนั้นฉันคิดว่าเขาไม่มั่นใจกับภาษาไพ ธ อน
Davide Gualano

56

สำหรับทฤษฎีของ "คุณหมายถึง" อัลกอริทึมคุณสามารถอ้างถึงบทที่ 3 ของการดึงข้อมูลเบื้องต้น มันให้บริการออนไลน์ฟรี ส่วน 3.3 (หน้า 52) ตอบคำถามของคุณอย่างแน่นอน และเพื่อตอบการอัปเดตของคุณโดยเฉพาะคุณต้องมีพจนานุกรมคำศัพท์และไม่มีอะไรอื่น (รวมถึงผู้ใช้หลายล้านคน)


10

อืม ... ฉันคิดว่า google ใช้คลังข้อมูลอันมากมายของพวกเขา (อินเทอร์เน็ต) เพื่อทำ NLP ที่จริงจัง (การประมวลผลภาษาธรรมชาติ)

ตัวอย่างเช่นพวกเขามีข้อมูลมากมายจากอินเทอร์เน็ตทั้งหมดที่พวกเขาสามารถนับจำนวนครั้งที่มีการเรียงลำดับคำสามคำเกิดขึ้น (เรียกว่าtrigram ) ดังนั้นหากพวกเขาเห็นประโยคเช่น: "pink frugr concert" พวกเขาจะเห็นว่ามันมีเพลงฮิตไม่กี่เพลงจากนั้นหา "Pink * concert" ที่น่าจะเป็นไปได้มากที่สุดในคลังของพวกเขา

เห็นได้ชัดว่าพวกเขาทำสิ่งที่ Davide Gualano พูด แต่อ่านลิงก์นั้น แน่นอนว่า Google ใช้หน้าเว็บทั้งหมดที่รู้ว่าเป็นคลังข้อมูลเพื่อให้อัลกอริธึมมีประสิทธิภาพเป็นพิเศษ


7

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


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

6

โดยปกติตัวแก้ไขการสะกดคำที่ใช้ประโยชน์จะใช้วิธีการต่าง ๆ เพื่อให้คำแนะนำเกี่ยวกับการสะกด บางสิ่งเป็น:

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

  • ใช้ข้อความหรือพจนานุกรมขนาดใหญ่ที่ทุกคนหรือส่วนใหญ่รู้ว่าสะกดถูกต้อง เหล่านี้จะพบได้อย่างง่ายดายออนไลน์ในสถานที่เช่นLingPipe จากนั้นเพื่อพิจารณาข้อเสนอแนะที่ดีที่สุดคุณมองหาคำที่ใกล้เคียงที่สุดโดยยึดตามการวัดหลายประการ สิ่งที่ง่ายที่สุดคือตัวละครที่คล้ายกัน สิ่งที่แสดงให้เห็นผ่านการวิจัยและการทดลองคือลำดับของอักขระสองหรือสามตัวทำงานได้ดีขึ้น (bigrams และ trigrams) เพื่อปรับปรุงผลลัพธ์ให้ดียิ่งขึ้นให้ชั่งน้ำหนักคะแนนที่สูงขึ้นในการแข่งขันที่จุดเริ่มต้นหรือท้ายคำ เพื่อเหตุผลด้านประสิทธิภาพให้จัดทำดัชนีคำเหล่านี้ทั้งหมดเป็นตรีโกณมิติหรือใหญ่เพื่อให้เมื่อคุณทำการค้นหาคุณจะแปลงเป็น n-gram และค้นหาผ่าน hashtable หรือ trie

  • ใช้การวิเคราะห์พฤติกรรมที่เกี่ยวข้องกับข้อผิดพลาดของแป้นพิมพ์โดยขึ้นอยู่กับตำแหน่งของตัวละคร ดังนั้น "hwllo" ควรเป็น "hello" เพราะ 'w' อยู่ใกล้กับ 'e'

  • ใช้คีย์ออกเสียง (Soundex, Metaphone) เพื่อจัดทำดัชนีคำและค้นหาการแก้ไขที่เป็นไปได้ ในทางปฏิบัติโดยปกติแล้วผลลัพธ์ที่แย่กว่าการใช้การจัดทำดัชนี n-gram ตามที่อธิบายไว้ข้างต้น

  • ในแต่ละกรณีคุณต้องเลือกการแก้ไขที่ดีที่สุดจากรายการ นี่อาจเป็นตัวชี้วัดระยะทางเช่น levenshtein ตัวชี้วัดของแป้นพิมพ์ ฯลฯ

  • สำหรับวลีที่มีหลายคำเพียงหนึ่งคำเท่านั้นที่อาจถูกสะกดผิดซึ่งในกรณีนี้คุณสามารถใช้คำที่เหลือเป็นบริบทในการพิจารณาการจับคู่ที่ดีที่สุด


6

ใช้ระยะทาง Levenshteinจากนั้นสร้าง Metric Tree (หรือ Slim tree) เพื่อสร้างดัชนีคำ จากนั้นเรียกใช้คิวรีเพื่อนบ้านที่ใกล้ที่สุด 1 อันและคุณจะได้รับผลลัพธ์


4

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

ดังนั้น,

  1. คุณต้องมีพจนานุกรม (ภาษาอังกฤษหรือตามข้อมูลของคุณ)

  2. สร้างคำศัพท์บังตาที่เป็นช่องและคำนวณความน่าจะเป็นสำหรับการเปลี่ยนภาพโดยใช้พจนานุกรมของคุณ

  3. เพิ่มตัวถอดรหัสเพื่อคำนวณระยะห่างข้อผิดพลาดขั้นต่ำโดยใช้โครงสร้างบังตาที่เป็นช่องของคุณ แน่นอนคุณควรดูแลการแทรกและการลบเมื่อคำนวณระยะทาง สิ่งที่สนุกคือคีย์บอร์ด QWERTY ช่วยเพิ่มระยะทางถ้าคุณกดปุ่มใกล้กัน (cae จะเลี้ยวรถ cay จะเปลี่ยนเป็นแมว)

  4. ส่งคืนคำที่มีระยะทางต่ำสุด

  5. จากนั้นคุณสามารถเปรียบเทียบข้อมูลนั้นกับฐานข้อมูลคิวรีของคุณและตรวจสอบว่ามีผลลัพธ์ที่ดีกว่าสำหรับการจับคู่แบบใกล้เคียงอื่น ๆ หรือไม่


4

นี่คือคำตอบที่ดีที่สุดที่ฉันพบการสะกดคำถูกนำไปใช้และอธิบายโดยผู้อำนวยการฝ่ายวิจัยของ Google Peter Peter Norvig

หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับทฤษฎีที่อยู่เบื้องหลังนี้คุณสามารถอ่านบทหนังสือของเขา

แนวคิดของอัลกอริทึมนี้ขึ้นอยู่กับการเรียนรู้ของเครื่องทางสถิติ


3

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


3

ตามที่คาดเดา ... มันสามารถ

  1. ค้นหาคำ
  2. หากไม่พบใช้อัลกอริทึมเพื่อพยายาม "เดา" คำ

อาจเป็นบางสิ่งบางอย่างจาก AI เช่นเครือข่าย Hopfield หรือเครือข่ายการเผยแพร่ด้านหลังหรืออย่างอื่น "ระบุลายนิ้วมือ", การกู้คืนข้อมูลที่เสียหายหรือการแก้ไขการสะกดคำตามที่ Davide กล่าวไว้แล้ว ...


2

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

ที่จริงแล้วหากการสะกดผิดมีผลกับคำค้นหาบ่อยที่สุด algorythm จะนำไปใช้สำหรับคำที่เหมาะสม


1
ไม่มีใครสงสัยเลยว่า Google มีข้อมูลที่จำเป็นทั้งหมดในการทำเช่นนี้ แต่คำถามก็คือการขอรายละเอียดว่า Google เกิดอัลกอริทึมในการทำสิ่งนี้กับข้อมูลจำนวนมากได้อย่างไรในเวลาที่เหมาะสม พวกเขาจะมี gazillions ของการค้นหาต่อวัน - พวกเขาจะระบุตัวตนได้อย่างง่ายดายว่าข้อความค้นหาคือ 'การแก้ไขการสะกด' ของอีกคำหนึ่งหรือไม่ ปัจจัยใดที่ทำให้ Google ตัดสินใจว่าคำหนึ่งเป็นคำที่สะกดผิด เหล่านี้คือรายละเอียดการนำไปปฏิบัติที่น่าสนใจ
thomasrutter

2

เกี่ยวกับคำถามของคุณจะเลียนแบบพฤติกรรมโดยไม่ต้องมีข้อมูลมากมาย - ทำไมไม่ใช้ข้อมูลจำนวนมากที่รวบรวมโดย google ดาวน์โหลดผลลัพธ์ google sarch สำหรับคำที่สะกดผิดและค้นหา "คุณหมายถึง:" ใน HTML

ฉันเดาที่เรียกว่าตอบโต้กับผู้ใช้ได้ในปัจจุบัน :-)


นานแค่ไหนที่ Google หยุดบอทของคุณไม่ให้ทำการขูด - หรือไม่ google จะสังเกตเห็นวันนี้ใช่ไหม
Andrew Harry

ฉันไม่คิดว่าพวกเขาจะสังเกตเห็นถ้า reqs / sec ไม่สูงเกินไป
Mauricio Scheffer

2

นอกเหนือจากคำตอบข้างต้นในกรณีที่คุณต้องการที่จะดำเนินการบางอย่างด้วยตัวเองอย่างรวดเร็วนี่คือคำแนะนำ -

ขั้นตอนวิธี

คุณสามารถค้นหาการดำเนินการและเอกสารรายละเอียดของขั้นตอนวิธีนี้บนGitHub

  • สร้างคิวลำดับความสำคัญด้วยตัวเปรียบเทียบ
  • สร้างแผนภูมิการค้นหา Ternay และแทรกคำภาษาอังกฤษทั้งหมด (จากโพสต์ของ Norvig ) พร้อมกับความถี่
  • เริ่มต้นการสำรวจ TST และสำหรับทุกคำที่พบใน TST ให้คำนวณ Levenshtein Distance ( LD ) จาก input_word
  • ถ้า LD ≤ 3 ให้ใส่คิวลำดับความสำคัญ
  • ที่ Last แยก 10 คำจาก Priority Queue และแสดงผล

1

คุณหมายถึงว่าตัวตรวจการสะกดใช่ไหม หากเป็นตัวตรวจสอบการสะกดคำแทนที่จะเป็นวลีทั้งหมดฉันมีลิงค์เกี่ยวกับการตรวจสอบการสะกดคำที่มีการพัฒนาอัลกอริทึมในหลาม ตรวจสอบลิงค์นี้

ในขณะเดียวกันฉันยังทำงานในโครงการที่มีการค้นหาฐานข้อมูลโดยใช้ข้อความ ฉันเดาว่านี่จะแก้ปัญหาของคุณ


1

นี่เป็นคำถามเก่าและฉันประหลาดใจที่ไม่มีใครแนะนำ OP โดยใช้ Apache Solr

Apache Solr เป็นเครื่องมือค้นหาข้อความเต็มรูปแบบที่นอกเหนือจากการทำงานอื่น ๆ อีกมากมายนอกจากนี้ยังมีการตรวจการสะกดคำหรือคำแนะนำการค้นหา จากเอกสาร :

ตามค่าเริ่มต้นตัวตรวจสอบการสะกดของ Lucene จะเรียงลำดับคำแนะนำเป็นอันดับแรกจากคะแนนจากการคำนวณระยะทางสตริงและอันดับที่สองตามความถี่ (ถ้ามี) ของคำแนะนำในดัชนี


0

มีโครงสร้างข้อมูลเฉพาะ - แผนผังการค้นหาที่ประกอบไปด้วยสามส่วน - ที่สนับสนุนการจับคู่บางส่วนและการจับคู่ใกล้เคียงโดยธรรมชาติ


-1

วิธีที่ง่ายที่สุดในการคิดออกคือการเขียนโปรแกรมแบบไดนามิกของ Google

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

ทางออกที่ดีที่สุดใช้การเขียนโปรแกรมแบบไดนามิกและเรียกซ้ำ

นี่เป็นปัญหาที่ได้รับการแก้ไขด้วยวิธีแก้ปัญหามากมาย เพียง google รอบ ๆ จนกว่าคุณจะพบรหัสโอเพนซอร์สบางส่วน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.