Eine Tour durch die Python NLP-Bibliotheken
Bild generiert mit DALL·E 3

NLP (Pure Language Processing) ist ein Bereich der künstlichen Intelligenz, der sich auf die Interaktion zwischen menschlicher Sprache und Computern konzentriert. Dabei wird versucht, Textdaten zu untersuchen und anzuwenden, damit Laptop den Textual content sinnvoll verstehen können.

Mit der fortschreitenden NLP-Forschung hat sich die Artwork und Weise, wie wir Textdaten in Computern verarbeiten, weiterentwickelt. In der heutigen Zeit verwenden wir Python, um Daten einfacher untersuchen und verarbeiten zu können.

Da Python zur bevorzugten Sprache für die Untersuchung von Textdaten geworden ist, wurden viele Bibliotheken speziell für den NLP-Bereich entwickelt. In diesem Artikel werden wir verschiedene unglaubliche und nützliche NLP-Bibliotheken erkunden.

Additionally, lasst uns loslegen.

NLTK

NLTKoder Pure Language Device Equipment, ist eine NLP-Python-Bibliothek mit vielen Textverarbeitungs-APIs und Wrappern in Industriequalität. Es ist eine der größten NLP-Python-Bibliotheken, die von Forschern, Datenwissenschaftlern, Ingenieuren und anderen verwendet wird. Es ist eine Commonplace-NLP-Python-Bibliothek für NLP-Aufgaben.

Versuchen wir herauszufinden, was NLTK leisten kann. Zuerst müssen wir die Bibliothek mit dem folgenden Code installieren.

Als nächstes wollen wir sehen, was NLTK tun kann. Zunächst kann NLTK den Tokenisierungsprozess mit dem folgenden Code durchführen:

import nltk from nltk.tokenize
import word_tokenize

# Obtain the mandatory sources
nltk.obtain('punkt')

textual content = "The fruit within the desk is a banana"
tokens = word_tokenize(textual content)

print(tokens)
Output>> 
('The', 'fruit', 'in', 'the', 'desk', 'is', 'a', 'banana')

Bei der Tokenisierung würde grundsätzlich jedes Wort eines Satzes in einzelne Daten aufgeteilt.

Mit NLTK können wir auch Half-of-Speech-Tags (POS) auf der Textprobe ausführen.

from nltk.tag import pos_tag

nltk.obtain('averaged_perceptron_tagger')

textual content = "The fruit within the desk is a banana"
pos_tags = pos_tag(tokens)

print(pos_tags)
Output>>
(('The', 'DT'), ('fruit', 'NN'), ('in', 'IN'), ('the', 'DT'), ('desk', 'NN'), ('is', 'VBZ'), ('a', 'DT'), ('banana', 'NN'))

Die Ausgabe des POS-Taggers mit NLTK ist jedes Token und seine beabsichtigten POS-Tags. Beispielsweise ist das Wort „Fruit“ ein Nomen (NN) und das Wort „a“ ist ein Determinant (DT).

Mit NLTK ist es auch möglich, Stemming und Lemmatisierung durchzuführen. Beim Stemming wird ein Wort durch Entfernen von Präfixen und Suffixen auf seine Grundform reduziert, während bei der Lemmatisierung auch die POS und morphologische Analyse des Wortes in die Grundform umgewandelt wird.

from nltk.stem import PorterStemmer, WordNetLemmatizer
nltk.obtain('wordnet')
nltk.obtain('punkt')

textual content = "The striped bats are hanging on their toes for greatest"
tokens = word_tokenize(textual content)

# Stemming
stemmer = PorterStemmer()
stems = (stemmer.stem(token) for token in tokens)
print("Stems:", stems)

# Lemmatization
lemmatizer = WordNetLemmatizer()
lemmas = (lemmatizer.lemmatize(token) for token in tokens)
print("Lemmas:", lemmas)
Output>> 
Stems: ('the', 'stripe', 'bat', 'are', 'dangle', 'on', 'their', 'toes', 'for', 'greatest')
Lemmas: ('The', 'striped', 'bat', 'are', 'hanging', 'on', 'their', 'foot', 'for', 'greatest')

Sie können sehen, dass die Prozesse der Stemming- und Lentmatisierung zu leicht unterschiedlichen Ergebnissen bei den Wörtern führen.

Dies ist die einfache Verwendung von NLTK. Sie können damit noch viele andere Dinge tun, aber die oben genannten APIs werden am häufigsten verwendet.

SpaCy

