golang多语言检测与批量识别API插件库detectlanguage的使用

Golang多语言检测与批量识别API插件库detectlanguage的使用

Detect Language API Go客户端用于检测给定文本的语言,返回检测到的语言代码和置信度分数。

安装

go get -u github.com/detectlanguage/detectlanguage-go

配置

使用前需要设置您的个人API密钥,可以在官网注册获取。

client := detectlanguage.New("YOUR API KEY")

使用示例

语言检测

// 检测单个文本的语言
detections, err := client.Detect("Buenos dias señor")

if err != nil {
    fmt.Fprintln(os.Stderr, "error detecting language:", err)
    os.Exit(1)
    return
}

fmt.Fprintln(os.Stdout, "Language:", detections[0].Language)     // 检测到的语言代码
fmt.Fprintln(os.Stdout, "Reliable:", detections[0].Reliable)     // 是否可靠
fmt.Fprintln(os.Stdout, "Confidence:", detections[0].Confidence) // 置信度分数

单语言代码检测

// 只获取语言代码
language, err := client.DetectCode("Buenos dias señor")

if err != nil {
    fmt.Fprintln(os.Stderr, "error detecting language:", err)
    os.Exit(1)
    return
}

fmt.Fprintln(os.Stdout, "Language:", language)

批量检测

// 批量检测多个文本
texts := []string{"labas rytas", "good morning"}
results, err := client.DetectBatch(texts)

if err != nil {
    fmt.Fprintln(os.Stderr, "error detecting language:", err)
    os.Exit(1)
    return
}

fmt.Fprintln(os.Stdout, "First text language:", detections[0][0].Language)
fmt.Fprintln(os.Stdout, "Second text language:", detections[1][0].Language)

获取账户状态

// 查询账户使用情况
result, err := client.UserStatus()

if err != nil {
    fmt.Fprintln(os.Stderr, "error getting user status:", err)
    os.Exit(1)
    return
}

fmt.Fprintln(os.Stdout, "Status:", result.Status)
fmt.Fprintln(os.Stdout, "Requests sent today:", result.Requests)
fmt.Fprintln(os.Stdout, "Bytes sent today:", result.Bytes)
fmt.Fprintln(os.Stdout, "Plan:", result.Plan)
fmt.Fprintln(os.Stdout, "Plan expires:", result.PlanExpires)
fmt.Fprintln(os.Stdout, "Daily requests limit:", result.DailyRequestsLimit)
fmt.Fprintln(os.Stdout, "Daily bytes limit:", result.DailyBytesLimit)
fmt.Fprintln(os.Stdout, "Date:", result.Date)

获取支持的语言列表

// 查询支持的所有语言
languages, err := client.Languages()

if err != nil {
    fmt.Fprintln(os.Stderr, "error getting languages list:", err)
    os.Exit(1)
    return
}

fmt.Fprintln(os.Stdout, "Supported languages:", len(languages))
fmt.Fprintln(os.Stdout, "First language code:", languages[0].Code)
fmt.Fprintln(os.Stdout, "First language name:", languages[0].Name)

完整示例Demo

package main

import (
	"fmt"
	"os"
	
	"github.com/detectlanguage/detectlanguage-go"
)

func main() {
	// 初始化客户端
	client := detectlanguage.New("YOUR_API_KEY_HERE")
	
	// 单文本检测
	detectSingleText(client, "Hello world")
	
	// 批量检测
	detectBatchTexts(client, []string{"Bonjour", "Hola", "你好"})
	
	// 获取账户状态
	getUserStatus(client)
	
	// 获取支持的语言列表
	getSupportedLanguages(client)
}

func detectSingleText(client *detectlanguage.Client, text string) {
	detections, err := client.Detect(text)
	if err != nil {
		fmt.Printf("Error detecting language: %v\n", err)
		return
	}
	
	fmt.Printf("Text: %s\n", text)
	fmt.Printf("Detected language: %s (Reliable: %v, Confidence: %.2f)\n",
		detections[0].Language, detections[0].Reliable, detections[0].Confidence)
}

func detectBatchTexts(client *detectlanguage.Client, texts []string) {
	results, err := client.DetectBatch(texts)
	if err != nil {
		fmt.Printf("Error detecting batch languages: %v\n", err)
		return
	}
	
	for i, detections := range results {
		fmt.Printf("Text %d: %s\n", i+1, texts[i])
		fmt.Printf("  Language: %s\n", detections[0].Language)
	}
}

func getUserStatus(client *detectlanguage.Client) {
	status, err := client.UserStatus()
	if err != nil {
		fmt.Printf("Error getting user status: %v\n", err)
		return
	}
	
	fmt.Println("\nUser Status:")
	fmt.Printf("Plan: %s (Expires: %s)\n", status.Plan, status.PlanExpires)
	fmt.Printf("Today: %d requests, %d bytes\n", status.Requests, status.Bytes)
	fmt.Printf("Limits: %d requests/day, %d bytes/day\n", 
		status.DailyRequestsLimit, status.DailyBytesLimit)
}

func getSupportedLanguages(client *detectlanguage.Client) {
	languages, err := client.Languages()
	if err != nil {
		fmt.Printf("Error getting supported languages: %v\n", err)
		return
	}
	
	fmt.Println("\nSupported Languages:")
	for i, lang := range languages {
		if i >= 5 { // 只显示前5种语言
			break
		}
		fmt.Printf("%s: %s\n", lang.Code, lang.Name)
	}
	fmt.Printf("... and %d more languages\n", len(languages)-5)
}

许可证

Detect Language API Go客户端是免费软件,可以根据MIT许可证文件中的条款重新分发。


更多关于golang多语言检测与批量识别API插件库detectlanguage的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang多语言检测与批量识别API插件库detectlanguage的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang 多语言检测与批量识别 - DetectLanguage 库使用指南

DetectLanguage 是一个强大的语言检测 API 服务,它提供了简单易用的接口来识别文本的语言。下面是关于如何在 Go 中使用 DetectLanguage 进行语言检测的详细指南。

安装 DetectLanguage Go 客户端

首先,你需要在项目中安装 DetectLanguage 的 Go 客户端库:

go get github.com/detectlanguage/detectlanguage-go

基本使用

1. 初始化客户端

在使用之前,你需要获取 API 密钥并在代码中初始化客户端:

package main

import (
	"fmt"
	"log"

	"github.com/detectlanguage/detectlanguage-go"
)

func main() {
	// 使用你的 API 密钥初始化客户端
	client := detectlanguage.New("YOUR_API_KEY")
	
	// 或者设置环境变量 DETECTLANGUAGE_API_KEY
	// client := detectlanguage.NewFromEnv()
}

2. 单条文本检测

检测单条文本的语言:

func detectSingleText(client *detectlanguage.Client, text string) {
	// 检测文本语言
	detections, err := client.Detect(text)
	if err != nil {
		log.Fatal(err)
	}

	// 打印检测结果
	if len(detections) > 0 {
		detection := detections[0]
		fmt.Printf("Text: %s\n", text)
		fmt.Printf("Detected language: %s (confidence: %.2f)\n", 
			detection.Language, detection.Confidence)
		fmt.Printf("Is reliable: %v\n", detection.IsReliable)
	} else {
		fmt.Println("No language detected")
	}
}

3. 批量文本检测

DetectLanguage 支持批量检测,这比单独检测每条文本更高效:

func batchDetect(client *detectlanguage.Client, texts []string) {
	// 批量检测
	results, err := client.BatchDetect(texts)
	if err != nil {
		log.Fatal(err)
	}

	// 打印批量检测结果
	for i, detections := range results {
		if len(detections) > 0 {
			detection := detections[0]
			fmt.Printf("Text %d: %s\n", i+1, texts[i])
			fmt.Printf("  Language: %s (confidence: %.2f)\n", 
				detection.Language, detection.Confidence)
		} else {
			fmt.Printf("Text %d: No language detected\n", i+1)
		}
	}
}

高级功能

1. 获取支持的语言列表

func listSupportedLanguages(client *detectlanguage.Client) {
	languages, err := client.Languages()
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("Supported languages:")
	for _, lang := range languages {
		fmt.Printf("%s: %s\n", lang.Code, lang.Name)
	}
}

2. 设置请求超时

func initClientWithTimeout() *detectlanguage.Client {
	client := detectlanguage.New("YOUR_API_KEY")
	client.HTTPClient.Timeout = 10 * time.Second // 设置10秒超时
	return client
}

3. 使用上下文(Context)

func detectWithContext(client *detectlanguage.Client, text string) {
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()

	detections, err := client.DetectWithContext(ctx, text)
	if err != nil {
		log.Fatal(err)
	}

	// 处理检测结果...
}

完整示例

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/detectlanguage/detectlanguage-go"
)

func main() {
	// 初始化客户端
	client := detectlanguage.New("YOUR_API_KEY")
	
	// 单条文本检测
	fmt.Println("=== Single Text Detection ===")
	detectSingleText(client, "Hello, world!")
	detectSingleText(client, "你好,世界!")
	detectSingleText(client, "Bonjour le monde")
	
	// 批量检测
	fmt.Println("\n=== Batch Detection ===")
	texts := []string{
		"This is an English text",
		"Este es un texto en español",
		"これは日本語のテキストです",
	}
	batchDetect(client, texts)
	
	// 获取支持的语言
	fmt.Println("\n=== Supported Languages ===")
	listSupportedLanguages(client)
}

// 前面定义的函数...

注意事项

  1. API 限制:免费版有每分钟和每日的请求限制,商业版有更高的限制。

  2. 错误处理:始终检查 API 返回的错误,特别是当处理大量请求时。

  3. 性能优化:对于大量文本,使用批量检测接口比单独检测每条文本更高效。

  4. 缓存结果:如果可能,缓存检测结果以避免重复检测相同的文本。

  5. 置信度阈值:可以根据 Confidence 值设置阈值,只接受高置信度的检测结果。

DetectLanguage 是一个简单而强大的工具,适用于需要自动语言检测的各种应用场景,如内容分类、多语言网站自动切换、数据分析等。

回到顶部