使用机器学习套件识别文本语言 (iOS)
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
您可以使用机器学习套件识别文本字符串使用的语言。您可以获取字符串最可能使用的语言,也可以获取字符串可能使用的所有语言的置信度分数。
机器学习套件可在输入的文稿中识别出 103 种不同语言的文本。此外,还可以识别用拉丁字母拼写的阿拉伯文、保加利亚文、中文、希腊文、印地文、日文和俄文。
准备工作
- 如果您尚未将 Firebase 添加到自己的应用中,请按照入门指南中的步骤执行此操作。
- 在 Podfile 中添加机器学习套件库:
pod 'Firebase/MLNaturalLanguage', '6.25.0'
pod 'Firebase/MLNLLanguageID', '6.25.0'
安装或更新项目的 Pod 之后,请务必使用 Xcode 项目的 .xcworkspace
来打开项目。
- 在您的应用中导入 Firebase:
Objective-C
@import Firebase;
识别字符串使用的语言
要识别字符串使用的语言,请获取 LanguageIdentification
的一个实例,然后将字符串传递给 identifyLanguage(for:)
方法。
例如:
Swift
let languageId = NaturalLanguage.naturalLanguage().languageIdentification()
languageId.identifyLanguage(for: text) { (languageCode, error) in
if let error = error {
print("Failed with error: \(error)")
return
}
if let languageCode = languageCode, languageCode != "und" {
print("Identified Language: \(languageCode)")
} else {
print("No language was identified")
}
}
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];
[languageId identifyLanguageForText:text
completion:^(NSString * _Nullable languageCode,
NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Failed with error: %@", error.localizedDescription);
return;
}
if (languageCode != nil
&& ![languageCode isEqualToString:@"und"] ) {
NSLog(@"Identified Language: %@", languageCode);
} else {
NSLog(@"No language was identified");
}
}];
如果调用成功,则系统会向完成处理程序传递一个 BCP-47 语言代码,表示文本的语言。请参阅所支持语言的完整列表。如果无法确保检测到语言,则传递代码 und
(未确定)。
默认情况下,机器学习套件仅在识别到置信度值至少为 0.5 的语言时才会返回非 und
值。您可以通过传递 LanguageIdentificationOptions
对象给 languageIdentification(options:)
来更改此阈值:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
获取字符串可能使用的语言
要获取字符串最可能使用的语言的置信度值,请获取 LanguageIdentification
的一个实例,然后将字符串传递给 identifyPossibleLanguages(for:)
方法。
例如:
Swift
let languageId = NaturalLanguage.naturalLanguage().languageIdentification()
languageId.identifyPossibleLanguages(for: text) { (identifiedLanguages, error) in
if let error = error {
print("Failed with error: \(error)")
return
}
guard let identifiedLanguages = identifiedLanguages,
!identifiedLanguages.isEmpty,
identifiedLanguages[0].languageCode != "und"
else {
print("No language was identified")
return
}
print("Identified Languages:\n" +
identifiedLanguages.map {
String(format: "(%@, %.2f)", $0.languageCode, $0.confidence)
}.joined(separator: "\n"))
}
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];
[languageId identifyPossibleLanguagesForText:text
completion:^(NSArray<FIRIdentifiedLanguage *> * _Nonnull identifiedLanguages,
NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Failed with error: %@", error.localizedDescription);
return;
}
if (identifiedLanguages.count == 1
&& [identifiedLanguages[0].languageCode isEqualToString:@"und"] ) {
NSLog(@"No language was identified");
return;
}
NSMutableString *outputText = [NSMutableString stringWithFormat:@"Identified Languages:"];
for (FIRIdentifiedLanguage *language in identifiedLanguages) {
[outputText appendFormat:@"\n(%@, %.2f)", language.languageCode, language.confidence];
}
NSLog(outputText);
}];
如果调用成功,IdentifiedLanguage
对象的列表会被传递给接续处理程序。您可以从每个对象获取语言的 BCP-47 代码以及字符串使用该语言的置信度。请参阅所支持语言的完整列表。请注意,这些值表示整个字符串使用给定语言的置信度;如果一个字符串中使用了多种语言,那么机器学习套件将无法识别。
默认情况下,机器学习套件仅返回置信度值至少为 0.01 的语言。您可以通过传递 LanguageIdentificationOptions
对象给 languageIdentification(options:)
来更改此阈值:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
如果没有语言满足此阈值,则此列表将只包含一个值为 und
的项。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-16。
[null,null,["最后更新时间 (UTC):2025-08-16。"],[],[],null,["You can use ML Kit to identify the language of a string of text. You can\nget the string's most likely language or get confidence scores for all of the\nstring's possible languages.\n\nML Kit recognizes text in 103 different languages in their native scripts.\nIn addition, romanized text can be recognized for Arabic, Bulgarian, Chinese,\nGreek, Hindi, Japanese, and Russian.\n\n\u003cbr /\u003e\n\nBefore you begin\n\n1. If you have not already added Firebase to your app, do so by following the steps in the [getting started guide](/docs/ios/setup).\n2. Include the ML Kit libraries in your Podfile: \n\n ```\n pod 'Firebase/MLNaturalLanguage', '6.25.0'\n pod 'Firebase/MLNLLanguageID', '6.25.0'\n ```\n After you install or update your project's Pods, be sure to open your Xcode project using its `.xcworkspace`.\n3. In your app, import Firebase: \n\n Swift \n\n ```swift\n import Firebase\n ```\n\n Objective-C \n\n ```objective-c\n @import Firebase;\n ```\n\nIdentify the language of a string\n\nTo identify the language of a string, get an instance of\n`LanguageIdentification`, and then pass the string to the\n`identifyLanguage(for:)` method.\n\nFor example: \n\nSwift \n\n let languageId = NaturalLanguage.naturalLanguage().languageIdentification()\n\n languageId.identifyLanguage(for: text) { (languageCode, error) in\n if let error = error {\n print(\"Failed with error: \\(error)\")\n return\n }\n if let languageCode = languageCode, languageCode != \"und\" {\n print(\"Identified Language: \\(languageCode)\")\n } else {\n print(\"No language was identified\")\n }\n }\n\nObjective-C \n\n FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];\n FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];\n\n [languageId identifyLanguageForText:text\n completion:^(NSString * _Nullable languageCode,\n NSError * _Nullable error) {\n if (error != nil) {\n NSLog(@\"Failed with error: %@\", error.localizedDescription);\n return;\n }\n if (languageCode != nil\n && ![languageCode isEqualToString:@\"und\"] ) {\n NSLog(@\"Identified Language: %@\", languageCode);\n } else {\n NSLog(@\"No language was identified\");\n }\n }];\n\nIf the call succeeds, a\n[BCP-47 language code](//en.wikipedia.org/wiki/IETF_language_tag) is\npassed to the completion handler, indicating the language of the text. See the\n[complete list of supported languages](/docs/ml-kit/langid-support). If no\nlanguage could be confidently detected, the code `und` (undetermined) is passed.\n\nBy default, ML Kit returns a non-`und` value only when it identifies the\nlanguage with a confidence value of at least 0.5. You can change this threshold\nby passing a `LanguageIdentificationOptions` object to\n`languageIdentification(options:)`: \n\nSwift \n\n let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)\n let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)\n\nObjective-C \n\n FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];\n FIRLanguageIdentificationOptions *options =\n [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];\n FIRLanguageIdentification *languageId =\n [naturalLanguage languageIdentificationWithOptions:options];\n\nGet the possible languages of a string\n\nTo get the confidence values of a string's most likely languages, get an\ninstance of `LanguageIdentification`, and then pass the string to the\n`identifyPossibleLanguages(for:)` method.\n\nFor example: \n\nSwift \n\n let languageId = NaturalLanguage.naturalLanguage().languageIdentification()\n\n languageId.identifyPossibleLanguages(for: text) { (identifiedLanguages, error) in\n if let error = error {\n print(\"Failed with error: \\(error)\")\n return\n }\n guard let identifiedLanguages = identifiedLanguages,\n !identifiedLanguages.isEmpty,\n identifiedLanguages[0].languageCode != \"und\"\n else {\n print(\"No language was identified\")\n return\n }\n\n print(\"Identified Languages:\\n\" +\n identifiedLanguages.map {\n String(format: \"(%@, %.2f)\", $0.languageCode, $0.confidence)\n }.joined(separator: \"\\n\"))\n }\n\nObjective-C \n\n FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];\n FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];\n\n [languageId identifyPossibleLanguagesForText:text\n completion:^(NSArray\u003cFIRIdentifiedLanguage *\u003e * _Nonnull identifiedLanguages,\n NSError * _Nullable error) {\n if (error != nil) {\n NSLog(@\"Failed with error: %@\", error.localizedDescription);\n return;\n }\n if (identifiedLanguages.count == 1\n && [identifiedLanguages[0].languageCode isEqualToString:@\"und\"] ) {\n NSLog(@\"No language was identified\");\n return;\n }\n NSMutableString *outputText = [NSMutableString stringWithFormat:@\"Identified Languages:\"];\n for (FIRIdentifiedLanguage *language in identifiedLanguages) {\n [outputText appendFormat:@\"\\n(%@, %.2f)\", language.languageCode, language.confidence];\n }\n NSLog(outputText);\n }];\n\nIf the call succeeds, a list of `IdentifiedLanguage` objects is passed to the\ncontinuation handler. From each object, you can get the language's BCP-47 code\nand the confidence that the string is in that language. See the\n[complete list of supported languages](/docs/ml-kit/langid-support). Note that\nthese values indicate the confidence that the entire string is in the given\nlanguage; ML Kit doesn't identify multiple languages in a single string.\n\nBy default, ML Kit returns only languages with confidence values of at least\n0.01. You can change this threshold by passing a\n`LanguageIdentificationOptions` object to `languageIdentification(options:)`: \n\nSwift \n\n let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)\n let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)\n\nObjective-C \n\n FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];\n FIRLanguageIdentificationOptions *options =\n [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];\n FIRLanguageIdentification *languageId =\n [naturalLanguage languageIdentificationWithOptions:options];\n\nIf no language meets this threshold, the list will have one item, with the value\n`und`."]]