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
更多关于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)
}
// 前面定义的函数...
注意事项
-
API 限制:免费版有每分钟和每日的请求限制,商业版有更高的限制。
-
错误处理:始终检查 API 返回的错误,特别是当处理大量请求时。
-
性能优化:对于大量文本,使用批量检测接口比单独检测每条文本更高效。
-
缓存结果:如果可能,缓存检测结果以避免重复检测相同的文本。
-
置信度阈值:可以根据
Confidence
值设置阈值,只接受高置信度的检测结果。
DetectLanguage 是一个简单而强大的工具,适用于需要自动语言检测的各种应用场景,如内容分类、多语言网站自动切换、数据分析等。