วิธีสร้างการค้นหาเชิงความหมายสำหรับโดเมนที่กำหนด


19

มีปัญหาที่เราพยายามแก้ไขในที่ที่เราต้องการค้นหาความหมายของชุดข้อมูลของเรานั่นคือเรามีข้อมูลเฉพาะโดเมน (ตัวอย่าง: ประโยคที่พูดถึงรถยนต์)

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

  1. คล้ายกับวลีนั้น
  2. มีส่วนหนึ่งของประโยคที่คล้ายกับวลี
  3. ประโยคที่มีความหมายคล้ายบริบท


ให้ฉันลองยกตัวอย่างให้ฉันสมมติว่าฉันค้นหาวลี "ประสบการณ์การซื้อ" ฉันควรได้ประโยคดังนี้:

  • ฉันไม่เคยคิดเลยว่าการซื้อรถอาจใช้เวลาน้อยกว่า 30 นาทีในการเซ็นและซื้อ
  • ฉันพบรถที่ฉันชอบและขั้นตอนการซื้อนั้น
    ง่ายและตรงไปตรงมา

  • ฉันเกลียดการช็อปปิ้งรถยนต์อย่างแน่นอน แต่วันนี้ฉันดีใจที่ฉันทำ


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

หากประโยคใช้คำที่แตกต่างกันก็ควรจะสามารถค้นหาได้

สิ่งที่เราได้ลองไปแล้ว:

  1. Open Semantic Searchปัญหาที่เราประสบอยู่ที่นี่คือการสร้าง ontology จากข้อมูลที่เรามีหรือเพื่อการค้นหา ontology ที่มีอยู่จากโดเมนต่าง ๆ ที่เราสนใจ

  2. การค้นหาแบบยืดหยุ่น (BM25 + เวกเตอร์ (tf-idf)) เราลองสิ่งนี้ในที่ซึ่งมันมีประโยคไม่กี่ประโยค แต่ความแม่นยำนั้นไม่ค่อยดีนัก ความแม่นยำก็ไม่ดีเช่นกัน เราพยายามเทียบกับชุดข้อมูลที่มนุษย์เป็นผู้ดูแลมันสามารถรับประมาณ 10% ของประโยคเท่านั้น

  3. เราลองใช้งานแต่งงานที่แตกต่างกันเช่นที่กล่าวถึงครั้งเดียวในประโยคเปลี่ยนรูปและลองดูตัวอย่างและลองประเมินผลกับชุดที่มนุษย์เป็นผู้ดูแลของเราและนั่นก็มีความแม่นยำต่ำมาก

  4. เราพยายามELMO สิ่งนี้ดีกว่า แต่ก็ยังมีความแม่นยำต่ำกว่าที่เราคาดไว้และมีภาระการรับรู้เพื่อตัดสินใจค่าโคไซน์ด้านล่างซึ่งเราไม่ควรพิจารณาประโยค สิ่งนี้ใช้กับจุดที่ 3

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม. ขอบคุณมากสำหรับความช่วยเหลือล่วงหน้า


คำถามที่เป็นลายลักษณ์อักษรดี - คุณสามารถเพิ่มตัวอย่างการค้นหาได้อีก 5 ตัวอย่างหรือไม่ พวกเขามักจะใช้วลีคำศัพท์หนึ่งถึงสามคำหรือคำค้นหาจะยาวขึ้นหรือไม่? คุณอยู่ในเส้นทางที่ถูกต้อง
Adnan S

สวัสดี Adnan คำค้นหาจะเป็นวลีหนึ่งถึงสามคำเสมอ เช่นประสบการณ์การซื้อ, ความสะดวกสบายในการขับขี่, ระบบ Infotainment, การตกแต่งภายใน, ระยะทาง, สมรรถนะ, ที่นั่งสบาย, พฤติกรรมของพนักงาน
Jickson

บทความนี้อาจน่าสนใจสำหรับกรณีของคุณ: elastic.co/blog/… (คำใบ้: leverage word2vec)
Val

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

คุณอาจต้องการดูความคล้ายโคไซน์ ดังอธิบายด้านล่างมันเกี่ยวข้องกับการแปลงสตริงในเวกเตอร์ที่สามารถแสดงในพื้นที่ 2D คำนวณมุมโคไซน์ของเวกเตอร์ 2 ตัวนั้น มุมนี้แสดงถึง "ความคล้ายคลึงกัน" ระหว่าง 2 สาย นี่เป็นบทความที่ดีเกี่ยวกับมัน medium.com/swlh/playing-with-word-vectors-308ab2faa519
sagar1025

คำตอบ:


5

ฉันอยากจะแนะนำให้คุณดูการบรรยายแต้มเกรนเจอร์เกี่ยวกับวิธีการสร้างระบบการค้นหาความหมาย => https://www.youtube.com/watch?v=4fMZnunTRF8 เขาพูดถึงกายวิภาคศาสตร์ของระบบการค้นหาความหมายและแต่ละชิ้นใช้ประกอบกันเพื่อให้ได้คำตอบสุดท้าย

ตัวอย่างที่ดีของความคล้ายคลึงเชิงบริบทคือเครื่องมือค้นหาของ Bing: ป้อนคำอธิบายรูปภาพที่นี่

ข้อความค้นหาดั้งเดิมมีคำว่า {canned soda} และผลการค้นหาของ bing สามารถอ้างถึง {canned diet soda}, {soft drink}, {อุณหภูมิห้องที่ยังไม่เปิด} หรือ {เครื่องดื่มอัดลม} bing ทำได้อย่างไร:

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

ยิ่งระยะทางของเวกเตอร์ใกล้กันมากเท่าไหร่ ตอนนี้คุณสามารถค้นหาข้อความค้นหาเพื่อนบ้านที่ใกล้ที่สุดโดยพิจารณาจากระยะทางของเวกเตอร์ ตัวอย่างเช่นสำหรับข้อความค้นหา {วิธีหยุดสัตว์ไม่ให้ทำลายสวนของฉัน} เพื่อนบ้านที่ใกล้ที่สุดจะให้ผลลัพธ์เหล่านี้:

ป้อนคำอธิบายรูปภาพที่นี่

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

ความคล้ายคลึงกันทางบริบทยังสามารถทำได้โดยการลดขนาดคำศัพท์โดยใช้บางสิ่งบางอย่างเช่น LSI (การทำดัชนีความหมายแฝง) การทำเช่นนี้ในหลามฉันอยากจะแนะนำให้คุณตรวจสอบห้องสมุด genism สำหรับหลาม: https://radimrehurek.com/gensim/about.html


1

คุณอาจสนใจมองหาWeaviateเพื่อช่วยคุณแก้ปัญหานี้ มันเป็นสมาร์ทกราฟขึ้นอยู่กับvectorization ของวัตถุข้อมูล

หากคุณมีโดเมนภาษาเฉพาะ (เช่นตัวย่อ) คุณสามารถขยาย Weaviate กับแนวคิดที่กำหนดเอง

คุณอาจสามารถแก้ปัญหาของคุณด้วยคุณสมบัติการค้นหาความหมาย (เช่นExplore{}) หรือคุณสมบัติการจำแนกอัตโนมัติ

ฟังก์ชั่นสำรวจ

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

{
  Get{
    Things{
      Publication(
        explore: {
          concepts: ["fashion"],
          certainty: 0.7,
          moveAwayFrom: {
            concepts: ["finance"],
            force: 0.45
          },
          moveTo: {
            concepts: ["haute couture"],
            force: 0.85
          }
        }
      ){
        name
      }
    }
  }
}

หากคุณจัดโครงสร้างสคีมากราฟของคุณตาม - ตัวอย่างเช่น - ชื่อคลาส "ประโยค" ข้อความค้นหาที่คล้ายกันอาจมีลักษณะดังนี้:

{
  Get{
    Things{
      Sentence(
        # Explore (i.e., semantically) for "Buying Experience"
        explore: {
          concepts: ["Buying Experience"]
        }
        # Result must include the word "car" 
        where: {
          operator: Like
          path: ["content"]
          valueString: "*car*"
        }
      ){
        content
      }
    }
  }
}

หมายเหตุ:
คุณสามารถสำรวจกราฟโดยรวมได้

การจำแนกอัตโนมัติ

ทางเลือกอื่นอาจทำงานกับคุณลักษณะการจัดประเภทตามบริบทหรือKNN

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

PS:
วิดีโอนี้ให้บริบทอีกเล็กน้อยถ้าคุณต้องการ


0

เท่าที่ฉันรู้ฉันไม่คิดว่ามีรูปแบบเชิงทฤษฎีใด ๆ สำหรับการสร้างเครื่องมือค้นหาความหมาย อย่างไรก็ตามฉันเชื่อว่าเครื่องมือค้นหาความหมายควรได้รับการออกแบบเพื่อตอบสนองความต้องการเฉพาะด้าน ต้องบอกว่าเครื่องมือค้นหาความหมายใด ๆ ที่สามารถเข้าใจเจตนาของผู้ใช้และบริบทของข้อความค้นหาได้สำเร็จจำเป็นต้องทำงานกับการประมวลผลภาษาธรรมชาติ (NLP) และการเรียนรู้ของเครื่องจักรเป็นหน่วยการสร้าง

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

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