การสร้างชื่อ


10

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

ฉันมีความคิดว่าฉันสามารถสร้างฐานข้อมูลชื่อตามสัญชาติอาจเป็นคู่แรก / คู่สุดท้ายและกำหนดชื่อแบบสุ่มโดยใช้รายชื่อที่ไม่สนใจดังนั้นฉันจึงไม่ได้รับเหมือน Homer Simpson และถูกฟ้องร้องหรืออะไรบางอย่าง

ปัญหาที่เกิดขึ้นคือฉันต้องสร้างฐานข้อมูลขนาดใหญ่ของชื่อเพื่อให้สามารถใช้งานได้ อาจใช้เวลาตลอดไปหรือเสียค่าใช้จ่ายเว้นแต่มีบางคนมีรายการชื่อให้ใช้ฟรีแล้ว

ฉันมีความคิดอื่นที่ฉันสร้างสระและพยัญชนะคู่สุ่มและเพิ่มเข้าด้วยกัน แต่เป็นโปรแกรมด่วนที่สร้างชื่อเช่นนี้:

  • Seermeecpa
  • Cime
  • Ofmiahwumafi
  • Gozidi
  • Effawided

(สำหรับผู้ที่สนใจโค้ดคุณสามารถดูได้ที่นี่ )

นี่มัน ... คำหนึ่ง ดียกเว้น "Gozidi" - อันนั้นใช้ได้ ถึงกระนั้นอัตราความสำเร็จก็ยังไม่ชัดเจนนัก

มีสิ่งใดบ้างที่ฉันสามารถทำได้เพื่อสร้างชื่อให้เสียงดีกว่า (ดูด้านล่าง) หรือฉันควรเริ่มทำรายการนั้นหรือไม่? ฉันจะเลียนแบบวิธีที่มนุษย์ตัดสินใจได้หรือไม่ว่าชื่อดีหรือไม่อย่างน้อยก็มีความแม่นยำ ฉันต้องการอะไรแบบนี้เพื่อค้นหาในรายการใหญ่

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

หากคุณต้องการคำชี้แจงเพิ่มเติมให้ไปข้างหน้าและถาม ฉันไม่แน่ใจจริงๆว่าจะใส่อะไรที่นี่

ภาคผนวก: เท่าที่ฉันสามารถบอกได้มีแท็กที่ไม่ตรงกับคำถามนี้ทั้งหมดที่ดี หากใครที่อยู่ที่นี่นานกว่านี้สามารถแนะนำบางอย่างได้นั่นก็ยอดเยี่ยมมาก


น่าเสียดายที่คำถามของคุณดูเหมือนกว้างเกินไปตอนนี้ วิธีการสร้างชื่อที่แตกต่างกันจะเหมาะกับชื่อประเภทต่าง ๆ - เหมือนจริง (เช่นกัน, วัฒนธรรมใด?), แฟนตาซี, ไซไฟ, นามแฝง ฯลฯ แต่ละวิธีมีจุดแข็งและจุดอ่อนของตัวเอง - คุณกำลังขอการเปรียบเทียบและเกณฑ์ใด ? คุณจะตัดสินเองได้อย่างไรว่าชื่อนั้นดูดีหรือไม่? คุณสามารถปรับปรุงคำถามของคุณโดย จำกัด ให้แคบลงตามบรรทัดเหล่านี้
congusbongus

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

@congusbongus ฉันคิดว่าฉันคง
คดีฟ้องร้องกองทุนโมนิก้า

คุณสามารถลองเขียนชื่อโดยใช้คำนำหน้าและ postfix ต่าง ๆ เช่น 'ith' จาก Smith สามารถสร้างชื่อเช่น qith, hith, kith ซึ่งฟังดูสมเหตุสมผลและออกเสียงได้คุณสามารถรับรายชื่อและสับได้ครึ่ง จากนั้นแทนที่ด้วยอีกครึ่งหนึ่งของชื่ออื่น ตัวอย่างเช่น Matt จะเป็น Ma และ Josh จะทำให้ Mash
Matthew Pigram

@ MatthewPigram ที่ยังต้องรวบรวมรายชื่อซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยง ยังเป็นความคิดที่ดีบิตก่อน / หลัง
คดีของกองทุนโมนิก้า

คำตอบ:


14

เครื่องกำเนิดชื่อส่วนใหญ่ทำงานผ่านการเปลี่ยนแปลงของโซ่มาร์คอฟซึ่งค่อนข้างโดดเด่น (สร้างมาร์กอฟใหม่) ที่มีการใช้งานหลายอย่างในเกมเช่นเดียวกับโดเมนอื่น ๆ

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

สิ่งนี้ช่วยให้คุณสามารถรวบรวมรายการที่แตกต่างกันเช่นชื่อชาย, ชื่อหญิง, ชื่อครอบครัวหรือชื่อสำหรับวัฒนธรรม / ภูมิภาค / สายพันธุ์ที่แตกต่างกัน

เวลาที่คุณใช้ tweaking อัลกอริทึมที่สุ่มพยางค์ประกอบเป็นแฟชั่นที่น่าจะเป็นมากกว่าที่คุณใช้จ่ายเพียงแค่สร้างรายชื่อที่คุณคิดว่าดีและเข้ากับธีมทั่วไป

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


นี่และอีกครั้งนี้ มาร์คอฟเชนใช้กฎสำหรับชื่อเนื่องจากสามารถฝึกฝนด้วยตัวอย่าง (ป้อนฐานข้อมูลของชื่อที่คุณต้องการให้เสียงคล้าย) และมีความยืดหยุ่นในการจับคู่ชื่อตัวอย่าง (เชน 2 ตัวอักษร 3 ตัวหรือไม่ 4?)
Babis

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

3

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

หากคุณต้องการชื่อจริง (หรือชื่อจริง) ฉันคิดว่าคุณควรเริ่มสร้างรายชื่อของคุณ (ซึ่งไม่ควรนาน) เพราะการวิเคราะห์ชื่อจริงของบางภาษาการหารูปแบบของพวกเขาและการสร้างอัลกอริทึมในการสร้างชื่อดังกล่าวนั้นไม่คุ้มค่า ความพยายามในความคิดของฉัน

หากคุณต้องการชื่อสุ่มที่อาจเป็นชื่อในบางภาษาคุณสามารถสร้างรายการกฎขนาดเล็กเพื่อติดตาม (เช่นชุดย่อยด้านบน) สิ่งที่คุณกำลังทำอยู่ก็คือคุณได้สร้างกฎเกี่ยวกับสระและพยัญชนะ คุณสามารถเพิ่มได้อีกสองสามชื่อเช่นนามสกุลควรลงท้ายด้วย 10 พยางค์หรือพยัญชนะบางตัวสามารถตามด้วยสระเช่น 'q' ตามด้วย 'u' เท่านั้นและบางคนสามารถตามด้วยพยัญชนะอื่นเช่น 's' ตามด้วย 't 'หรือ' k ' อีกครั้งนี่คือการสร้างคำศัพท์ที่สามารถออกเสียงและรู้สึกเหมือนจริงมากกว่าการสร้างชื่อจริง

สิ่งที่อาจมีความเกี่ยวข้องคือวิธีที่ "Papers, Please" สร้างชื่อ http://papersplease.wikia.com/wiki/List_of_names


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

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

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

0

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


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