SpaCy ist eine NLP-Python-Bibliothek, die speziell für den Produktionseinsatz entwickelt wurde. Es handelt sich um eine erweiterte Bibliothek, und SpaCy ist für seine Leistung und Fähigkeit bekannt, große Mengen an Textdaten zu verarbeiten. In vielen NLP-Fällen ist es eine bevorzugte Bibliothek für den industriellen Einsatz.

Um SpaCy zu installieren, können Sie sich deren Nutzungsseite. Abhängig von Ihren Anforderungen stehen viele Kombinationen zur Auswahl.

Versuchen wir, SpaCy für die NLP-Aufgabe zu verwenden. Zunächst würden wir versuchen, mit der Bibliothek eine Named Entity Recognition (NER) durchzuführen. NER ist ein Prozess zum Identifizieren und Klassifizieren benannter Entitäten in Texten in vordefinierte Kategorien wie Particular person, Adresse, Standort und mehr.

import spacy

nlp = spacy.load("en_core_web_sm")

textual content = "Brad is working within the U.Ok. Startup known as AIForLife for 7 Months."
doc = nlp(textual content)
#Carry out the NER
for ent in doc.ents:
    print(ent.textual content, ent.label_)
Output>>
Brad PERSON
the U.Ok. Startup ORG
7 Months DATE

Wie Sie sehen, versteht das vortrainierte SpaCy-Modell, welches Wort im Dokument klassifiziert werden kann.

Als Nächstes können wir mit SpaCy eine Abhängigkeitsanalyse durchführen und diese visualisieren. Bei der Abhängigkeitsanalyse wird durch die Bildung einer Baumstruktur verstanden, wie sich die einzelnen Wörter zueinander verhalten.

import spacy
from spacy import displacy

nlp = spacy.load("en_core_web_sm")

textual content = "SpaCy excels at dependency parsing."
doc = nlp(textual content)
for token in doc:
    print(f"{token.textual content}: {token.dep_}, {token.head.textual content}")

displacy.render(doc, jupyter=True)
Output>> 
Brad: nsubj, working
is: aux, working
working: ROOT, working
in: prep, working
the: det, Startup
U.Ok.: compound, Startup
Startup: pobj, in
known as: advcl, working
AIForLife: oprd, known as
for: prep, known as
7: nummod, Months
Months: pobj, for
.: punct, working

Die Ausgabe sollte alle Wörter mit ihrem POS und ihren Bezugspunkten enthalten. Der obige Code würde auch eine Baumvisualisierung in Ihrem Jupyter-Pocket book ermöglichen.

Versuchen wir zum Schluss, die Textähnlichkeit mit SpaCy zu ermitteln. Die Textähnlichkeit misst, wie ähnlich oder verwandt zwei Textteile sind. Es gibt viele Techniken und Messungen, aber wir werden die einfachste ausprobieren.

import spacy

nlp = spacy.load("en_core_web_sm")

doc1 = nlp("I like pizza")
doc2 = nlp("I really like hamburger")

# Calculate similarity
similarity = doc1.similarity(doc2)
print("Similarity:", similarity)
Output>>
Similarity: 0.6159097609586724

Das Ähnlichkeitsmaß misst die Ähnlichkeit zwischen Texten, indem es einen Ausgabewert bereitstellt, der normalerweise zwischen 0 und 1 liegt. Je näher der Wert bei 1 liegt, desto ähnlicher sind die beiden Texte.

Es gibt noch viele weitere Dinge, die Sie mit SpaCy tun können. Durchsuchen Sie die Dokumentation, um etwas Nützliches für Ihre Arbeit zu finden.

TextBlob

TextBlob ist eine auf NLTK aufbauende NLP-Python-Bibliothek zur Verarbeitung von Textdaten. Sie vereinfacht viele NLTK-Anwendungen und kann Textverarbeitungsaufgaben rationalisieren.

Sie können TextBlob mit dem folgenden Code installieren:

pip set up -U textblob
python -m textblob.download_corpora

Versuchen wir zunächst, TextBlob für NLP-Aufgaben zu verwenden. Als Erstes würden wir versuchen, eine Stimmungsanalyse mit TextBlob durchzuführen. Das können wir mit dem folgenden Code tun.

from textblob import TextBlob

textual content = "I'm within the prime of the world"
blob = TextBlob(textual content)
sentiment = blob.sentiment

print(sentiment)
Output>>
Sentiment(polarity=0.5, subjectivity=0.5)

Die Ausgabe ist ein Polaritäts- und Subjektivitätswert. Die Polarität ist die Stimmung des Textes, wobei der Wert zwischen -1 (negativ) und 1 (positiv) liegt. Gleichzeitig liegt der Subjektivitätswert zwischen 0 (objektiv) und 1 (subjektiv).

Wir können TextBlob auch für Textkorrekturaufgaben verwenden. Sie können das mit dem folgenden Code tun.

from textblob import TextBlob

textual content = "I havv goood speling."
blob = TextBlob(textual content)

# Spelling Correction
corrected_blob = blob.right()
print("Corrected Textual content:", corrected_blob)
Output>>
Corrected Textual content: I've good spelling.

Versuchen Sie, die TextBlob-Pakete zu erkunden, um die APIs für Ihre Textaufgaben zu finden.

Gensim

Gensim ist eine Open-Supply-Python-NLP-Bibliothek, die auf Themenmodellierung und Dokumentähnlichkeitsanalyse spezialisiert ist, insbesondere für große Datenmengen und Streaming-Daten. Der Schwerpunkt liegt eher auf industriellen Echtzeitanwendungen.

Probieren wir die Bibliothek aus. Zunächst können wir sie mit dem folgenden Code installieren:

Nachdem die Set up abgeschlossen ist, können wir die Gensim-Funktion ausprobieren. Lassen Sie uns versuchen, mit Gensim eine Themenmodellierung mit LDA durchzuführen.

import gensim
from gensim import corpora
from gensim.fashions import LdaModel

# Pattern paperwork
paperwork = (
    "Tennis is my favourite sport to play.",
    "Soccer is a well-liked competitors in sure nation.",
    "There are various athletes presently coaching for the olympic."
)

# Preprocess paperwork
texts = ((phrase for phrase in doc.decrease().cut up()) for doc in paperwork)

dictionary = corpora.Dictionary(texts)
corpus = (dictionary.doc2bow(textual content) for textual content in texts)


#The LDA mannequin
lda_model = LdaModel(corpus, num_topics=2, id2word=dictionary, passes=15)

subjects = lda_model.print_topics()
for matter in subjects:
    print(matter)
Output>>
(0, '0.073*"there" + 0.073*"presently" + 0.073*"olympic." + 0.073*"the" + 0.073*"athletes" + 0.073*"for" + 0.073*"coaching" + 0.073*"many" + 0.073*"are" + 0.025*"is"')
(1, '0.094*"is" + 0.057*"soccer" + 0.057*"sure" + 0.057*"widespread" + 0.057*"a" + 0.057*"competitors" + 0.057*"nation." + 0.057*"in" + 0.057*"favourite" + 0.057*"tennis"')

Als Ergebnis erhält man eine Kombination von Wörtern aus den Dokumentbeispielen, die zusammenhängend ein Thema ergeben. Sie können beurteilen, ob das Ergebnis Sinn ergibt oder nicht.

Gensim bietet Benutzern auch eine Möglichkeit, Inhalte einzubetten. Beispielsweise verwenden wir Word2Vec, um Einbettungen aus Wörtern zu erstellen.

import gensim
from gensim.fashions import Word2Vec

# Pattern sentences
sentences = (
    ('machine', 'studying'),
    ('deep', 'studying', 'fashions'),
    ('pure', 'language', 'processing')
)

# Prepare Word2Vec mannequin
mannequin = Word2Vec(sentences, vector_size=20, window=5, min_count=1, employees=4)

vector = mannequin.wv('machine')
print(vector)

Output>>
( 0.01174188 -0.02259516  0.04194366 -0.04929082  0.0338232   0.01457208
 -0.02466416  0.02199094 -0.00869787  0.03355692  0.04982425 -0.02181222
 -0.00299669 -0.02847819  0.01925411  0.01393313  0.03445538  0.03050548
  0.04769249  0.04636709)

Es gibt noch viele weitere Anwendungen, die Sie mit Gensim verwenden können. Sehen Sie sich die Dokumentation an und bewerten Sie Ihre Anforderungen.

Abschluss

In diesem Artikel haben wir mehrere Python-NLP-Bibliotheken untersucht, die für viele Textaufgaben unverzichtbar sind. Alle diese Bibliotheken sind für Ihre Arbeit nützlich, von der Textual content-Tokenisierung bis zur Phrase-Einbettung. Die Bibliotheken, die wir besprechen, sind:

  1. NLTK
  2. SpaCy
  3. TextBlob
  4. Gensim

Ich hoffe, es hilft

Cornellius Yudha Wijaya ist Information Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert