NLP-opetusohjelmat, osa I perusteista eteenpäin

Lähdesolmu: 1581227

Olen päättänyt kirjoittaa sarjan artikkeleita, joissa selitetään kaikki NLP:n peruskäsitteet pythonin avulla. Joten jos haluat oppia NLP:tä lukemalla ja koodaamalla, tämä on täydellinen artikkelisarja sinulle.

Jokainen uusi tai nolla NLP:ssä voi aloittaa kanssamme ja seurata tätä artikkelisarjaa.

Käytetyt kirjastot: Keras, Tensorflow, Scikit learning, NLTK, Glove jne.

Kaikki aiheet selitetään käyttämällä python-koodeja ja suosittuja syväoppimis- ja koneoppimiskehyksiä, kuten sci-kit learning, Keras ja TensorFlow.

Mikä on NLP?

Natural Language Processing on osa tietojenkäsittelytiedettä, jonka avulla tietokoneet voivat ymmärtää kieltä luonnollisesti ihmisen tavoin. Tämä tarkoittaa, että kannettava tietokone ymmärtää tunteet, puheen, vastaa kysymyksiin, tekstin yhteenvedon jne. Emme puhu paljon sen historiasta ja kehityksestä. Jos olet kiinnostunut, valitse tämä linkki.

Vaihe 1 Tietojen puhdistus

Raakatekstidata tulee heti sen jälkeen, kun eri lähteitä ei ole puhdistettu. Käytämme useita vaiheita tietojen puhdistamiseksi. Puhdistamaton tekstidata sisältää hyödytöntä tietoa, joka poikkeaa tuloksista, joten tietojen puhdistaminen on aina ensimmäinen askel. Joitakin tavallisia esikäsittelytekniikoita tulisi soveltaa tietojen puhdistamiseksi. Puhdistetut tiedot estävät myös mallien ylisovittamisen.

Tässä artikkelissa näemme seuraavat tekstinkäsittelyn ja tutkivan data-analyysin aiheet.

Muunnan raakatekstidataa pandadatakehykseksi ja teen erilaisia ​​tiedonpuhdistustekniikoita.

import pandas as pd text = ['Tämä on ABhishek Jaiswalin kirjoittama NLP TASKS -ARTIKKELI** ','Tässä artikkelissa selitän erilaisia ​​TIETOJEN PUHDISTUStekniikoita', 'Joten pysy kuulolla lisää &&','Nah En usko, että hän käy meille, hän asuu noin'] df = pd.DataFrame({'text':text})

lähtö:

Tietojen puhdistus | NLP opetusohjelmat
                                                                                  Lähde: Paikallinen

Matala

Menetelmä lower()muuntaa kaikki isot kirjaimet pieniksi ja palauttaa.

Hakeminen lower() menetelmä lambda-funktiolla

df['lower'] = df['teksti'].apply(lambda x: " ".join(x.lower() for x x.split()))
Pienet kirjaimet | NLP opetusohjelmat
                                                                                           Lähde: Paikallinen

Välimerkkien poisto 

Poistetaan välimerkkejä (*,&,%#@#()) on ratkaiseva askel, koska välimerkit eivät lisää tietoja tai lisäarvoa tietoihimme. Tästä syystä välimerkkien poistaminen pienentää tiedon kokoa; siksi se parantaa laskennan tehokkuutta.

Tämä vaihe voidaan tehdä käyttämällä Regex- tai Replace-menetelmää.

Välimerkkien poisto
                                                                                                 Lähde: Paikallinen

string.punctuation palauttaa merkkijonon, joka sisältää kaikki välimerkit.

Välimerkit | NLP opetusohjelmat
                                                                                               Lähde: Paikallinen

Välimerkkien poistaminen käyttämällä säännölliset lausekkeet:

Välimerkkien poistaminen
                                                                                                 Lähde: Paikallinen

Lopeta sanojen poistaminen

Sanat, joita esiintyy usein lauseissa ja joilla ei ole merkittävää merkitystä lauseissa. Nämä eivät ole tärkeitä ennustamisen kannalta, joten poistamme pysäytyssanat tietojen koon pienentämiseksi ja ylisovituksen estämiseksi. Huomautus: Ennen kuin suodatat pysäytyssanat, varmista, että kirjoitat tiedot pienillä kirjaimilla, koska pysäytyssanamme ovat pieniä.

NLTK-kirjaston avulla voimme suodattaa pysäytyssanat pois tietojoukosta.

# !pip install nltk tuonti nltk nltk.download('stopwords') from nltk.corpus import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() jos en kaikissa pääsanoissa))
Lopeta sanojen poistaminen
                                                                                          Lähde: Paikallinen

Oikeinkirjoituksen korjaus

Useimmissa asiakasarvosteluissa, blogeissa tai twiiteissä poimituissa tekstitiedoissa on kirjoitusvirheitä.

Kirjoitusvirheiden korjaaminen parantaa mallin tarkkuutta.

Kirjoitusvirheiden korjaamiseen on useita kirjastoja, mutta kätevin tapa on käyttää tekstiblobia.

Menetelmä correct() toimii tekstiblob-objektien kanssa ja korjaa kirjoitusvirheet.

#Asenna textblob-kirjasto !pip asenna textblob textblob-tuonnista TextBlob
Oikeinkirjoituksen korjaus
                                                                        Lähde: Paikallinen

tokenization

Tokenointi tarkoittaa tekstin jakamista merkityksellisiin yksikkösanoihin. On olemassa lauseiden tokenisoijia sekä sanamerkkejä.

Lausetunniste jakaa kappaleen merkityksellisiksi lauseiksi, kun taas sanatunniste jakaa lauseen merkityksellisiksi sanoiksi. Monet kirjastot voivat suorittaa tokenoinnin, kuten SpaCy, NLTK ja TextBlob.

Lauseen jakaminen avaruuteen yksittäisten yksikkösanojen saamiseksi voidaan ymmärtää tokenisoinniksi.

import nltk mystring = "Lempieläimeni on kissa" nltk.word_tokenize(mystring)
mystring.split(" ")

lähtö:

['Minun', 'suosikki', 'eläin', 'on', 'kissa']

Sanan vartalo

Varsinaisuus on sanojen muuntamista juurisanaksi käyttämällä tiettyjä sääntöjä merkityksestä riippumatta. Eli

  • "kalat", "kalat" ja "kalastus" johdetaan "kaloiksi".
  • "pelaaminen", "pelattu", "toistot" johdetaan "leikkiin".
  • Varsinainen sanasto vähentää sanastoa ja parantaa siten tarkkuutta.

Yksinkertaisin tapa tehdä varsijohdinta on käyttää NLTK:ta tai TextBlob-kirjastoa.

NLTK tarjoaa erilaisia ​​varsitekniikoita, kuten Snowball, PorterStemmer; eri tekniikka noudattaa erilaisia ​​sääntöjä muuttaakseen sanat juurisanaksi.

tuonti nltk osoitteesta nltk.stem tuonti PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(sana) sanalle x.split()]))
Sanan vartalo
Lähde: paikallinen

"artikkeli" johdetaan sanoista "articl","lives"-->"live".

perusmuotoistaminen

Lemmatisaatio tarkoittaa sanojen muuntamista juurisanaksi sanastokartoituksen avulla. Lemmatisaatio tehdään puheosan ja sen merkityksen avulla; joten se ei tuota merkityksettömiä juurisanoja. Mutta lemmatisaatio on hitaampaa kuin varsinainen.

  • "hyvä, ""paremmin, "Tai"parhaat" on lemmatisoitu ""hyvä".
  • Lemmatisointi muuntaa kaikki synonyymit yhdeksi juurisanaksi. eli "auto","auto"" kuorma-auto"" ajoneuvot” on lemmatoitu ”autoksi”.
  • Lemmatisaatio tuottaa yleensä parempia tuloksia.

Eli. leafs Johti siihen. lehdet nousivat leav vaikka leafs , leaves lemmatisoitu leaf

Lemmatisointi voidaan tehdä käyttämällä NLTK:ta, TextBlob-kirjastoa.

Lemmatisaatio
                                                                                                 Lähde: paikallinen

Lemmatisoi koko tietojoukko.

Lemmatisointi 2 | NLP opetusohjelmat
                                                                                                   Lähde: paikallinen

Vaihe 2 Tutkimustietojen analyysi

Toistaiseksi olemme nähneet erilaisia ​​tekstin esikäsittelytekniikoita, jotka on tehtävä raakatietojen saamisen jälkeen. Tietojemme puhdistamisen jälkeen voimme nyt suorittaa tutkivaa data-analyysiä sekä tutkia ja ymmärtää tekstidataa.

Sanataajuus tiedoissa

Ainutlaatuisten sanojen laskeminen tiedoissamme antaa käsityksen tietojemme yleisimmistä ja vähiten esiintyvistä termeistä. Usein jätämme pois harvemmin esiintyvät kommentit tehdäksemme mallikoulutuksestamme yleisemmän.

nltk tarjoaa Freq_dist luokassa sanojen tiheyden laskemiseen, ja syötteeksi tarvitaan pussillinen sanoja.

all_words = [] lauseelle df:ssä ['käsitelty']: all_words.extend(sentence.split())

all_words Sisällytä kaikki tietoaineistossamme saatavilla olevat sanat. Kutsumme sitä usein sanastoksi.

tuonti nltk nltk.Freq_dist(all_words)
Sanataajuus tiedoissa
                                                                                                 Lähde: Paikallinen

Tämä näyttää sanan avaimena ja esiintymien lukumäärän tiedoissamme arvona.

Sanapilvi

Wordcloud on kuvallinen esitys tietojoukon sanataajuudesta. WordCloud on helpompi ymmärtää ja antaa paremman käsityksen tekstitiedoistamme.

- kirjasto wordcloud Luodaan sanapilvi muutamalla koodirivillä.

kirjastojen tuonti:

Wordcloudista tuonti WordCloud wordcloudista tuonti STOPWORDS tuonti matplotlib.pyplot muodossa plt

Voimme piirtää sanapilven käyttämällä tekstiä, joka sisältää kaikki tietomme sanat.

sanat = [] viestille df:ssä ['käsitelty']: words.extend([sana sanasta viestissä.split() jos sana ei ole STOPWORDSissa]) wordcloud = WordCloud(leveys = 1000, korkeus = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
Sanapilvi | NLP opetusohjelmat
                                                             Lähde: Paikallinen
  • background_color = 'white' Tällä parametrilla voimme muuttaa sanapilven taustaväriä.
  • collocations = False Jos pidät sen vääränä, kollokaatiosanat huomioidaan. Kollokaatiot ovat sanoja, jotka muodostuvat yhdessä esiintyvistä sanoista. Eli huomio, kotityöt jne.
  • Voimme säätää korkeutta ja leveyttä parametrien avulla.

Huomautuksia : Ennen kuin teet sanapilven, poista aina pysäytyssanat.

Loppuhuomautukset

Tässä artikkelissa näimme erilaisia ​​tarvittavia tekniikoita tekstitietojen esikäsittelyyn. Tietojen puhdistuksen jälkeen suoritimme tutkivan data-analyysin sanapilven avulla ja loimme sanataajuuden.

Tämän sarjan toisessa artikkelissa opimme seuraavat aiheet:

Lähde: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

Aikaleima:

Lisää aiheesta Analyysi Vidhya