GenderAPI.io V2 · Kullanım rehberi

Japonca isimlerden cinsiyet tahmini

GenderAPI.io V2 ile Japonca isimleri sorgulayın. Kısa kanji bileşenlerini, okunuş farklarını, JP bağlamını ve yapay zekâ yedeklemesini öğrenin; unknown sonuçlarını koruyun.

Son inceleme:

V2 API’yi deneyin

İsim sorgulayın

Veri kümesi + yapay zekâ

Bir değer gönderin; tahmin bulunamayan sonuçlar ve kredi kullanımı dahil yanıtın tamamını inceleyin.

Bu araçta Japonya (JP) sabit ülke bağlamıdır. Yalnızca bir ülke örneğidir; bu dildeki her isme uygulanacak varsayılan değildir. Ülke bağlamı uyruk doğrulamaz.

Standart sorgu: yapay zekâ yedeklemesi veya unknown sonuç dahil 1 kredi. Rumuz analizi açıkken veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa unknown dahil toplam 2 kredi.

Gönderdiğiniz isim GenderAPI.io’ya iletilir; yedekleme gerekirse yapılandırılmış yapay zekâ servisine de gönderilebilir. Veri işleme ayrıntıları.

Kayıtlı API anahtarı yok. Kredi kaldığı sürece ortak IP denemesi kullanılabilir.

Aşağıdaki yanıt temsilidir. Canlı sorgu için Sorgula düğmesine basın.

Temsili V2 yanıtı · canlı sonuç değildir
İsim—
CinsiyetBilinmiyor
Güven—
KaynakYapay zekâ modeli
Kullanılan kredi1

Örnekteki sayılar, skorlar ve bakiyeler yanıt biçimini gösterir. Canlı değerler farklı olabilir. Tahmin, doğrulanmış kimlik bilgisi değildir.

Yazım ve okunuş belirsizliğini koruyun

Kaydınızdaki kanji, kana veya Latin harfli yazımı gönderin. V2 Unicode girdi kabul eder; farklı okunuşların ve yazımların eşdeğer veri kümesi anahtarına ulaşacağını garanti etmez. Veri kümesi sorgusu kanjiyi okunuşuna dönüştürmez ve bitişik tam adı ad ile soyada ayırmaz.

Burada gösterilen yaygın Japonca karakterlerde mevcut aday filtresi bir veya iki karakterlik bileşenleri eler. Demodaki 葵 高橋 değerinde boşlukla ayrılan iki bileşen de elenir. Standart fallback, özgün tam değeri yapay zekâya sorabilir. Yalnızca veri kümesi sorgusu ise reason: no_name_candidate ile unknown sonucunu korur.

Boşluğu kaldırmak farklı bir aday oluşturur; güvenilir bir ad-soyad ayrıştırma çözümü değildir. Gerçek girdiyi koruyun ve dönen kaynak ile eşleşmeyi kontrol edin. Olası bir okunuş, adlandırma geleneği veya JP bağlamı kişinin cinsiyet kimliğini doğrulamaz.

Örnek girdiNe gösteriyor?Kontrol edilecek bilgi
葵 高橋Ayrı yazılmış kısa bileşenlerBu karakterlerde iki bileşen de veri kümesi filtresinin asgari uzunluğuna ulaşmaz. Yedekleme özgün değeri yine değerlendirebilir.
高橋葵Bitişik tam ad örneğiTek adaydır; veri kümesi sorgusu soyadının nerede bittiğine karar vermez.
あおいÜç karakterlik kana örneğiUzunluğu aday olmaya uygundur. Bu, eşleşen kayıt bulunduğu veya canlı sorguda cinsiyet döneceği anlamına gelmez.
Aoi TakahashiLatin harfli girdiAyrı bileşenler değerlendirilebilir. Tek bir özgün yazımı belirlemez veya amaçlanan ön adın seçilmesini garanti etmez.

JP ülke bağlamını bilinçli kullanın

Canlı demo country: JP (Japonya) gönderir. API bu ülkeyi ismin yazı sisteminden seçmez. Entegrasyonunuzda bilinen ve ilgili ülke bağlamını kullanın veya country alanını göndermeyin. Bu örnek değeri bütün kayıtların varsayılanı yapmayın.

Veri kümesi sorgusu her aday için varsa ülkeye özel kaydı, yoksa genel kaydı değerlendirir. Ardından mevcut adaylar arasından kayıt toplamı en yüksek olanı seçer. Gerçek eşleşme kapsamını data.match.scope ve data.match.country ile inceleyin. Ülkeye özel kayıtta sayılar eşitse genel kayda otomatik geçilmez; açık olan fallback bunun yerine yapay zekâyı kullanabilir.

data.input.country istekteki ülke bağlamıdır. data.country ve data.country_source ise yanıttaki ülke ilişkisini ve kaynağını açıklar. Bunlar farklı alanlardır; vatandaşlık, etnik köken veya ikamet doğrulamaz.

Uygulamanızdan V2 isim sorgusu gönderin

GENDERAPI_API_KEY ortam değişkenini mevcut anahtarınıza ayarlayıp örneği sunucunuzda çalıştırın. Örnek standart yapay zekâ yedeklemesini açıkça etkinleştirir. Ölçülmüş tahmin başarısı veya veri kapsamı değil, istek biçimi gösterir. Yalnızca veri kümesi için options.ai_mode: off kullanın.

Programlama dilinizi seçin. API anahtarınızı ayarlayın, ardından örneği sunucunuzda çalıştırın.

Yeniden denemeler dahil her tahmin isteği yeni ve ücretlendirilebilir bir işlemdir. Örnekler otomatik yeniden deneme yapmaz. Yeni istekten önce ücretlendirme durumunu kontrol edin.

Çalıştırmadan önce: erişim ve hata yönetimi

Örnekleri sunucunuzda çalıştırın. İşlem ortamındaki GENDERAPI_API_KEY değişkenini mevcut anahtarınıza ayarlayın. Tanınmayan anahtar IP denemesine yönlenebildiğinden meta.access.mode değerinin api_key olduğunu doğrulayın.

HTTP 4xx ve 5xx JSON yanıtlarında hata gövdesi korunur ve program sıfırdan farklı çıkış koduyla sonlanır. Yeniden denemeden önce code, action ve meta.usage.billing_status alanlarını kontrol edin.

Hata ve yeniden deneme rehberi →
cURL
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "name",
  "value": "葵 高橋",
  "country": "JP",
  "options": {
    "ai_mode": "fallback"
  }
}'

POSIX kabuğunda cURL 7.76+. Terminalinizde çalıştırın. Çalıştırma ortamı dokümantasyonu

JavaScript / Node.js
// Server-side Node.js. Save as example.mjs.
const apiKey = process.env.GENDERAPI_API_KEY;
if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");
const body = {
  "type": "name",
  "value": "葵 高橋",
  "country": "JP",
  "options": {
    "ai_mode": "fallback"
  }
};

const response = await fetch("https://api.genderapi.io/api/v2/gender", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(30_000),
  redirect: "error",
});
const raw = await response.text();
if (!(response.headers.get("content-type") ?? "").includes("json")) {
  throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);
}
const result = JSON.parse(raw); // Also accepts application/problem+json.
if (!response.ok) {
  console.error(`HTTP ${response.status}`, result);
  process.exitCode = 1; // A retry is a new operation; inspect billing first.
} else {
  console.log(JSON.stringify(result, null, 2));
  // For batches, inspect every item: HTTP 200 may contain item errors.
}

Node.js 22+; yerleşik fetch. example.mjs olarak kaydedin ve node example.mjs çalıştırın. Çalıştırma ortamı dokümantasyonu

Python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"type\":\"name\",\"value\":\"葵 高橋\",\"country\":\"JP\",\"options\":{\"ai_mode\":\"fallback\"}}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = urllib.request.Request(
    "https://api.genderapi.io/api/v2/gender",
    method="POST",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + api_key,
        "Content-Type": "application/json",
    },
)
opener = urllib.request.build_opener(NoRedirect())
try:
    response = opener.open(request, timeout=30)
except urllib.error.HTTPError as error:
    response = error  # Keep the Problem Details body on non-2xx responses.
with response:
    status = response.status
    raw = response.read().decode("utf-8")
    if "json" not in response.headers.get("Content-Type", ""):
        raise RuntimeError(f"HTTP {status}: expected a JSON response")
    result = json.loads(raw)
print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)
if not 200 <= status < 300:
    sys.exit(1)  # Inspect code, action and billing before retrying.
# For batches, inspect every item even when HTTP status is 200.

Python 3.10+; standart kütüphane. example.py olarak kaydedin ve python3 example.py çalıştırın. Çalıştırma ortamı dokümantasyonu

PHP
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"name","value":"葵 高橋","country":"JP","options":{"ai_mode":"fallback"}}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.

cURL uzantılı PHP 8+. example.php olarak kaydedin ve php example.php çalıştırın. Çalıştırma ortamı dokümantasyonu

Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class GenderApiExample {
    private static String requiredEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name);
        return value;
    }

    public static void main(String[] args) throws Exception {
        String apiKey = requiredEnv("GENDERAPI_API_KEY");
        String body = "{\"type\":\"name\",\"value\":\"葵 高橋\",\"country\":\"JP\",\"options\":{\"ai_mode\":\"fallback\"}}";
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .followRedirects(HttpClient.Redirect.NEVER)
            .build();
        HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender"))
            .timeout(Duration.ofSeconds(30))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
            .build();
        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
        if (!response.headers().firstValue("content-type").orElse("").contains("json")) {
            throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON");
        }
        // JSON text; parse with your application's JSON library when integrating.
        if (response.statusCode() < 200 || response.statusCode() >= 300) {
            System.err.println(response.body()); // Includes Problem Details.
            System.exit(1);
        }
        System.out.println(response.body());
        // For batches, inspect each item's data or error, including on HTTP 200.
    }
}

Java 17+; standart HTTP istemcisi. GenderApiExample.java olarak kaydedin ve java GenderApiExample.java çalıştırın. Çalıştırma ortamı dokümantasyonu

C# / .NET
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

string RequiredEnv(string name) =>
    !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name))
        ? Environment.GetEnvironmentVariable(name)!
        : throw new InvalidOperationException($"Set {name}");

var apiKey = RequiredEnv("GENDERAPI_API_KEY");
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"type\":\"name\",\"value\":\"葵 高橋\",\"country\":\"JP\",\"options\":{\"ai_mode\":\"fallback\"}}", Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
var raw = await response.Content.ReadAsStringAsync();
if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false))
    throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");
using var result = JsonDocument.Parse(raw);
if (!response.IsSuccessStatusCode)
{
    Console.Error.WriteLine(result.RootElement); // Preserve Problem Details.
    Environment.ExitCode = 1;
}
else
{
    Console.WriteLine(result.RootElement);
    // For batches, inspect every item even on HTTP 200.
}

.NET 8+ konsol uygulaması. Konsol projesinde Program.cs olarak kullanın, ardından dotnet run çalıştırın. Çalıştırma ortamı dokümantasyonu

Go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)

func requiredEnv(name string) string {
    value := os.Getenv(name)
    if value == "" { panic("Set " + name) }
    return value
}

func run() error {
    apiKey := requiredEnv("GENDERAPI_API_KEY")
    body := "{\"type\":\"name\",\"value\":\"葵 高橋\",\"country\":\"JP\",\"options\":{\"ai_mode\":\"fallback\"}}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + apiKey)
    request.Header.Set("Content-Type", "application/json")
    client := &http.Client{
        Timeout: 30 * time.Second,
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    raw, err := io.ReadAll(response.Body)
    if err != nil { return err }
    if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) {
        return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode)
    }
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw)
    }
    fmt.Println(string(raw))
    // For batches, inspect every item even on HTTP 200.
    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling.
        os.Exit(1)
    }
}

Go 1.22+; standart kütüphane. main.go olarak kaydedin ve go run main.go çalıştırın. Çalıştırma ortamı dokümantasyonu

Tahmini dayandığı bilgilerle birlikte değerlendirin

API’nin çıkardığı ilişki, kişinin kendi belirttiği cinsiyet değildir. Özgün girdiyi, yanıttaki kanıtları ve kişinin verdiği bilgileri ayrı saklayın. Tahmin bulunamaması geçerli bir sonuçtur; uygulamanızda bunu zorunlu bir cinsiyet kategorisine dönüştürmeyin.

AlanNasıl kullanılmalı?
data.gender / data.result_statusmale veya female değerini yalnızca identified sonucunda kullanın. unknown sonucunda gerçek JSON null değerini koruyun.
data.name / data.matchDönen adı ve seçilen adayı inceleyin. Alt metin eşleşmesi, girdinin o ön ada sahip bir kişiye ait olduğunu kanıtlamaz.
data.confidence / data.confidence_kindGüven skoru 0–1 aralığında veya null olur. observed_frequency kayıtlı sayımlardan, model_reported yapay zekânın bildirdiği skordan gelir. Eşikleri her tür için ayrı değerlendirin.
data.source / data.sample_countdataset, ai ve none kaynaklarını ayırın. Yapay zekâ sonucunda kayıtlı örnek sayısı yoktur. Örnek sayısı, ölçülmüş doğruluk oranı değildir.
meta.access.modeHesap entegrasyonunda api_key değerini doğrulayın. Anahtar eksik veya tanınmıyorsa ortak IP denemesi kullanılabilir.
meta.usagecharged_credits ve billing_status alanlarını okuyun. Başarıyla tamamlanan unknown sonucu ücretlidir. Yanıtın ulaşmaması, işlemin ücretsiz olduğunu göstermez.

Yapay zekânın ne zaman kullanılacağını seçin

forceToGenderize; isim, e-posta ve kullanıcı adı girdilerinde isteğe bağlıdır. Açıkken ai_mode alanını göndermeyin veya fallback kullanın. off ve always ile birlikte kullanılması 422 hatası verir. İsteğe başlamak için pozitif bakiye yeterlidir; son ücret bakiyeyi sıfırın altına düşürebilir.

Rumuz analizinde name: null iken cinsiyet tahmini dönebilir. Sonuç unknown da olabilir. Standart yedekleme veya rumuz analizi, doğru ya da dolu bir sonuç garantisi vermez.

İstek seçeneğiDavranışTamamlanan sorgunun maliyeti
options.ai_mode: offYalnızca veri kümesini sorgular.unknown dahil 1 kredi
options.ai_mode: fallbackÖnce veri kümesini, cinsiyet tahmini bulunamazsa standart yapay zekâyı kullanır. Tekli sorguların varsayılanıdır.Yapay zekâ yedeklemesi dahil toplam 1 kredi
options.ai_mode: alwaysDoğrudan yapay zekâya sorar.2 kredi
forceToGenderize: trueÖnce veri kümesine bakar; tahmin bulunamazsa gerçek ön ad içermeyen kişisel rumuzların anlamını da yapay zekâyla yorumlayabilir.Veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa toplam 2 kredi

İsim listesini bağlamını kaybetmeden işleyin

POST /api/v2/gender/batch ile hesap anahtarında en fazla 50, IP denemesinde 10 öğe gönderin. Öğelere benzersiz id değerleri verin ve her satırın özgün girdisini saklayın. Her öğenin ülke ve yapay zekâ seçenekleri ayrı olabilir. Ülke bilinmiyorsa göndermeyin.

Tekli sorguların fallback varsayılanından farklı olarak toplu öğelerde varsayılan yalnızca veri kümesidir. Yapay zekâ gereken her öğede options.ai_mode: fallback seçin. HTTP 200 olsa bile her sonucu kontrol edin ve unknown değerlerini koruyun. Yeniden gönderimden önce öğe hatasını ve ücretlendirmeyi inceleyin. Başarıyla tamamlanan her standart öğe 1 kredidir; bir toplu HTTP isteği tek tahmin kredisi değildir.

Gönderdiğiniz verinin nasıl işlendiğini bilin

Canlı araç, girdiğiniz değeri yalnızca sorguyu gönderdiğinizde GenderAPI.io’ya iletir. Yapay zekâ devreye girerse gönderilen type, value ve ülke bağlamı yapılandırılmış tahmin servisine iletilir. Entegrasyonunuzda yalnızca veri kümesini kullanmak için forceToGenderize olmadan options.ai_mode: off gönderin.

Yayımlanmış veri işleme koşulları Gizlilik Politikası, Veri İşleme Anlaşması ve alt işleyiciler listesinde açıklanır. Tahmin, girdiden çıkarılan bir ilişkidir; kişinin kendi verdiği bilgiye öncelik tanıyın. Sonucu bir kişi hakkında önemli kararların dayanağı olarak kullanmayın.

Japonca isim sorgulama hakkında sorular

葵 高橋 örneğinde neden yapay zekâ yedeklemesi gerekir?

İki bileşen de mevcut veri kümesi aday filtresi için fazla kısadır. Bu nedenle yalnızca veri kümesi modu reason: no_name_candidate ile unknown döndürür. Fallback özgün tam değeri deneyebilir, ancak yapay zekâdan yanıt garantisi yoktur.

V2 Japonca ismin kesin okunuşunu belirler mi?

Doğrulanmış okunuş belirleme hizmeti sunmaz. Veri kümesi sorgusu kanjiyi kanaya dönüştürmez ve Latin harfli yazımla eşdeğer sonuç garantisi vermez. Girdiyi koruyup dönen kanıtları inceleyin.

Bu isim grubu için bağımsız doğruluk ölçümü yayımlanıyor mu?

Bu sayfada böyle bir ölçüm yayımlanmıyor. Girdinin kabul edilmesi, kayıtlı sayılar ve güven skoru bağımsız doğruluk testi değildir. Mevcut kanıtları ve henüz yayımlanmamış ölçümleri metodoloji sayfasından inceleyin.

Tahmin bulunamazsa kredi kullanılır mı?

Başarıyla tamamlanan unknown sonucu ücretlidir. Standart veri kümesi veya fallback modu toplam 1 kredidir. forceToGenderize açıkken veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa unknown dahil toplam 2 kredi düşülür. Hataların ücretlendirme kuralları ayrıdır; meta.usage alanını inceleyin.

Teste devam edin

GenderAPI anahtarınızı kullanın

Aynı IP adresi için paylaşılan 24 saatlik deneme kredileri bittiğinde teste devam etmek için GenderAPI hesabınızdaki API anahtarını girin. Anahtarı kaydetmek sorgu göndermez; hazır olduğunuzda sorguyu yeniden gönderin.

Yalnızca bu tarayıcı sekmesinde saklanır ve sekme kapatıldığında silinir.