Natural Language Processing in Python
source link: https://devm.io/python/nlp-cheat-sheet
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
NLP Cheat Sheet NLP Cheat Sheet
Grundlegende Python-Funktionen
Python bietet einige grundlegende Funktionen für das Arbeiten mit Texten an:
text = "Dies ist ein Text"
list(text) # Text in einzelne Buchstaben aufteilen
# -> ['D','i','e','s',' ','i','s','t',' ','e','i','n',' ','T','e','x','t']
text.split() # Text in einzelne Wörter aufteilen
# -> ['Dies', 'ist', 'ein', 'Text']
len(text) # Anzahl Buchstaben im Text (inkl. Leerzeichen)
# -> 17
len(text.split()) # Anzahl der Wörter
# -> 4
text = text.replace("Text", "Beispieltext") # Wort im Text ersetzen
# -> Dies ist ein Beispieltext
SpaCy
Die SpaCy-Bibliothek in Python bietet vielseitige Möglichkeiten, um Text zu bearbeiten und zu analysieren. Aufgrund der einfachen und zugänglichen Funktion bildet SpaCy die Grundlage vieler NLP-Projekte. SpaCy verwendet vorgebaute Sprachmodelle, die in vielen Sprachen verfügbar sind.
!pip install spacy
import spacy
nlp = spacy.load("de_core_news_sm") # Laden des deutschen Sprachmodells
text = "Dein Text hier" # Dein Text
doc = nlp(text) # Erstelle ein Doc-Objekt
tokens = [token.text for token in doc] # Erstelle eine Liste der Tokens
Der Befehl zum Herunterladen des SpaCy-Modells lautet
python -m spacy download de_core_news_sm
Jedes Token (https://spacy.io/api/token/) in SpaCy hat eine Reihe von Attributen, die du nutzen kannst. Hier sind einige Beispiele:
- token.text: der Text des Tokens
- token.is_stop: ob das Token ein Stoppwort ist oder nicht
- token.is_punct: ob das Token ein Satzzeichen ist oder nicht
- token.is_space: ob das Token ein Leerzeichen ist oder nicht
- token.lemma_: die Grundform des Tokens
- token.pos_: die universelle Wortart des Tokens (UPOS)
Named Entity Recognition mit SpaCy:
SpaCy kann hervorragend verwendet werden, um Entitäten wie Namen, Orte oder Organisationen ausfindig zu machen:
# Text, auf dem NER durchgeführt werden soll
text = "Angela Merkel ist die Bundeskanzlerin von Deutschland."
doc = nlp(text)
# Ausgabe der erkannten Entitäten und ihrer Labels
for ent in doc.ents:
print(ent.text, ent.label_)
Embeddings
Um Texte für Algorithmen oder mathematische Operationen nutzbar zu machen, können diese in numerische Werte umgewandelt werden. Diese sogenannten Embeddings können entweder ganze Sätze/Textbausteine oder einzelne Wörter/Tokens darstellen.
Sentence Embeddings:
!pip install embedders
from embedders.classification.contextual import TransformerSentenceEmbedder
corpus = ["Meine Lieblingstadt ist Florenz."]
embedder = TransformerSentenceEmbedder("bert-base-german-cased") # Laden des Modells
embeddings = embedder.fit_transform(corpus) # Umwandlung in einen Vektor pro Satz
Word/ Token Embeddings:
from embedders.extraction.contextual import TransformerTokenEmbedder
corpus = ["Meine Lieblingstadt ist Florenz."]
embedder = TransformerTokenEmbedder("bert-base-german-cased", language_code="de_core_news_sm") embeddings = embedder.fit_transform(corpus) # Umwandlung in einen Vektor pro Token
Embeddings können groß und komplex werden, wodurch der Fluch der Dimensionalität entstehen kann. Es kann sich daher lohnen, die Dimensionen von Embeddings zu reduzieren:
from embedders.classification.reduce import PCASentenceReducer
reducer = PCASentenceReducer(embedder, n_components=64) # Laden des PCA reducers
embeddings_reduced = reducer.fit_transform(embeddings ) # Reduzierung der Dimensionen
Hugging Face Transformers Library
Hugging Face ist eine offene Community, in der Sprachmodelle oder Datensätze geteilt werden können. Die Transformers Library von Hugging Face bietet die Möglichkeit, viele dieser Modelle kostenlos herunterzuladen oder über das API aufzurufen.
Für Klassifizierung von Texten:
!pip install transformers
from transformers import BertTokenizer, BertForSequenceClassification
tokenizer = BertTokenizer.from_pretrained("oliverguhr/german-sentiment-bert")
model = BertForSequenceClassification.from_pretrained("oliverguhr/german-sentiment-bert")
text = "Ich liebe entwickler.de sehr!" # Beispielsatz
inputs = tokenizer(text, return_tensors="pt") # Satz tokenisieren
outputs = model(inputs["input_ids"]) # Input ins Modell geben
outputs_logits = outputs.logits.argmax(1) # Output mit dem höchsten Wahrscheinlichkeitswert
mapping = {0: "positiv", 1: "negativ", 2: "neutral"}
predicted_label = mapping[int(outputs_logits[0])] # Output auf ein Label mappen
print(predicted_label)
# -> positiv
Für Entitätenextraktion aus Texten:
from transformers import AutoTokenizer, AutoModelForTokenClassification
from transformers import pipeline
tokenizer = AutoTokenizer.from_pretrained("dslim/bert-base-NER")
model = AutoModelForTokenClassification.from_pretra...
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK