SuperAPI AI 工具集

natural-language

智能体与模型

查看项目

更新于 10-16 09:11

技能介绍

概述

本技能涵盖两个相关的苹果框架:NaturalLanguage(NLTokenizer、NLTagger、NLEmbedding)用于端侧文本分析,Translation(TranslationSession、LanguageAvailability)用于语言翻译。目标为 Swift 6.3 / iOS 26+。

用途与设置

NaturalLanguage 用于文本分析,Translation 用于语言翻译。NaturalLanguage 不需要特殊授权或能力;Translation 需要 iOS 17.4+ / macOS 14.4+。使用时分别导入:

import NaturalLanguage
import Translation

需注意:NaturalLanguage 的类(NLTokenizer、NLTagger)不是线程安全的,同一时刻应仅在单个线程或调度队列中使用每个实例。

主要能力

分词

使用 NLTokenizer 将文本切分为词、句子或段落。分词单元包括:.word(单个词)、.sentence(句子)、.paragraph(段落)、.document(整个文档)。可通过 enumerateTokens(in:using:) 检测数字或表情符号 token。

语言识别

使用 NLLanguageRecognizer 检测字符串的主导语言,也可通过 languageHypotheses 获取带置信度的多个候选。对短文本,可设置 languageConstraints 限制到预期语言以提高准确率。

词性标注

使用 NLTagger 识别名词、动词、形容词等词法类别。常见标签方案包括:.lexicalClass(词性)、.nameType(命名实体类型)、.nameTypeOrLexicalClass(NER + POS 组合)、.lemma(词的原形)、.language(逐 token 语言)、.sentimentScore(情感极性分数)。

命名实体识别

提取人名、地名和组织机构名,NLTag 取值包括 .personalName、.placeName、.organizationName。

情感分析

对文本情感打分,范围为 -1.0(负面)到 +1.0(正面)。

文本嵌入

使用 NLEmbedding 测量词或句子之间的语义相似度,支持余弦距离等度量方式,也可查找相似词(neighbors)。

翻译

系统翻译浮层:通过 .translationPresentation() 展示内置翻译 UI。

编程式翻译:在视图上下文中使用 .translationTask() 进行编程式翻译。

批量翻译:在单个会话中翻译多个字符串。

语言可用性检查:使用 LanguageAvailability 的 status(from:to:) 检查语言对状态,返回 .installed(可离线翻译)、.supported(需要下载)、.unsupported(该语言对不可用)。

常见错误与审查要点

  • 不要跨线程共享 NLTagger/NLTokenizer,这些类非线程安全,会导致错误结果或崩溃。
  • 不要将 NaturalLanguage 与 Core ML 混淆:NaturalLanguage 提供内置语言分析,自定义训练模型应使用 Core ML,两者可通过 NLModel 互补。
  • 不要假设所有语言都有嵌入:并非所有语言在设备上都有词或句子嵌入,需处理 nil。
  • 不要为每个 token 创建新的 tagger:创建和配置 tagger 开销较大,应对同一文本复用。
  • 短文本不要忽略语言提示:对约 20 个字符以下的字符串,语言检测不可靠,应设置约束或提示。
  • 使用 .joinNames 选项配合 NER,以保持多词名称的完整性。
  • 情感分数按可选值处理(某些不支持的语言可能返回 nil)。
  • 批量翻译使用 clientIdentifier 将响应匹配到请求。

适用场景

适用于在苹果平台进行端侧文本分词、词性标注、命名实体识别、情感分析、语言识别与文本嵌入,以及应用内的语言翻译与批量翻译。

限制与暂未提供

资料未提供收费、价格、平台之外的兼容信息、效果指标或具体使用步骤。部分内容(如扩展模式、自定义模型、上下文嵌入、地名词典)指向 references/translation-patterns.md,但该文件的具体内容暂未提供。