افصل اسمًا كاملًا إلى اسم أول واسم عائلة
حقل اسم مدمَج واحد، ونداء API واحد، وحقلان نظيفان — الأدوات والألقاب والترتيب المعكوس التي تكسر قسمة مكتوبة يدويًا معالَجة سلفًا، والجنس في الاستجابة نفسها
الجواب المختصر
- أرسل الحقل المدمَج، واستعد first_name و last_name — مع الجنس والدقة وعدد العيّنات، في الاستجابة نفسها، مقابل credit واحد
- الأدوات («van der» و «von den» و «de la») والألقاب الأكاديمية والوظيفية تُعالَج بدل أن تكون عقبة — و«Rossi, Andrea» المعكوسة تُحلّ أيضًا، من بيانات الأسماء لا من الفاصلة
- حيث يمكن أن يكون كلا النصفين أيًّا منهما، يأتي القرار من تكرار ظهور كل جزء كاسم أول في مقابل تكرار ظهوره كاسم عائلة — لا من موضعه في السلسلة النصية
- يُرجع strict mode اسم عائلة فارغًا بدل تخمين حين لا يكون اسم العائلة في قاعدة البيانات، فترى الفجوة
لماذا لا تنجح القسمة عند المسافة
تكاد كل قاعدة كود أن تحتوي نسخة من هذا: خذ حقل الاسم، اقسمه عند المسافات، أول عنصر هو الاسم الأول وآخر عنصر هو اسم العائلة. يمرّ في المراجعة لأن بيانات الاختبار إنجليزية، ثم يزلّ بصمت عند أول عميل ليس كذلك
ما يجعله مكلفًا هو طريقة إخفاقه. لا شيء يرفع استثناءً. يبقى لديك قاعدة بيانات مليئة بأشخاص اسم عائلتهم «van»، ودمج بريدي يخاطبهم به، ولا سطر سجل واحد يشير إلى السبب
ما يحدد القسمة
أربعة أمور، بهذا الترتيب — وآخرها هو ما لا تستطيع قسمة قائمة على القواعد أن تملكه، لأنه يقتضي معرفة كيف تتوزع الأسماء فعلًا
- الألقاب تُنزَع أولًا. «Prof. Dr.» و«Dipl.-Ing.» و«Managing Director» وبقية قائمة مُصانة تُحذف قبل أن يُقرَّر أي شيء آخر، حتى لا تنتهي أبدًا في حقل اسم
- الأدوات تبقى مع اسم العائلة. «van» و«van der» و«van den» و«von» و«von der» و«de» و«de la» و«du» و«le» و«di» و«des» وما شابهها تُميَّز كجزء من اسم العائلة الذي تنتمي إليه
- لا يُوكَل الترتيب إلى علامات الترقيم. تُحذف الفاصلة في «Rossi, Andrea» مع الألقاب، ثم يُقرأ الترتيب من بيانات الأسماء — الفاصلة عادة تنسيقية، وقوائم كثيرة تستخدمها بغير اتساق. في رفع CSV و Excel يمكنك بدلًا من ذلك تحديد ترتيب العمود، ويُستخدم الترتيب المحدَّد كما حُدِّد
- البيانات هي التي تحسم الالتباس. يُبحث كل جزء مرشَّح في قاعدة الأسماء الأولى وقاعدة أسماء العائلة كلتيهما، والجزء الذي يتصرف كاسم عائلة أكثر بكثير مما يتصرف كاسم أول هو اسم العائلة
مرّر رمز بلد وتحدث المقارنة نفسها في مقابل ذلك البلد لا في مقابل كل البلدان مرة واحدة — وهو ما تريده حين تعرف سلفًا من أين جاءت القائمة
كيف تناديه
تقوم بذلك نقطتا نهاية، وأيّهما تريد يتوقف على حاجتك إلى strict mode
v2 — الـ API الحالي
POST https://gender-api.com/v2/gender/by-full-name
{ "full_name": "Anna van der Berg", "country": "NL" }
{
"result_found": true,
"first_name": "Anna",
"last_name": "van der Berg",
"gender": "female",
"probability": 0.98,
"details": { "credits_used": 1, "samples": 8961, "duration": "33ms" }
}
v1 — عند الحاجة إلى strict mode
لا يوجد strict mode إلا على نقطة نهاية القسمة v1. إن كان اسم العائلة الفارغ يعنيك أكثر من أن تكون على الـ API الأحدث، فخذ هذه
GET https://gender-api.com/get?split=Anna%20van%20der%20Berg&strict=true&key=…
- مرجع v2 للاسم الكامل — الحقول والأخطاء ووصف OpenAPI
- مرجع v1 للقسمة — معامل strict واستجاباته الدقيقة
- عملاء رسميون لـ PHP وPython وNode وJava وGo وRuby وRust وPerl و.NET.
أولًا: هل يحتوي ذلك العمود أسماء كاملة أصلًا؟
يستحق المعرفة قبل معالجة ملف لم تصنعه بنفسك. أرسل عيّنة تصل إلى 100 قيمة وتستعيد ما إن كانت تبدو أسماء كاملة — ولا تكلّف أي credits
POST https://gender-api.com/v2/name-format-detect
{ "names": ["Sophie Jones", "Lorenzo Carlos", "Anna van der Berg"] }
{
"is_fullname": true,
"fullname_probability": 1,
"validHints": [ … ]
}
ليكن واضحًا ما يقيسه هذا: fullname_probability هو نسبة القيم التي أرسلتها والمكوَّنة من أكثر من كلمة، و is_fullname هو تجاوز تلك النسبة 0.6. إنه حكم على العمود، لا على كل اسم على حدة — وهو بالضبط ما تحتاجه عند تقرير ما إن كنت ستقسم أصلًا، وليس بديلًا عن القسمة نفسها
العمود المختلط جواب صحيح أيضًا: بعض القوائم تحتوي «Thomas» و«John Smith» جنبًا إلى جنب، والقسمة تتعامل مع الاثنين دون أن تفرزهما مسبقًا
حيث لا يزال يحتاج مساعدتك
قسمة تدّعي أنها تتعامل مع كل اسم في العالم ستكون كاذبة. هذه هي الحالات التي لا تحلّ فيها أي قاعدة السلسلة النصية بمفردها
إن كان النموذج بيدك، فأرخص حل ليس API على الإطلاق: حقلان بدل حقل واحد، أو إشارة إلى أن الصيغة «اسم أول، اسم عائلة». وكل ما أدناه لحين لا يكون النموذج بيدك
- اسم العائلة أولًا. بوجود فاصلة أو بغيرها، تنتصر القراءة التي تدعمها بيانات الأسماء على قاعدة تتعلق بالموضع — وهي تصيب أكثر بكثير مما تخطئ، لكنها ليست ضمانة. إن كنت تعرف أن العمود كله باسم العائلة أولًا، فحدّد ذلك في الرفع بدل الاعتماد على علامات الترقيم
- الأسماء من كلمة واحدة. الاسم المفرد لا اسم عائلة فيه ليُوجد. يُرجَع اسم العائلة فارغًا بدل أن يُقطع الاسم الأول نصفين
- نقل حرفي غير متسق. الاسم الواحد المكتوب بثلاث صور في قائمة واحدة يُحلّ كثلاثة أسماء، لأنه في البيانات كذلك بالضبط
- الأسماء المركّبة دون شرطة. يبقى «Anna Maria» مجتمعًا حيث تدعم البيانات ذلك، لكن قائمة تخلط «Anna Maria Rossi» و«Anna Rossi» لن تكون متسقة
في الحالات الأربع كلها يضيّق رمز البلد المشكلة، ويجعل strict mode الصفوف غير المؤكدة ظاهرة بدل أن تكون معقولة بهدوء. الحقل الفارغ الذي يمكنك تصفيته أفضل من الحقل الخطأ الذي لا تلحظه
عمود كامل في مرة واحدة
إن كانت الأسماء في جدول بيانات لا في تطبيق، فلا تحتاج الـ API. ارفع الملف، وأشِر إلى العمود الذي يحمل الأسماء المدمجة، وتعود الأجزاء المقسومة كأعمدة جديدة إلى جانب بياناتك — حتى 10,000,000 صف لكل CSV أو 100,000 لكل مصنَّف Excel، ويعود مصنَّفك سليمًا كما كان
- ارفع ملف CSV أو Excel — دون كود، مع الحفاظ على التنسيق الأصلي
- استعلام الجنس بالجملة — الحدود، والسعر عند الحجم الكبير، وأجوبة قسم المشتريات
- تعمل في جدول بيانات أو في CRM؟ هناك تكاملات جاهزة لـ Excel و Google Sheets و Shopify و HubSpot و Salesforce و Zapier وغيرها
أسئلة متكررة
لماذا لا نقسم عند المسافة وحسب؟
لأن المسافة ليست الحد الفاصل. «Anna van der Berg» تعطي عند المسافة الأولى اسم عائلة «van»، وعند الأخيرة اسمًا أول «Anna van der». كلاهما خطأ، وكلاهما يبدو سليمًا في اختبار بأسماء إنجليزية، وكلاهما يخفق بصمت لحظة وصول اسم عائلة هولندي أو ألماني أو فرنسي أو إسباني أو برتغالي
ما الذي يحدد موضع القسمة؟
تُحذف الألقاب المعروفة أولًا، وتبقى الأدوات مثل «van der» و «von den» و «de la» مع اسم العائلة. بعد ذلك يُوازن بين تكرار ظهور كل جزء كاسم أول وتكرار ظهوره كاسم عائلة — فليس موضع الكلمة هو ما يحدد ذلك، ولا علامات الترقيم: تُحذف الفاصلة مع الألقاب بدل أن تُقرأ كعلامة على «اسم العائلة أولًا». في رفع CSV و Excel يمكنك تحديد ترتيب العمود صراحة، وحينها يُستخدم كما حددته
ماذا يحدث حين لا يكون اسم العائلة في قاعدة البيانات؟
لهذا وُجد strict mode، على نقطة نهاية v1. مع تشغيل strict mode يُرجَع اسم العائلة فارغًا بدل أن يُخمَّن، فتظهر الفجوة في بياناتك. ومع إيقافه يُستخرج اسم عائلة على أفضل وجه ممكن على أي حال
هل يعطيني الجنس أيضًا؟
نعم، في الاستجابة نفسها ومقابل الـ credit الواحد نفسه — مع عدد العيّنات والدقة التي خلفه. قسمة الاسم وتحديد جنسه نداء واحد، لا نداءان
كيف أعرف إن كان عمودي يحتوي أسماء كاملة أصلًا؟
أرسل عيّنة تصل إلى 100 قيمة إلى نقطة النهاية name-format-detect. لا تكلّف أي credits وتجيب إن كان العمود يبدو أسماء كاملة أو أسماء أولى أو خليطًا — مفيد قبل أن تقرر كيف تعالج الملف
كم تكلّف القسمة؟
credit واحد لكل اسم، مثل استعلام الجنس العادي، من €0.35 لكل 1000. تُشترى الـ credits مسبقًا ولا تنتهي صلاحيتها
هل يتعامل مع الأسماء غير الغربية؟
جزئيًا، ومن الأفضل معرفة الحدود. الأسماء المكتوبة باسم العائلة أولًا دون فاصل، والأسماء من كلمة واحدة، والأسماء المنقولة حرفيًا بغير اتساق هي الحالات الصعبة — ولا توجد قاعدة تحلّها من السلسلة النصية وحدها. إرسال رمز بلد يساعد، لأن الاستعلام يوازن الأجزاء حينئذٍ في مقابل ذلك البلد لا في مقابل كل شيء
جرّبه على الأسماء التي تكسر قسمتك
100 استعلام مجاني في الشهر، دون بطاقة ائتمان. خذ الصفوف العشرين التي يخطئ فيها كودك الحالي وابدأ بها
توثيق الواجهة البرمجية · قم برفع ملف بدلاً من ذلك · اطرح سؤالًا