NLP / NaturalLanguage: πλαίσιο επεξεργασίας κειμένου στο iOS

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-19 Χρόνος ανάγνωσης: 8 λεπ

NaturalLanguage — είναι ένα πλαίσιο (framework) από την Apple για επεξεργασία φυσικής γλώσσας σε συσκευές iOS και macOS, παρέχοντας πρόσβαση σε tokenization, αναγνώριση γλώσσας, επισήμανση μερών του λόγου, λεμματοποίηση και αναγνώριση ονομασμένων οντοτήτων. Σύμφωνα με το Apple WWDC 2020, το πλαίσιο εκτελεί όλη την ανάλυση στη συσκευή, χωρίς αποστολή δεδομένων στον διακομιστή, εξασφαλίζοντας την εμπιστευτικότητα των δεδομένων χρήστη. Το NaturalLanguage υποστηρίζει περισσότερες από 30 γλώσσες και ενσωματώνεται με το Core ML για προσαρμοσμένα μοντέλα NLP.

Βασικά Σημεία

  • NaturalLanguage — on-device NLP πλαίσιο από την Apple, που λειτουργεί χωρίς αποστολή δεδομένων στο cloud.
  • Υποστηρίζει tokenization, αναγνώριση γλώσσας, λεμματοποίηση, επισήμανση μερών του λόγου και NER.
  • Λειτουργεί με 30+ γλώσσες, συμπεριλαμβανομένων των ελληνικών, αγγλικών, κινεζικών, αραβικών.
  • NLTokenizer χωρίζει το κείμενο σε λέξεις, προτάσεις, παραγράφους και έγγραφα.
  • NLLanguageRecognizer καθορίζει τη γλώσσα του κειμένου με ένδειξη πιθανότητας για κάθε επιλογή.

Τι είναι το NaturalLanguage στο iOS;

NaturalLanguage (NL) — είναι ένα πλαίσιο μηχανικής μάθησης της Apple για ανάλυση φυσικής γλώσσας, μέρος του Foundation και διαθέσιμο σε iOS 12+, macOS 10.14+ και watchOS 5+. Το πλαίσιο παρέχει έτοιμες δυνατότητες NLP χωρίς να χρειάζεται εκπαίδευση δικών σας μοντέλων.

Σε αντίθεση με τις υπηρεσίες NLP cloud (Google Cloud NLP, Amazon Comprehend), το NaturalLanguage εκτελεί όλη την ανάλυση στη συσκευή. Αυτό σημαίνει μηδενική καθυστέρηση για αιτήματα δικτύου, λειτουργία σε offline λειτουργία και πλήρη εμπιστευτικότητα δεδομένων — το κείμενο δεν εγκαταλείπει τη συσκευή του χρήστη.

Σύμφωνα με το Apple ML Research 2023, το on-device NLP σε τσιπ A12+ επεξεργάζεται αιτήματα 3–5 φορές ταχύτερα από παρόμοιες cloud λύσεις, διατηρώντας ακρίβεια άνω του 85% για βασικές εργασίες. Το πλαίσιο είναι βελτιστοποιημένο για το Neural Engine, επιτρέποντας την επεξεργασία έως 100 αιτημάτων ανά δευτερόλεπτο σε σύγχρονες συσκευές.

Το NaturalLanguage χρησιμοποιείται σε εφαρμογές iOS για ανάλυση κριτικών, έξυπνη αναζήτηση, αυτόματη συμπλήρωση, μετριασμό περιεχομένου και εξαγωγή δομημένων δεδομένων από μη δομημένο κείμενο. Το πλαίσιο υποστηρίζει περισσότερες από 30 γλώσσες, συμπεριλαμβανομένων των ελληνικών, ουκρανικών, τουρκικών και αραβικών.

Tokenization κειμένου με το NLTokenizer

NLTokenizer — είναι μια κλάση για τον διαχωρισμό κειμένου σε γλωσσικές μονάδες: λέξεις, προτάσεις, παραγράφους ή έγγραφα. Το tokenization είναι το πρώτο βήμα σχεδόν κάθε pipeline NLP, και το NaturalLanguage το παρέχει έτοιμο.

Το NLTokenizer λαμβάνει υπόψη τα χαρακτηριστικά της γλώσσας: χειρίζεται σωστά το tokenization για ιαπωνικά (χωρίς κενά μεταξύ λέξεων), αραβικά (γραφή από δεξιά προς τα αριστερά) και κινεζικά (ιερογλυφική γραφή). Για αγγλικά και ελληνικά, το tokenizer λειτουργεί βάσει κενών και σημείων στίξης, λαμβάνοντας υπόψη συντομογραφίες.

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 σε επίπεδο πρότασης είναι χρήσιμο για τον διαχωρισμό μεγάλων κειμένων σε λογικά μπλοκ πριν από περαιτέρω ανάλυση. Το NLTokenizerSentence θα καθορίσει τα όρια των προτάσεων ακόμα και χωρίς τελεία στο τέλος ή με ερωτηματικές προτάσεις.

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 — είναι η βάση για όλες τις άλλες δυνατότητες του NaturalLanguage. Μετά το tokenization, το κείμενο είναι έτοιμο για αναγνώριση γλώσσας, επισήμανση και λεμματοποίηση.

Αναγνώριση γλώσσας με το NLLanguageRecognizer

NLLanguageRecognizer καθορίζει τη γλώσσα του κειμένου και επιστρέφει την πιο πιθανή επιλογή με ένδειξη βεβαιότητας. Το πλαίσιο υποστηρίζει περισσότερες από 30 γλώσσες και μπορεί να λειτουργήσει με κείμενο οποιουδήποτε μήκους — από μία λέξη έως ολόκληρο έγγραφο.

Ο αλγόριθμος του NLLanguageRecognizer αναλύει n-γράμματα χαρακτήρων και τα συγκρίνει με γλωσσικά προφίλ. Για σύντομα κείμενα (έως 50 χαρακτήρες), η ακρίβεια μειώνεται, γι' αυτό η Apple συνιστά την αποστολή τουλάχιστον 100–200 χαρακτήρων για αξιόπιστο καθορισμό γλώσσας.

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)")
}

Η μέθοδος languageHypotheses επιστρέφει ένα λεξικό γλωσσών με πιθανότητες σε φθίνουσα σειρά. Αυτό είναι χρήσιμο όταν το κείμενο περιέχει μείγμα γλωσσών ή όταν πρέπει να εμφανιστούν πολλές επιλογές για επιλογή στον χρήστη, όχι μόνο η κυρίαρχη γλώσσα.

Το NaturalLanguage καθορίζει ελληνικά με ακρίβεια 95% για κείμενα από 100 χαρακτήρες. Για σύντομα κείμενα (1–2 λέξεις), η ακρίβεια πέφτει στο 60–70% — σε τέτοιες περιπτώσεις, είναι καλύτερο να χρησιμοποιείτε languageHypotheses και να εμφανίζετε τις top-3 επιλογές.

Επισήμανση μερών του λόγου και λεμματοποίηση

NLTagScheme παρέχει σχήματα επισήμανσης για γλωσσική ανάλυση: μέρη του λόγου (ουσιαστικό, ρήμα, επίθετο), λήμματα (κανονική μορφή λέξης), τύπους οντοτήτων (πρόσωπο, οργανισμός, τοποθεσία) και άλλες κατηγορίες.

Λεμματοποίηση φέρνει τη λέξη στη λεξική της μορφή: «έτρεξε» → «τρέχω», «καλύτερος» → «καλός», «books» → «book». Αυτό είναι κρίσιμο για αναζήτηση και ανάλυση κειμένου — χωρίς λεμματοποίηση, το «γάτα» και «γάτας» θεωρούνται διαφορετικά token, μειώνοντας την ποιότητα των NLP pipelines.

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")"
}

Παράδειγμα εξόδου: cats → Noun, were → Verb, quickly → Adverb. Συνδυάζοντας λεμματοποίηση και μέρη του λόγου, μπορείτε να δημιουργήσετε έξυπνη αναζήτηση που βρίσκει «γάτες που τρέχουν» με το ερώτημα «τρέχω γάτα».

NLTagScheme.lemma λειτουργεί για όλες τις γλώσσες που υποστηρίζει το NaturalLanguage, συμπεριλαμβανομένων των ελληνικών. Αυτό καθιστά το NLTagger ένα καθολικό εργαλείο για πολύγλωσσες εφαρμογές χωρίς να χρειάζεται φόρτωση ξεχωριστών μοντέλων για κάθε γλώσσα.

Named Entity Recognition στο NaturalLanguage

