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ö:
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()))
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ää.
string.punctuation
palauttaa merkkijonon, joka sisältää kaikki välimerkit.
Välimerkkien poistaminen käyttämällä säännölliset lausekkeet:
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))
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
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()]))
"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.
Lemmatisoi koko tietojoukko.
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)
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()
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/
- "
- &
- Meistä
- Kaikki
- analyysi
- noin
- artikkeli
- artikkelit
- saatavissa
- Sanapussi
- Perusasiat
- blogit
- soittaa
- mahdollisuudet
- muuttaa
- Siivous
- pilvi
- koodi
- Koodaus
- kommentit
- Tietojenkäsittelyoppi
- tietokoneet
- tiedot
- tietojen analysointi
- syvä oppiminen
- eri
- ei
- Pudota
- tehokkuus
- Englanti
- jne.
- evoluutio
- Etunimi
- Korjata
- seurata
- tuottaa
- saada
- auttaa
- auttaa
- historia
- Koti
- HTTPS
- ajatus
- tärkeä
- parantaminen
- henkilökohtainen
- tiedot
- IT
- pito
- Keras
- avain
- Kieli
- kannettava tietokone
- OPPIA
- oppiminen
- lemmatisaatio
- Kirjasto
- koneoppiminen
- Tekeminen
- keskikokoinen
- malli
- lisää
- NLP
- Maksaa
- Suosittu
- ennustus
- tarjoaa
- Python
- raaka
- raakadata
- Lukeminen
- vähentää
- korvata
- tulokset
- Tuotto
- Arvostelut
- säännöt
- tiede
- Sarjat
- setti
- Koko
- So
- Tila
- Alkaa
- pysyä
- Varsi
- puhuminen
- tekniikat
- tensorflow
- yhdessä
- tokenization
- Aiheet
- koulutus
- opetusohjelmat
- us
- yleensä
- arvo
- sanoja
- toimii
- X
- nolla-