Stemmen en lemmatiseren in Python NLTK met voorbeelden (2023)

Wat is stammen en lemmatiseren in Python NLTK?

Stemmen en lemmatiserenin Python NLTK zijn tekstnormalisatietechnieken voor Natural Language Processing. Deze technieken worden veel gebruikt voor het voorbewerken van tekst. Het verschil tussen stammen en lemmatiseren is dat stammen sneller is omdat het woorden knipt zonder de context te kennen, terwijl lemmatiseren langzamer is omdat het de context van woorden kent voordat ze worden verwerkt.

In deze Stemming & Lemmatisering tutorial leer je:

  • Wat is stammen en lemmatiseren in Python NLTK?
  • Wat is Stemmen?
  • Wat is lemmatisering?
  • Waarom is Lemmatisering beter dan Stemming?
  • Code om onderscheid te maken tussen Lemmatisering en Stemming
  • Gebruik Case van Lemmatizer

Wat is Stemmen?

Stammenis een methode voor het normaliseren van woorden in Natural Language Processing. Het is een techniek waarbij een reeks woorden in een zin wordt omgezet in een reeks om de zoekopdracht te verkorten. Bij deze methode worden de woorden met dezelfde betekenis, maar met enkele variaties afhankelijk van de context of zin, genormaliseerd.

Met andere woorden, er is één stamwoord, maar er zijn veel variaties op dezelfde woorden. Het stamwoord is bijvoorbeeld "eten" en de variaties zijn "eten, eten, gegeten en zo". Op dezelfde manier kunnen we met behulp van Stemming in Python het grondwoord van elke variatie vinden.

Bijvoorbeeld

Hij reed. Hij nam de rit.

In de bovenstaande twee zinnen is de betekenis hetzelfde, d.w.z. rijactiviteit in het verleden. Een mens kan gemakkelijk begrijpen dat beide betekenissen hetzelfde zijn. Maar voor machines zijn beide zinnen verschillend. Het werd dus moeilijk om het om te zetten in dezelfde gegevensrij. Als we niet dezelfde dataset leveren, kan de machine niet voorspellen. Het is dus noodzakelijk om de betekenis van elk woord te differentiëren om de dataset voor te bereiden op machine learning. En hier wordt staming gebruikt om hetzelfde type gegevens te categoriseren door het hoofdwoord te krijgen.

Laten we dit implementeren met een Python-programma.NLTK heeft een algoritme genaamd "PorterStemmer". Dit algoritme accepteert de lijst met getokeniseerde woorden en zet deze om in rootwoord.

Programma om Stemming te begrijpen

from nltk.stem import PorterStemmere_words= ["wachten", "wachten", "wachten", "wachten"]ps =PorterStemmer()voor w in e_words: rootWord=ps.stem(w) print(rootWord)

Uitgang:

wachtwachtwachtwacht

Stemmen en lemmatiseren in Python NLTK met voorbeelden (1)

Code Uitleg:

  • Er is een stammodule in NLTk die wordt geïmporteerd. Als u de volledige module importeert, wordt het programma zwaar omdat het duizenden regels codes bevat. Dus van de hele stammodule hebben we alleen "PorterStemmer" geïmporteerd.
  • We hebben een dummy-lijst gemaakt met variatiegegevens van hetzelfde woord.
  • Er wordt een object gemaakt dat behoort tot de klasse nltk.stem.porter.PorterStemmer.
  • Verder hebben we het een voor een doorgegeven aan PorterStemmer met behulp van de "for" -lus. Ten slotte kregen we het uitgangswoord van elk woord dat in de lijst wordt genoemd.

Uit de bovenstaande uitleg kan ook worden geconcludeerd dat staming wordt beschouwd als een belangrijke voorbewerkingsstap omdat het redundantie in de gegevens en variaties in hetzelfde woord verwijderde. Als gevolg hiervan worden gegevens gefilterd, wat zal helpen bij een betere machinetraining.

Nu geven we een volledige zin door en controleren we het gedrag ervan als uitvoer.

Programma:

from nltk.stem import PorterStemmerfrom nltk.tokenize import sent_tokenize, word_tokenizesentence="Hallo Guru99, je moet een hele goede site bouwen en ik bezoek je site graag."words = word_tokenize(sentence)ps = PorterStemmer()for w in words: rootWord=ps.stem(w)print(rootWord)

Uitgang:

Hallologuru99, je hebt een geweldige site gebouwd en ik bezoek onze site graag

Stemmen en lemmatiseren in Python NLTK met voorbeelden (2)

Code Uitleg:

  • Pakket PorterStemer wordt geïmporteerd uit modulestam
  • Pakketten voor tokenisatie van zinnen en woorden worden geïmporteerd
  • Er wordt een zin geschreven die in de volgende stap moet worden getokeniseerd.
  • Woordtokenisatie die voortkomt uit lemmatisering wordt in deze stap geïmplementeerd.
  • Hier wordt een object voor PorterStemmer gemaakt.
  • De lus wordt uitgevoerd en de stam van elk woord wordt gedaan met behulp van het object dat is gemaakt in de coderegel 5

Conclusie:

Stemming is een module voor het voorbewerken van gegevens. De Engelse taal heeft veel variaties op een enkel woord. Deze variaties creëren dubbelzinnigheid in training en voorspelling van machine learning. Om een ​​succesvol model te creëren, is het van vitaal belang om dergelijke woorden te filteren en te converteren naar hetzelfde type sequentiegegevens met behulp van stamgegevens. Dit is ook een belangrijke techniek om rijgegevens uit een reeks zinnen te halen en overtollige gegevens te verwijderen, ook wel normalisatie genoemd.

Wat is lemmatisering?

Lemmatiseringin NLTK is het algoritmische proces van het vinden van het lemma van een woord, afhankelijk van de betekenis en context. Lemmatisering verwijst meestal naar de morfologische analyse van woorden, met als doel verbuigingsuitgangen te verwijderen. Het helpt bij het retourneren van de basis- of woordenboekvorm van een woord dat bekend staat als het lemma.

De NLTK Lemmatiseringsmethode is gebaseerd op de ingebouwde morph-functie van WorldNet. Tekstvoorbewerking omvat zowel stamrecht als lemmatisering. Veel mensen vinden de twee termen verwarrend. Sommigen behandelen deze als hetzelfde, maar er is een verschil tussen stammen versus lemmatisering. Lemmatisering heeft de voorkeur boven het eerste vanwege de onderstaande reden.

Waarom is Lemmatisering beter dan Stemming?

Het stamalgoritme werkt door het achtervoegsel uit het woord te knippen. In bredere zin snijdt het begin of het einde van het woord.

Integendeel, Lemmatisering is een krachtigere operatie en houdt rekening met morfologische analyse van de woorden. Het geeft het lemma terug dat de basisvorm is van al zijn verbuigingsvormen. Diepgaande taalkennis is vereist om woordenboeken te maken en de juiste vorm van het woord te zoeken. Stammen is een algemene bewerking terwijl lemmatisering een intelligente bewerking is waarbij de juiste vorm in het woordenboek wordt gezocht. Daarom helpt lemmatisering bij het vormen van betere machine learning-functies.

Code om onderscheid te maken tussen Lemmatisering en Stemming

Stamcode:

import nltkfrom nltk.stem.porter import PorterStemmerporter_stemmer = PorterStemmer()text = "studies bestuderen huilen huilen"tokenization = nltk.word_tokenize(text)for w in tokenization:print("Stemming voor {} is {}".format(w, porter_stemmer.stem(w)))

Uitgang::

Stemming voor studies is studiStemming voor studie is studiStemming voor huilen is criStemming voor huilen is cri

Lemmatiseringscode:

import nltkfrom nltk.stem import WordNetLemmatizerwordnet_lemmatizer = WordNetLemmatizer()text = "studies bestuderen huilen huilen"tokenization = nltk.word_tokenize(text) for w in tokenization:print("Lemma voor {} is {}".format(w, wordnet_lemmatizer. lemmatiseren(w)))

Uitgang:

Lemma voor studeren is studerenLemma voor studeren is studerenLemma voor huilen is huilenLemma voor huilen is huilen

Bespreking van uitvoer

Als je kijkt naar studeren en studeren, is de uitvoer hetzelfde (studi), maar NLTK-lemmatizer biedt een ander lemma voor zowel tokens studeren voor studeren als studeren voor studeren. Dus als we functies moeten instellen om de machine te trainen, zou het geweldig zijn als lemmatisering de voorkeur heeft.

Gebruik Case van Lemmatizer

Lemmatizer minimaliseert tekstambiguïteit. Voorbeeldwoorden als fiets of fietsen worden omgezet in het basiswoord fiets. Kortom, het converteert alle woorden met dezelfde betekenis maar met een andere weergave naar hun basisvorm. Het vermindert de woorddichtheid in de gegeven tekst en helpt bij het voorbereiden van de juiste functies voor het trainen van de machine. Hoe schoner de gegevens, hoe intelligenter en nauwkeuriger uw machine learning-model zal zijn. NLTK Lemmatizer bespaart ook geheugen en rekenkosten.

Realtime voorbeeld van het gebruik van Wordnet-lemmatisering en POS-tagging in Python

uit nltk.corpus importeer wordnet als wnuit nltk.stem.wordnet importeer WordNetLemmatizeruit nltk import word_tokenize, pos_taguit collecties import defaultdicttag_map = defaultdict(lambda : wn.NOUN)tag_map['J'] = wn.ADJtag_map['V'] = wn. VERBtag_map['R'] = wn.ADVtext = "guru99 is een totaal nieuw soort leerervaring."tokens = word_tokenize(text)lemma_function = WordNetLemmatizer()voor token, tag in pos_tag(tokens):lemma = lemma_function.lemmatize( token, tag_map[tag[0]])print(token, "=>", lemma)

Stemmen en lemmatiseren in Python NLTK met voorbeelden (3)

Code Uitleg

  • Eerst wordt de corpuslezer wordnet geïmporteerd.
  • WordNetLemmatizer is geïmporteerd uit wordnet.
  • Word-tokenize en delen van spraak-tags worden geïmporteerd uit nltk.
  • Standaardwoordenboek wordt geïmporteerd uit collecties.
  • Er wordt een woordenboek gemaakt waarbij pos_tag (eerste letter) de sleutelwaarden zijn waarvan de waarden worden toegewezen aan de waarde uit het wordnet-woordenboek. We hebben de enige eerste letter genomen, omdat we die later in de lus zullen gebruiken.
  • Tekst is geschreven en is tokenized.
  • Er wordt een object lemma_function gemaakt dat binnen de lus zal worden gebruikt.
  • Loop wordt uitgevoerd en lemmatize heeft twee argumenten nodig, één is een token en de andere is een afbeelding van pos_tag met wordnet-waarde.

Uitgang:

guru99 => guru99is => betotaal => totaalnieuw => nieuwe soort => soort van => leren => leerervaring => ervaring. => .

Python Lemmatisering heeft een nauwe relatie metwordnet woordenboek, dus het is essentieel om dit onderwerp te bestuderen, dus houden we dit als het volgende onderwerp.

Je houdt misschien van:

  • NLTK Tokenize: woorden en zinnen Tokenizer met voorbeeld
  • POS-tagging met NLTK en Chunking in NLP [VOORBEELDEN]
  • Seq2seq (reeks tot reeks) model met PyTorch
  • Zelfstudie over natuurlijke taalverwerking: wat is NLP? Voorbeelden

References

Top Articles
Latest Posts
Article information

Author: Roderick King

Last Updated: 09/13/2023

Views: 5447

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Roderick King

Birthday: 1997-10-09

Address: 3782 Madge Knoll, East Dudley, MA 63913

Phone: +2521695290067

Job: Customer Sales Coordinator

Hobby: Gunsmithing, Embroidery, Parkour, Kitesurfing, Rock climbing, Sand art, Beekeeping

Introduction: My name is Roderick King, I am a cute, splendid, excited, perfect, gentle, funny, vivacious person who loves writing and wants to share my knowledge and understanding with you.