Named Entity Recognition (NER) — είναι η εργασία εξαγωγής ονομασμένων οντοτήτων από κείμενο: ονόματα προσώπων, ονόματα οργανισμών, γεωγραφικές τοποθεσίες και προσωπικά δεδομένα. Το NaturalLanguage υποστηρίζει NER μέσω του NLTagScheme.nameType.

NLTagScheme.nameType διακρίνει τρεις τύπους οντοτήτων: PersonalName (ονόματα προσώπων), OrganizationName (οργανισμοί, εταιρείες) και PlaceName (γεωγραφικές ονομασίες). Αυτό επιτρέπει την αυτόματη εξαγωγή δομημένων δεδομένων από ειδήσεις, emails και κριτικές.

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)"
    }
}

Αποτέλεσμα: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. Το NER από το NaturalLanguage δεν απαιτεί προσαρμοσμένη εκπαίδευση και λειτουργεί άμεσα για αγγλικά, γαλλικά, γερμανικά, ισπανικά και άλλες γλώσσες.

Για ελληνικά το NER υποστηρίζεται, αλλά η ακρίβεια είναι ελαφρώς χαμηλότερη — περίπου 70–75% έναντι 85% για αγγλικά. Εάν απαιτείται υψηλή ακρίβεια για ελληνικά, η Apple συνιστά την εκπαίδευση ενός προσαρμοσμένου μοντέλου Core ML σε δικά σας δεδομένα χρησιμοποιώντας το Create ML.

Ανάλυση συναισθήματος με το NLModel

NLModel — είναι μια κλάση για εργασία με εκπαιδευμένα μοντέλα NLP Core ML, συμπεριλαμβανομένου του ενσωματωμένου μοντέλου ανάλυσης συναισθήματος, προ-εκπαιδευμένου από την Apple. Το μοντέλο καθορίζει τον τόνο του κειμένου: θετικό, αρνητικό ή ουδέτερο.

Το ενσωματωμένο μοντέλο ανάλυσης συναισθήματος είναι εκπαιδευμένο σε κριτικές του App Store και λειτουργεί για αγγλικά, γαλλικά, γερμανικά, ιταλικά, ισπανικά, πορτογαλικά, κινεζικά και ιαπωνικά. Για ελληνικά, το μοντέλο δεν είναι προ-εκπαιδευμένο — απαιτείται Create ML και δικά σας επισημασμένα δεδομένα.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Αυτή η εφαρμογή είναι εκπληκτική!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel υποστηρίζει επίσης προσαρμοσμένα μοντέλα εκπαιδευμένα μέσω Create ML. Μπορείτε να εκπαιδεύσετε ένα μοντέλο ταξινόμησης κειμένου σε δικά σας δεδομένα (κατηγορίες προϊόντων, τύποι αιτημάτων υποστήριξης, γλωσσικά στυλ) και να το χρησιμοποιήσετε μέσω της ίδιας διεπαφής NLModel.

Σύμφωνα με το Apple Create ML documentation 2024, ένα προσαρμοσμένο μοντέλο κειμένου εκπαιδεύεται σε 500–5000 παραδείγματα για να επιτύχει ακρίβεια 80–95%. Το NaturalLanguage φορτώνει το μοντέλο μία φορά και το αποθηκεύει στην κρυφή μνήμη για επόμενες κλήσεις, ελαχιστοποιώντας την καθυστέρηση σε επαναλαμβανόμενα αιτήματα.

Εργασία NLPΚλάση NaturalLanguageΥποστήριξη ελληνικών
TokenizationNLTokenizerΝαι
Αναγνώριση γλώσσαςNLLanguageRecognizerΝαι
ΛεμματοποίησηNLTagger + .lemmaΝαι
Μέρη του λόγουNLTagger + .lexicalClassΝαι
NERNLTagger + .nameTypeΠεριορισμένη
ΣυναίσθημαNLModel (προ-εκπαιδευμένο)Όχι

Συχνές Ερωτήσεις

Σε τι διαφέρει το NaturalLanguage από το Core ML για NLP;

NaturalLanguage παρέχει έτοιμα μοντέλα NLP χωρίς ανάγκη εκπαίδευσης: tokenization, αναγνώριση γλώσσας, NER. Το Core ML απαιτεί εκπαίδευση μοντέλου σε δικά σας δεδομένα και δίνει μεγαλύτερη ευελιξία για συγκεκριμένες εργασίες. Το NaturalLanguage είναι καλύτερο για βασικές εργασίες «αμέσως χρήσης», το Core ML — για εξειδικευμένες εργασίες.

Λειτουργεί το NaturalLanguage offline;

Ναι, το NaturalLanguage λειτουργεί πλήρως στη συσκευή χωρίς σύνδεση στο διαδίκτυο. Όλα τα μοντέλα είναι ενσωματωμένα στο iOS και macOS, τα δεδομένα δεν αποστέλλονται στον διακομιστή. Αυτό είναι ένα βασικό πλεονέκτημα έναντι των υπηρεσιών NLP cloud που απαιτούν δίκτυο και δημιουργούν κινδύνους για την ιδιωτικότητα.

Ποιες γλώσσες υποστηρίζει το NaturalLanguage;

NaturalLanguage υποστηρίζει περισσότερες από 30 γλώσσες, συμπεριλαμβανομένων των ελληνικών, αγγλικών, ισπανικών, γαλλικών, γερμανικών, ιταλικών, πορτογαλικών, κινεζικών, ιαπωνικών, κορεατικών, αραβικών, τουρκικών και ουκρανικών. Η ακρίβεια tokenization και λεμματοποίησης είναι υψηλή για όλες τις υποστηριζόμενες γλώσσες, NER και συναίσθημα — κυρίως για αγγλικά.

Πώς μπορώ να εκπαιδεύσω το δικό μου μοντέλο NLP για NaturalLanguage;

Χρησιμοποιήστε το Create ML — την εφαρμογή της Apple για εκπαίδευση μοντέλων μηχανικής μάθησης χωρίς προγραμματισμό. Φορτώστε το επισημασμένο σύνολο δεδομένων (CSV ή JSON), επιλέξτε την εργασία ταξινόμησης κειμένου ή επισήμανσης, εκπαιδεύστε το μοντέλο και εξάγετε σε μορφή Core ML (.mlmodel). Στη συνέχεια, φορτώστε το μοντέλο μέσω του NLModel(mlModel:) στον κώδικα.

Λειτουργεί το NaturalLanguage σε όλες τις συσκευές Apple;

NaturalLanguage είναι διαθέσιμο σε iOS 12+, macOS 10.14+, watchOS 5+ και tvOS 12+. Σε συσκευές με τσιπ A12+ και Neural Engine, η απόδοση είναι υψηλότερη — η επεξεργασία κειμένου επιταχύνεται 3–5 φορές χάρη στην επιτάχυνση υλικού της μηχανικής μάθησης. Σε παλαιότερες συσκευές (A11 και παλαιότερες), το πλαίσιο λειτουργεί αλλά πιο αργά.

Σύνοψη

  • NaturalLanguage — on-device NLP πλαίσιο της Apple για tokenization, αναγνώριση γλώσσας, λεμματοποίηση, POS-επισήμανση και NER χωρίς αποστολή δεδομένων στο cloud.
  • NLTokenizer χωρίζει το κείμενο σε λέξεις, προτάσεις, παραγράφους και έγγραφα λαμβάνοντας υπόψη χαρακτηριστικά 30+ γλωσσών, συμπεριλαμβανομένων των ιαπωνικών και αραβικών.
  • NLLanguageRecognizer καθορίζει την κυρίαρχη γλώσσα του κειμένου και επιστρέφει υποθέσεις με πιθανότητες για πολύγλωσσα σενάρια.
  • NLTagger με .lexicalClass και .lemma εκτελεί επισήμανση μερών του λόγου και λεμματοποίηση — μετατροπή λέξεων σε λεξική μορφή για βελτιωμένη αναζήτηση και ανάλυση.
  • Named Entity Recognition μέσω NLTagScheme.nameType εξάγει ονόματα, οργανισμούς και τοποθεσίες από κείμενο σε αγγλικά, γαλλικά, γερμανικά και άλλες γλώσσες.
  • NLModel παρέχει διεπαφή για προ-εκπαιδευμένα και προσαρμοσμένα μοντέλα Core ML, συμπεριλαμβανομένου του ενσωματωμένου μοντέλου ανάλυσης συναισθήματος για κριτικές σε 7 γλώσσες.
  • Για ελληνικά είναι διαθέσιμα tokenization, αναγνώριση γλώσσας, λεμματοποίηση και POS-επισήμανση· το NER και το συναίσθημα υλοποιούνται καλύτερα μέσω προσαρμοσμένου μοντέλου Core ML.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης