# Dự đoán giới tính từ tên người dùng và biệt danh

> Phân tích tên người dùng và biệt danh với V2: forceToGenderize, AI cho từng mục, kết quả không xác định và chi phí của các yêu cầu gửi lại.

Canonical HTML: https://www.genderapi.io/vi/blog/gender-prediction-from-nicknames-and-usernames

Last reviewed: 2026-09-29

## Thông tin xuất bản

Ngày xuất bản lần đầu: 2025-07-16T09:00:00.000Z

Kiểm tra lần cuối: 2026-09-29T00:00:00.000Z

## Có thể dự đoán giới tính từ tên người dùng không?

Ngay cả khi không có tên thật, GenderAPI vẫn có thể phân tích tín hiệu tên trong tên người dùng, biệt danh và tên hiển thị. Hãy dùng yêu cầu đơn lẻ, yêu cầu hàng loạt của API hoặc quy trình Excel/CSV, và xem kết quả là một ước tính, không phải danh tính đã được xác minh.

## Biệt danh không phải là xác minh danh tính

Với @alice_smith, hệ thống có thể tìm thấy một phần của tên. Với prenses, khi dùng forceToGenderize, kết quả dự đoán có thể được trả về trong khi tên vẫn là null. user47291 có thể vẫn là kết quả không xác định. Đây chỉ là ví dụ đầu vào, không có kết quả giới tính định sẵn.

## Việc dự đoán giới tính từ tên người dùng diễn ra như thế nào?

Hệ thống tìm những phần có thể nhận ra là tên và các tín hiệu ngôn ngữ khác trong tên người dùng hoặc tên hiển thị. AI dự phòng thông thường tìm một tên thật có thể sử dụng; với forceToGenderize, AI có thể diễn giải biệt danh ngay cả khi không có tên thật. Kết quả được trả về cùng các trường ngữ cảnh. Đừng ép kết quả cho đầu vào ngẫu nhiên hoặc thiếu thông tin.

- Tên người dùng: Biệt danh hoặc tên hiển thị
- Phân tích tín hiệu: Tên và ngữ cảnh
- Kết quả dự đoán: Giới tính và độ tin cậy

## Chọn phương thức phù hợp với dữ liệu của bạn

- [Yêu cầu đơn lẻ Phân tích một tên người dùng qua REST API. Xem hướng dẫn API →](https://www.genderapi.io/vi/docs/v2/gender-from-username)
- [Yêu cầu hàng loạt Gửi nhiều mục trong một yêu cầu có cấu trúc. Xem hướng dẫn yêu cầu hàng loạt →](https://www.genderapi.io/vi/docs/v2/batch)
- [Quy trình Excel/CSV Xử lý tệp mà không cần phát triển tích hợp. Mở công cụ →](https://app.genderapi.io/csv)

## Phân tích tên người dùng trong Excel hoặc CSV qua 4 bước

### Mở công cụ Excel/CSV

Mở công cụ tải tệp lên của GenderAPI và tải lên tệp cần xử lý.

### Chọn cột đầu vào

Ánh xạ cột chứa tên người dùng, biệt danh hoặc tên hiển thị.

### Bật phân tích biệt danh

Bật tùy chọn diễn giải tên tài khoản và tên người dùng trên mạng xã hội.

### Kiểm tra mẫu rồi xuất kết quả

Trước tiên, kiểm tra một mẫu bản ghi đại diện, sau đó xử lý toàn bộ tệp và tải xuống kết quả đã làm giàu dữ liệu.

Tài khoản mới nhận 200 tín dụng miễn phí mỗi ngày, nên bạn có thể thử quy trình với một mẫu trước khi xử lý toàn bộ tệp.

Theo lịch, các tệp Excel và CSV tải lên sẽ bị xóa khỏi hệ thống đang hoạt động trong vòng 5 ngày. Sau khi xuất kết quả, bạn cũng có thể yêu cầu xóa sớm hơn. Dữ liệu có thể còn trong các bản sao lưu luân phiên bị hạn chế truy cập thêm tối đa 15 ngày. Xem chi tiết trong [Chính sách quyền riêng tư](https://www.genderapi.io/vi/privacy-policy).

## Dùng như tín hiệu hỗ trợ khi không có tên thật

Khi trường tên bị trống, việc phân tích tên người dùng có thể hữu ích với dữ liệu mạng xã hội, cộng đồng, trò chơi và hồ sơ do người dùng tạo. Nếu có nguồn thông tin trực tiếp và đáng tin cậy hơn như tên thật hoặc địa chỉ email, hãy dùng endpoint riêng cho từng loại.

- [Trích xuất tên ứng viên và tín hiệu giới tính từ địa chỉ email](https://www.genderapi.io/vi/blog/extract-names-from-email-addresses)
- [Xử lý hàng loạt tệp Excel và CSV](https://www.genderapi.io/vi/blog/determining-gender-of-names-in-excel-csv-with-gender-api)

## Không coi kết quả là danh tính đã xác minh

Không phải biệt danh nào cũng chứa tên thật; mối liên hệ văn hóa khác nhau, và cùng một từ có thể mang nghĩa khác trong từng ngôn ngữ. Khi tín hiệu không đủ, hãy chấp nhận kết quả trống thay vì rút ra kết luận chắc chắn từ dữ liệu yếu.

Hãy lưu trường độ tin cậy cùng trường nguồn của V2 và đo hiệu quả trên dữ liệu của bạn. Không dựa vào tín hiệu này để đưa ra quyết định có ảnh hưởng đáng kể đến một người, như tuyển dụng, tín dụng tài chính hoặc y tế.

## Lưu dữ liệu gốc và kết quả dự đoán riêng biệt

Hãy giữ lại mã định danh của bản ghi gốc. API không mở hồ sơ, không xác minh chủ sở hữu tài khoản và không xác minh danh tính của bất kỳ ai. Chỉ gửi ngữ cảnh quốc gia khi bạn có thông tin đáng tin cậy, và đừng suy ra quốc gia từ tên miền hoặc ngôn ngữ của trang web.

Gửi tên người dùng với type: username, không phải URL hồ sơ. Khi tra cứu tập dữ liệu, hệ thống bỏ ký tự @ ở đầu, chuẩn hóa văn bản và tạo ứng viên dựa trên dấu phân cách và chữ số. Với yêu cầu tiêu chuẩn, một số ít kết quả khớp có thể được thêm từ phần đầu và phần cuối, nhưng forceToGenderize không dùng các chuỗi con bổ sung này. Nếu tìm thấy nhiều bản ghi, bản ghi có tổng số lần xuất hiện được lưu lớn nhất sẽ được chọn. Dùng type: email cho địa chỉ email và type: name cho tên thật.

| Ví dụ đầu vào | Trường hoặc tùy chọn | Cách hiểu |
| --- | --- | --- |
| @alice_smith | data.name / data.match | Giữ nguyên tên người dùng gốc và không coi phần khớp là tên đã được xác minh. |
| prenses | forceToGenderize: true | Cho phép diễn giải biệt danh ngay cả khi không có tên thật. Giới tính có thể được trả về trong khi data.name vẫn là null. Đừng tự tạo ra tên cho người dùng này. |
| user47291 | data.result_status: unknown | Đầu vào mơ hồ hoặc thiếu thông tin có thể vẫn là kết quả không xác định. Đây không phải là lý do để tự động gửi lại yêu cầu. |

### Chọn chế độ xử lý và số tín dụng

Mặc định của yêu cầu đơn lẻ là fallback, còn mặc định của các mục trong yêu cầu hàng loạt là off. forceToGenderize là tùy chọn và dùng được với tên, địa chỉ email hoặc tên người dùng. Khi kết hợp, hãy bỏ qua ai_mode hoặc đặt fallback; không thể kết hợp với off hoặc always. Kết quả unknown đã hoàn tất vẫn bị tính tín dụng. Chỉ cần số dư dương là có thể bắt đầu một yêu cầu, và số dư có thể âm sau khi xử lý xong.

| Tùy chọn | Cách xử lý | Tín dụng cho mỗi mục hoàn tất |
| --- | --- | --- |
| options.ai_mode: off | Chỉ dùng tập dữ liệu | 1 tín dụng |
| options.ai_mode: fallback | Kiểm tra tập dữ liệu trước, dùng AI dự phòng thông thường khi chưa xác định được giới tính | Tổng cộng 1 tín dụng, đã gồm AI |
| options.ai_mode: always | Dùng AI trực tiếp | 2 tín dụng |
| forceToGenderize: true | Kiểm tra tập dữ liệu trước, sau đó diễn giải biệt danh ngay cả khi không có tên thật | 1 tín dụng nếu tập dữ liệu xác định được, tổng cộng 2 tín dụng nếu dùng AI |

### Đặt tùy chọn cho từng mục trong yêu cầu hàng loạt

Ví dụ đầu vào không bảo đảm một kết quả dự đoán cụ thể. Đặt GENDERAPI_API_KEY trong môi trường máy chủ và không đưa khóa vào mã phía máy khách công khai. V1 và V2 dùng cùng một khóa API và cùng số dư tài khoản. Kiểm tra khóa bằng /api/v2/usage và xác nhận meta.access.mode là api_key.

Chọn ngôn ngữ lập trình. [Thiết lập khóa API](https://www.genderapi.io/vi/docs/v2/authentication#environment-setup), sau đó chạy ví dụ trên máy chủ của bạn.

Mỗi yêu cầu dự đoán là một thao tác mới bị tính phí, kể cả khi thử lại. Các ví dụ này không tự động thử lại. Kiểm tra trạng thái tính phí trước khi gửi yêu cầu khác.

### Trước khi chạy: quyền truy cập và xử lý lỗi

Chạy các ví dụ này trên máy chủ của bạn. Đặt GENDERAPI_API_KEY trong biến môi trường của tiến trình bằng khóa API hiện có. Xác nhận meta.access.mode là api_key: khóa không được nhận diện có thể chuyển sang dùng thử theo IP.

Với phản hồi JSON HTTP 4xx và 5xx, ví dụ giữ nguyên nội dung lỗi và kết thúc với mã thoát khác 0. Kiểm tra code, action và meta.usage.billing_status trước khi thử lại. Với phản hồi lô HTTP 200, hãy kiểm tra thêm data hoặc error của từng mục.

**cURL**

cURL 7.76+ trong shell POSIX. Chạy trong terminal. [Tài liệu môi trường chạy](https://curl.se/docs/manpage.html)

```bash
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender/batch' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "items": [
    {
      "id": "profile-001",
      "type": "username",
      "value": "@alice_smith",
      "options": {
        "ai_mode": "off"
      }
    },
    {
      "id": "profile-002",
      "type": "username",
      "value": "alexriver",
      "options": {
        "ai_mode": "fallback"
      }
    },
    {
      "id": "profile-003",
      "type": "username",
      "value": "prenses",
      "country": "TR",
      "forceToGenderize": true
    }
  ]
}'
```

**JavaScript / Node.js**

Node.js 22+; fetch tích hợp sẵn. Lưu thành example.mjs và chạy node example.mjs. [Tài liệu môi trường chạy](https://nodejs.org/api/globals.html#fetch)

```javascript
// 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 = {
  "items": [
    {
      "id": "profile-001",
      "type": "username",
      "value": "@alice_smith",
      "options": {
        "ai_mode": "off"
      }
    },
    {
      "id": "profile-002",
      "type": "username",
      "value": "alexriver",
      "options": {
        "ai_mode": "fallback"
      }
    },
    {
      "id": "profile-003",
      "type": "username",
      "value": "prenses",
      "country": "TR",
      "forceToGenderize": true
    }
  ]
};

const response = await fetch("https://api.genderapi.io/api/v2/gender/batch", {
  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.
}
```

**Python**

Python 3.10+; thư viện chuẩn. Lưu thành example.py và chạy python3 example.py. [Tài liệu môi trường chạy](https://docs.python.org/3/library/urllib.request.html)

```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("{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}")

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/batch",
    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.
```

**PHP**

PHP 8+ với tiện ích mở rộng cURL. Lưu thành example.php và chạy php example.php. [Tài liệu môi trường chạy](https://www.php.net/manual/en/book.curl.php)

```php
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"items":[{"id":"profile-001","type":"username","value":"@alice_smith","options":{"ai_mode":"off"}},{"id":"profile-002","type":"username","value":"alexriver","options":{"ai_mode":"fallback"}},{"id":"profile-003","type":"username","value":"prenses","country":"TR","forceToGenderize":true}]}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender/batch');
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.
```

**Java**

Java 17+; HTTP client chuẩn. Lưu thành GenderApiExample.java và chạy java GenderApiExample.java. [Tài liệu môi trường chạy](https://docs.oracle.com/en/java/javase/17/docs/api/java.net.http/java/net/http/HttpClient.html)

```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 = "{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}";
        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/batch"))
            .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.
    }
}
```

**C# / .NET**

Ứng dụng console .NET 8+. Dùng làm Program.cs trong một dự án console, sau đó chạy dotnet run. [Tài liệu môi trường chạy](https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient)

```csharp
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/batch");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}", 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.
}
```

**Go**

Go 1.22+; thư viện chuẩn. Lưu thành main.go và chạy go run main.go. [Tài liệu môi trường chạy](https://pkg.go.dev/net/http)

```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 := "{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender/batch", 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)
    }
}
```

- [Hướng dẫn về lỗi và thử lại →](https://www.genderapi.io/vi/docs/v2/errors-and-retries)

### Xử lý kết quả của danh sách và việc gửi lại

POST /api/v2/gender/batch nhận tối đa 50 mục với khóa API và tối đa 10 mục với dùng thử theo IP. Chỉ định type, value và options cho từng mục. Nếu cần AI dự phòng thông thường, hãy đặt rõ fallback cho từng mục. id phải là duy nhất trong lô, và index bắt đầu từ 0 trong lô đã gửi. Hãy lưu riêng mã công việc và mã dòng gốc của bạn.

HTTP 200 không có nghĩa là mọi mục đều đã hoàn tất. Hãy xử lý riêng từng kết quả identified, unknown và error. meta.summary.succeeded bao gồm cả identified và unknown. Kiểm tra đồng thời data.gender, source, confidence_kind, confidence, match và reason, và đừng coi điểm của AI với tần suất xuất hiện trong tập dữ liệu là cùng một thứ.

Nếu meta.usage.billing_status là confirmed, chỉ gửi lại các mục lỗi được phép thử lại. Nếu là unconfirmed hoặc không nhận được phản hồi, hãy dừng lại và kiểm tra việc tính phí. Gửi lại cùng một mục, kể cả kết quả unknown đã hoàn tất, sẽ bị tính phí như một thao tác mới. Đừng gửi lại toàn bộ danh sách khi chưa kiểm tra.

[Quy tắc yêu cầu hàng loạt](https://www.genderapi.io/vi/docs/v2/batch) · [Trường phản hồi](https://www.genderapi.io/vi/docs/v2/responses) · [Tùy chọn AI](https://www.genderapi.io/vi/docs/v2/ai-options) · [Đánh giá độ chính xác và độ tin cậy](https://www.genderapi.io/vi/accuracy-methodology) · [Chính sách quyền riêng tư](https://www.genderapi.io/vi/privacy-policy)

Phần bổ trợ Excel, tiện ích bổ sung Google Sheets và các tích hợp dựng sẵn khác có thể dùng cách kết nối và định dạng kết quả riêng. Đừng giả định đầu ra của chúng theo cấu trúc JSON V2 này; hãy xem hướng dẫn hiện hành của từng tích hợp.

## Giới tính từ tên người dùng và biệt danh

### Có thể dự đoán giới tính từ tên người dùng không?

Khi bật forceToGenderize trong V2, hệ thống tra cứu tập dữ liệu trước. Nếu chưa xác định được giới tính, AI có thể diễn giải biệt danh ngay cả khi không có tên thật. Kết quả vẫn có thể là unknown và không phải danh tính đã được xác minh. AI dự phòng thông thường cần có một tên thật có thể sử dụng.

### Tên người dùng nào dễ cho kết quả hữu ích hơn?

Giá trị chứa tên thật, biệt danh phổ biến hoặc thành phần có thể nhận ra rõ là tên thường cho tín hiệu hữu ích hơn. Chuỗi ngẫu nhiên và tên thương hiệu có thể không cho kết quả.

### Có thể phân tích một tên người dùng qua API không?

Có. Endpoint yêu cầu đơn lẻ phân tích một giá trị, và có một endpoint riêng cho yêu cầu hàng loạt với nhiều mục.

### Có thể tải tệp Excel hoặc CSV lên không?

Có. Trong công cụ tệp, hãy chọn cột chứa tên người dùng hoặc tên hiển thị và bật phân tích biệt danh.

### Vì sao nên lưu trường độ tin cậy cùng trường nguồn của V2?

data.confidence của V2 là giá trị từ 0 đến 1. Điểm của AI và tần suất xuất hiện trong tập dữ liệu đo những thứ khác nhau, vì vậy hãy đọc giá trị này cùng source và confidence_kind. Hãy giữ lại cả kết quả unknown và reason.

### Có thể dùng kết quả để phân khúc khách hàng không?

Kết quả có thể là tín hiệu hỗ trợ cho phân tích ở cấp tổng hợp hoặc cho việc làm giàu dữ liệu, nhưng đừng chỉ dựa vào nó để đưa ra quyết định có ảnh hưởng đáng kể đến một người hoặc để xác định danh tính của ai đó.

### Có thể dùng thử miễn phí không?

Tài khoản GenderAPI mới nhận 200 tín dụng miễn phí mỗi ngày để kiểm tra một mẫu đại diện qua API hoặc qua tệp.
