2

Natural Language Processing in Python

 7 months ago
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.
neoserver,ios ssh client

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...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK