NLP / NaturalLanguage: nó là gì, framework xử lý văn bản trong iOS

Tác giả: IT Sectr Đã đăng: 2026-07-19 Thời gian đọc: 8 phút

NaturalLanguage là một framework của Apple để xử lý ngôn ngữ tự nhiên trên các thiết bị iOS và macOS, cung cấp khả năng tokenization, nhận dạng ngôn ngữ, gắn thẻ từ loại, lemmatization và nhận dạng thực thể có tên. Theo Apple WWDC 2020, framework thực hiện toàn bộ phân tích trên thiết bị, không gửi dữ liệu đến máy chủ, đảm bảo quyền riêng tư dữ liệu người dùng. NaturalLanguage hỗ trợ hơn 30 ngôn ngữ và tích hợp với Core ML cho các mô hình NLP tùy chỉnh.

Những điểm chính

  • NaturalLanguage là framework NLP trên thiết bị của Apple, hoạt động mà không gửi dữ liệu lên đám mây.
  • Hỗ trợ tokenization, nhận dạng ngôn ngữ, lemmatization, gắn thẻ từ loại và NER.
  • Hoạt động với hơn 30 ngôn ngữ, bao gồm tiếng Nga, tiếng Anh, tiếng Trung và tiếng Ả Rập.
  • NLTokenizer chia văn bản thành các từ, câu, đoạn văn và tài liệu.
  • NLLanguageRecognizer xác định ngôn ngữ của văn bản với xác suất cho mỗi tùy chọn.

NaturalLanguage trong iOS là gì?

NaturalLanguage (NL) là một framework học máy của Apple để phân tích ngôn ngữ tự nhiên, một phần của Foundation và có sẵn trên iOS 12+, macOS 10.14+ và watchOS 5+. Framework cung cấp các khả năng NLP sẵn sàng sử dụng mà không cần huấn luyện các mô hình tùy chỉnh.

Không giống như các dịch vụ NLP đám mây (Google Cloud NLP, Amazon Comprehend), NaturalLanguage thực hiện toàn bộ phân tích trên thiết bị. Điều này có nghĩa là độ trễ mạng bằng không, hoạt động ngoại tuyến và quyền riêng tư dữ liệu hoàn toàn — văn bản không bao giờ rời khỏi thiết bị của người dùng.

Theo Apple ML Research 2023, NLP trên thiết bị trên chip A12+ xử lý các yêu cầu nhanh hơn 3–5 lần so với các giải pháp đám mây tương tự, trong khi duy trì độ chính xác trên 85% cho các tác vụ cơ bản. Framework được tối ưu hóa cho Neural Engine, có khả năng xử lý tới 100 yêu cầu mỗi giây trên các thiết bị hiện đại.

NaturalLanguage được sử dụng trong các ứng dụng iOS để phân tích đánh giá, tìm kiếm thông minh, tự động hoàn thành, kiểm duyệt nội dung và trích xuất dữ liệu có cấu trúc từ văn bản phi cấu trúc. Framework hỗ trợ hơn 30 ngôn ngữ, bao gồm tiếng Nga, tiếng Ukraina, tiếng Thổ Nhĩ Kỳ và tiếng Ả Rập.

Tokenization văn bản với NLTokenizer

NLTokenizer là một lớp để chia văn bản thành các đơn vị ngôn ngữ: từ, câu, đoạn văn hoặc tài liệu. Tokenization là bước đầu tiên của hầu hết mọi quy trình NLP và NaturalLanguage cung cấp nó sẵn sàng để sử dụng.

NLTokenizer tính đến các đặc điểm cụ thể của ngôn ngữ: nó xử lý chính xác tokenization cho tiếng Nhật (không có khoảng trắng giữa các từ), tiếng Ả Rập (chữ viết từ phải sang trái) và tiếng Trung (chữ viết tượng hình). Đối với tiếng Anh và tiếng Nga, tokenizer hoạt động theo khoảng trắng và dấu câu, nhưng tính đến các từ rút gọn (don't → do + n't).

swift
import NaturalLanguage

let text = "NaturalLanguage processes text on-device. It supports 30+ languages!"
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text

tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
    print(text[range])
    return true
}

Tokenization ở cấp độ câu rất hữu ích để chia văn bản lớn thành các khối logic trước khi phân tích sâu hơn. NLTokenizer sẽ xác định ranh giới câu ngay cả khi không có dấu chấm ở cuối hoặc khi có câu nghi vấn.

swift
let sentenceTokenizer = NLTokenizer(unit: .sentence)
sentenceTokenizer.string = text

sentenceTokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
    print("Sentence: \\(text[range])")
    return true
}

NLTokenizer là nền tảng cho tất cả các khả năng khác của NaturalLanguage. Sau khi tokenization, văn bản đã sẵn sàng cho việc nhận dạng ngôn ngữ, gắn thẻ và lemmatization.

Nhận dạng ngôn ngữ với NLLanguageRecognizer

NLLanguageRecognizer xác định ngôn ngữ của văn bản và trả về tùy chọn có khả năng nhất với điểm tin cậy. Framework hỗ trợ hơn 30 ngôn ngữ và có thể làm việc với văn bản có độ dài bất kỳ — từ một từ duy nhất đến toàn bộ tài liệu.

Thuật toán NLLanguageRecognizer phân tích n-gram ký tự và so sánh chúng với hồ sơ ngôn ngữ. Đối với văn bản ngắn (tới 50 ký tự), độ chính xác giảm, vì vậy Apple khuyến nghị gửi ít nhất 100–200 ký tự để nhận dạng ngôn ngữ đáng tin cậy.

swift
import NaturalLanguage

let recognizer = NLLanguageRecognizer()
recognizer.processString("Hello, how are you? I am learning NaturalLanguage.")

if let language = recognizer.dominantLanguage {
    print("Dominant language: \\(language.rawValue)") // "ru"
}

let hypotheses = recognizer.languageHypotheses(withMaximum: 3)
for (lang, prob) in hypotheses {
    print("\\(lang.rawValue): \\(prob)")
}

Phương thức languageHypotheses trả về một từ điển các ngôn ngữ với xác suất theo thứ tự giảm dần. Điều này hữu ích khi văn bản chứa hỗn hợp các ngôn ngữ hoặc khi bạn cần hiển thị cho người dùng nhiều tùy chọn để chọn, thay vì chỉ ngôn ngữ chiếm ưu thế.

NaturalLanguage xác định tiếng Nga với độ chính xác 95% đối với văn bản từ 100 ký tự trở lên. Đối với văn bản ngắn (1–2 từ), độ chính xác giảm xuống 60–70% — trong những trường hợp như vậy, tốt hơn nên sử dụng languageHypotheses và hiển thị 3 tùy chọn hàng đầu.

Gắn thẻ từ loại và lemmatization

NLTagScheme cung cấp các lược đồ gắn thẻ để phân tích ngôn ngữ: từ loại (danh từ, động từ, tính từ), lemmatization (dạng cơ bản của từ), loại thực thể (người, tổ chức, địa điểm) và các danh mục khác.

Lemmatization đưa một từ về dạng từ điển của nó: đã chạy → chạy, tốt hơn → tốt, books → book. Điều này cực kỳ quan trọng cho việc tìm kiếm và phân tích văn bản — nếu không có lemmatization, mèo và những con mèo được coi là các token khác nhau, làm giảm chất lượng của các quy trình NLP.

swift
import NaturalLanguage

let tagger = NLTagger(tagSchemes: [.lemma, .lexicalClass])
tagger.string = "The cats were running quickly."

tagger.enumerateTags(in: tagger.string!.startIndex..<tagger.string!.endIndex,
    unit: .word,
    scheme: .lexicalClass) { tag, range in
    print("\\(tagger.string![range]): \\(tag?.rawValue ?? "unknown")"
}

Ví dụ đầu ra: cats → Danh từ, were → Động từ, quickly → Trạng từ. Bằng cách kết hợp lemmatization và từ loại, bạn có thể xây dựng tìm kiếm thông minh giúp tìm mèo đang chạy từ truy vấn chạy mèo.

NLTagScheme.lemma hoạt động cho tất cả các ngôn ngữ được NaturalLanguage hỗ trợ, bao gồm cả tiếng Nga. Điều này làm cho NLTagger trở thành một công cụ linh hoạt cho các ứng dụng đa ngôn ngữ mà không cần tải các mô hình riêng biệt cho mỗi ngôn ngữ.

Nhận dạng thực thể có tên trong NaturalLanguage

Nhận dạng thực thể có tên (NER) là nhiệm vụ trích xuất các thực thể có tên từ văn bản: tên người, tên tổ chức, địa điểm địa lý và dữ liệu cá nhân. NaturalLanguage hỗ trợ NER thông qua NLTagScheme.nameType.

NLTagScheme.nameType phân biệt ba loại thực thể: PersonalName, OrganizationName và PlaceName. Điều này cho phép trích xuất tự động dữ liệu có cấu trúc từ tin tức, email và đánh giá.

swift
let nerTagger = NLTagger(tagSchemes: [.nameType])
nerTagger.string = "Tim Cook announced Apple's new headquarters in Cupertino."

nerTagger.enumerateTags(in: nerTagger.string!.startIndex..<nerTagger.string!.endIndex,
    unit: .word,
    scheme: .nameType) { tag, range in
    if tag != nil {
        print("\\(nerTagger.string![range]): \\(tag!.rawValue)"
    }
}

Kết quả: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NER của NaturalLanguage không yêu cầu huấn luyện tùy chỉnh và hoạt động ngay lập tức cho tiếng Anh, tiếng Pháp, tiếng Đức, tiếng Tây Ban Nha và các ngôn ngữ khác.

Đối với tiếng Nga, NER được hỗ trợ nhưng độ chính xác thấp hơn một chút — khoảng 70–75% so với 85% cho tiếng Anh. Nếu cần độ chính xác cao cho tiếng Nga, Apple khuyến nghị huấn luyện một mô hình Core ML tùy chỉnh trên dữ liệu của riêng bạn bằng Create ML.

Phân tích cảm xúc với NLModel

NLModel là một lớp để làm việc với các mô hình Core ML NLP đã được huấn luyện, bao gồm mô hình phân tích cảm xúc tích hợp được Apple huấn luyện trước. Mô hình xác định cảm xúc của văn bản: tích cực, tiêu cực hoặc trung tính.

Mô hình phân tích cảm xúc tích hợp được huấn luyện trên các đánh giá App Store và hoạt động cho tiếng Anh, tiếng Pháp, tiếng Đức, tiếng Ý, tiếng Tây Ban Nha, tiếng Bồ Đào Nha, tiếng Trung và tiếng Nhật. Đối với tiếng Nga, mô hình không được huấn luyện trước — bạn cần Create ML và dữ liệu được gắn nhãn của riêng mình.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "This app is amazing!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel cũng hỗ trợ các mô hình tùy chỉnh được huấn luyện thông qua Create ML. Bạn có thể huấn luyện một mô hình phân loại văn bản trên dữ liệu của riêng mình (danh mục sản phẩm, loại vé hỗ trợ, phong cách ngôn ngữ) và sử dụng nó thông qua cùng một giao diện NLModel.

Theo tài liệu Apple Create ML 2024, một mô hình văn bản tùy chỉnh được huấn luyện trên 500–5000 mẫu để đạt độ chính xác 80–95%. NaturalLanguage tải mô hình một lần và lưu vào bộ nhớ đệm cho các lần gọi tiếp theo, giảm thiểu độ trễ cho các yêu cầu lặp lại.

Tác vụ NLPLớp NaturalLanguageHỗ trợ tiếng Nga
TokenizationNLTokenizer
Nhận dạng ngôn ngữNLLanguageRecognizer
LemmatizationNLTagger + .lemma
Từ loạiNLTagger + .lexicalClass
NERNLTagger + .nameTypeHạn chế
Cảm xúcNLModel (huấn luyện trước)Không

Câu hỏi thường gặp

NaturalLanguage khác Core ML cho NLP như thế nào?

NaturalLanguage cung cấp các mô hình NLP sẵn sàng sử dụng mà không cần huấn luyện: tokenization, nhận dạng ngôn ngữ, NER. Core ML yêu cầu huấn luyện một mô hình trên dữ liệu của riêng bạn và cung cấp nhiều tính linh hoạt hơn cho các tác vụ cụ thể. NaturalLanguage phù hợp hơn cho các tác vụ cơ bản sẵn sàng sử dụng, trong khi Core ML dành cho các tác vụ chuyên biệt cao.

NaturalLanguage có hoạt động ngoại tuyến không?

Có, NaturalLanguage hoạt động hoàn toàn trên thiết bị mà không cần kết nối internet. Tất cả các mô hình được tích hợp trong iOS và macOS, và dữ liệu không được gửi đến máy chủ. Đây là một lợi thế quan trọng so với các dịch vụ NLP đám mây yêu cầu truy cập mạng và tạo ra rủi ro về quyền riêng tư.

NaturalLanguage hỗ trợ những ngôn ngữ nào?

NaturalLanguage hỗ trợ hơn 30 ngôn ngữ, bao gồm tiếng Nga, tiếng Anh, tiếng Tây Ban Nha, tiếng Pháp, tiếng Đức, tiếng Ý, tiếng Bồ Đào Nha, tiếng Trung, tiếng Nhật, tiếng Hàn, tiếng Ả Rập, tiếng Thổ Nhĩ Kỳ và tiếng Ukraina. Độ chính xác của tokenization và lemmatization cao cho tất cả các ngôn ngữ được hỗ trợ, trong khi NER và phân tích cảm xúc chủ yếu dành cho tiếng Anh.

Làm thế nào để huấn luyện mô hình NLP của riêng tôi cho NaturalLanguage?

Sử dụng Create ML — ứng dụng của Apple để huấn luyện các mô hình học máy mà không cần lập trình. Tải lên một tập dữ liệu được gắn nhãn (CSV hoặc JSON), chọn một tác vụ phân loại văn bản hoặc gắn thẻ, huấn luyện mô hình và xuất sang định dạng Core ML (.mlmodel). Sau đó tải mô hình qua NLModel(mlModel:) trong mã.

NaturalLanguage có hoạt động trên tất cả các thiết bị Apple không?

NaturalLanguage có sẵn trên iOS 12+, macOS 10.14+, watchOS 5+ và tvOS 12+. Trên các thiết bị có chip A12+ và Neural Engine, hiệu suất cao hơn — xử lý văn bản được tăng tốc 3–5 lần nhờ học máy tăng tốc phần cứng. Trên các thiết bị cũ hơn (A11 trở về trước), framework hoạt động nhưng chậm hơn.

Tổng kết

  • NaturalLanguage là framework NLP trên thiết bị của Apple cho tokenization, nhận dạng ngôn ngữ, lemmatization, gắn thẻ POS và NER mà không gửi dữ liệu lên đám mây.
  • NLTokenizer chia văn bản thành các từ, câu, đoạn văn và tài liệu có tính đến đặc thù của hơn 30 ngôn ngữ, bao gồm tiếng Nhật và tiếng Ả Rập.
  • NLLanguageRecognizer xác định ngôn ngữ chiếm ưu thế của văn bản và trả về các giả thuyết với xác suất cho các kịch bản đa ngôn ngữ.
  • NLTagger với .lexicalClass và .lemma thực hiện gắn thẻ từ loại và lemmatization — đưa các từ về dạng từ điển để cải thiện tìm kiếm và phân tích.
  • Nhận dạng thực thể có tên thông qua NLTagScheme.nameType trích xuất tên, tổ chức và địa điểm từ văn bản bằng tiếng Anh, tiếng Pháp, tiếng Đức và các ngôn ngữ khác.
  • NLModel cung cấp giao diện cho các mô hình Core ML được huấn luyện trước và tùy chỉnh, bao gồm một mô hình phân tích cảm xúc tích hợp cho các đánh giá bằng 7 ngôn ngữ.
  • Đối với tiếng Nga, tokenization, nhận dạng ngôn ngữ, lemmatization và gắn thẻ POS có sẵn; NER và phân tích cảm xúc được triển khai tốt hơn thông qua một mô hình Core ML tùy chỉnh.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm