See artikkel avaldati osana Andmeteaduse ajaveebi
See artikkel algab loomuliku keele töötlemise (NLP) põhitõdede käsitlemisega ja hiljem demonstreeritakse automaatse masinõppe (AutoML) kasutamist, et luua mudeleid tekstiandmete sentimentide ennustamiseks. Muud NLP rakendused on tõlkimiseks, kõnetuvastuseks, vestlusrobotiks, ja nii edasi Võib-olla arvate, et see artikkel on üldine, kuna Internetis on palju NLP-õpetusi ja tundeanalüüse. Kuid see artikkel püüab näidata midagi muud. See demonstreerib AutoKerase kasutamist AutoML-ina, et luua sügavat õpet teksti, eriti sentimentide ja emotsioonide ennustamiseks. Kuid enne seda käsitleme lühidalt põhilist NLP-d, kuna see toetab teksti sentimentide ennustamist.
See artikkel käsitleb järgmisi teemasid:
- Regulaaravaldis
- Sõna märgistamine
- Nimega üksuse tunnustamine
- Tüvestamine ja lemmatiseerimine
- Sõnapilv
- Sõnade kott (BoW)
- Terminite sagedus – dokumendi pöördsagedus (TF-IDF)
- Sentimentide analüüs
- Teksti regressioon (automaatne masinõpe ja süvaõpe)
- Teksti klassifikatsioon (automaatne süvaõpe)
NLP eesmärk on tekstiandmete mõtestamine. Andmeteaduses tavaliselt analüüsitavate tekstiandmete näited on toodete ülevaated, sotsiaalmeedia postitused, dokumendid, ja nii edasi Erinevalt arvandmetest ei saa tekstiandmeid kirjeldava statistikaga analüüsida. Kui meil on tootehindade andmete loend, mis sisaldab 1000 numbrit, saame üldistest hindade andmetest aru, uurides keskmist, mediaani, standardhälvet, kastgraafikut ja muid tehnikaid. Me ei pea kõiki numbreid lugema, et neist aru saada.
Kui meil on tuhandeid tekste, mis käsitlevad e-kaubanduse veebipoe tooteid, siis kuidas me teame, mida arvustused ütlevad, ilma neid kõiki lugemata. NLP abil saab neid tekstiülevaateid tõlgendada rahuloluhinnanguks, emotsiooniks, ja nii edasi Seda nimetatakse sentimentanalüüsiks. Masinõppe mudelid on loodud selleks, et ennustada teksti sentimenti.
Enne tundeanalüüsi juurde asumist alustab see artikkel NLP põhitõdedest, nagu regulaaravaldis, sõnade märgistamine, kuni sõnade kottideni ja sellest, kuidas need tundeanalüüsi aitavad. Siin on Pythoni märkmik, mis toetab seda artiklit.
Regular Expression
Regulaaravaldis (RegEx) on muster ühe või mitme lause või sõna sobitamiseks, otsimiseks, leidmiseks või tükeldamiseks. Järgmine kood on näide 6 RegEx-rea kasutamisest sama lause vastendamiseks. RegEx w+, d+, s, [az]+, [AZ]+, (w+|d+) sisaldab vastavalt sõna, numbri, tühiku, väikese tähestiku, suure tähestiku ja numbri otsimiseks vajalikku koodi. Re.match tagastab vastava teksti kindla mustriga teksti esimese sõna kohta. Sel juhul on see sõna "The".
import re text = 'Ahvid söövad puu otsas 7 banaani!' print(re.match('w+', text)) # word print(re.match('d+', text)) # digit print(re.match('s', text)) # space print(re.match ('[az]+', tekst)) # tähestikutrükk(re.match('[AZ]+', tekst)) # suurte tähtedega tähestik(re.match('(w+|d+)', text)) # sõna või number
Väljund:
Puudub Puudub Pole
Pange tähele, et teine, kolmas ja neljas tagastavad väärtuse "Puudub", kuna sõna "The" ei alga numbri, tühiku ja väikese tähestikuga.
RegEx re.search otsib esimest teksti vastavalt mustrile. Erinevalt re.matchist, mis kontrollib ainult teksti esimest sõna, suudab re.search tuvastada tekstis esimese sõna järel olevad sõnad.
print(re.search('w+', text)) # word print(re.search('d+', text)) # digit print(re.search('s', text)) # space print(re.search ('[az]+', tekst)) # väiketähtedega tähestik (re.search('[az]', tekst)) # väiketähtedega tähestik (re.search('[AZ]+', tekst)) # suurtähtedega tähestik(re.search('(w+|d+)', text)) # sõna või number
Väljund
Selle asemel, et sobitada ainult teksti algust, leiab re.findall tekstist kogu RegExi mustri ja salvestab need loendisse.
print(re.findall('w+', text)) # word print(re.findall('d+', text)) # digit print(re.findall('s', text)) # space print(re.findall ('[az]+', tekst)) # väiketähtedega tähestik(re.findall('[az]', tekst)) # väiketähtedega tähestik(re.findall('[AZ]+', tekst)) # suurte tähtedega tähestik(re.findall('(w+|d+)', text)) # sõna või number
Väljund:
['Ahvid', 'on', 'söövad', '7', 'banaanid', 'sees', 'the', 'puu'] ['7'] [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] ["ta", "ahvid", "on", "söömine", "banaanid", "sees", "the", "puu"] ["h", "e", "m", "o", "n", "k", "e", "y", "s", "a", "r", "e", " e', 'a', 't', 'i', 'n', 'g', 'b', 'a', 'n', 'a', 'n', 'a', 's' , 'o', 'n', 't', 'h', 'e', 't', 'r', 'e', 'e'] ['T'] ["The", "ahvid" , 'are', 'söömine', '7', 'banaanid', 'sees', 'the', 'puu']
re.split otsib kogu tekstist RegEx-mustrit ja jagab teksti Reguleerimismustri alusel stringide loendiks.
print(re.split('w+', text)) # word print(re.split('d+', text)) # number print(re.split('s', text)) # space print(re.split ('[az]+', tekst)) # väiketähtedega tähestik(re.split('[AZ]+', tekst)) # suurte tähtedega tähestikutrükk(re.split('(w+|d+)', tekst )) # sõna või number
Väljund:
['', ' ', ' ', ' ', ' ', ' ', ' ', ', ' ', '!'] ['Ahvid söövad', 'banaanid puu otsas!'] [' "Ahvid", "on", "söövad", "7", "banaanid", "sees", "the", "puu!"] ["T", "", "", ' 7 ', ' ', ' ', ' ', '!'] ['', 'ta ahvid söövad puu otsas 7 banaani!'] ['', 'Ahvid', ' ', 'ahvid', ' ', 'kas', ' ', 'sööb', ' ', '7', ' ', 'banaanid', ' ', 'sees', ' ', ', ' ', 'puu', '! ']
Sõna märgistamine
Uurida on veel palju RegExi mustreid, kuid see artikkel jätkab sõnade märgistamist. Sõna tokeniseerimine jagab laused sõnadeks. Allolev kood näitab, kuidas seda tehakse. Kas saate öelda, milline ülaltoodud RegEx-kood võib sama teha?
import nltk saidilt nltk.tokenize import word_tokenize, send_tokenize word_tokenize(text)
Väljund:
["The", "ahvid", "on", "söövad", "7", "banaanid", "sees", "the", "puu", "!"]
Lisaks sõna tokeniseerimisele saame teostada ka lause tokeniseerimist.
text2 = 'Ahvid söövad puu otsas 7 banaani! Puule jääb hiljem alles vaid 5 banaani. Üks ahv hüppab teise puu otsa. sent_tokenize(text2)
Väljund:
['Ahvid söövad puu otsas 7 banaani!', 'Hiljem jääb puule ainult 5 banaani.', 'Üks ahv hüppab teisele puule.']
Nimega olemite äratundmine (NER)
Pärast sõna tokeniseerimine saame sellele rakendada NER-i. NER tuvastab, milline üksus on iga sõna. Vaadake altpoolt näidet selle kohta, kuidas nltk-i pos_tagit kasutatakse NER-i teostamiseks.
text_tag = word_tokenize(text2) nltk.pos_tag(text_tag)
Väljund:
[('The', 'DT'), ('ahvid', 'NNS'), ('are', 'VBP'), ('söömine', 'VBG'), ('7', 'CD') , ('banaanid', 'NNS'), ('sees', 'IN'), ('the', 'DT'), ('puu', 'NN'), ('!', '.') , ('The', 'DT'), ('puu', 'NN'), ('will', 'MD'), ('only', 'RB'), ('have', 'VB') , ('5', 'CD'), ('banaanid', 'NNS'), ('left', 'VBD'), ('hiljem', 'RB'), ('.', '.') , ('Üks', 'CD'), ('ahv', 'NN'), ('is', 'VBZ'), ('hüppab', 'VBG'), ('kuni', 'TO') , ('teine', 'DT'), ('puu', 'NN'), ('.', '.')]
Kus, DT = määraja, NNS = mitmuse nimisõna, VBP = tegusõna mitte-3. isiku ainsuse oleviku jaoks, VBG = gerund / olevikuosaline tegusõna, CD = põhiline number, IN = eessõna / alluv sidesõna, NN = nimisõna, MD = modaalverb , RB = määrsõna, VB = põhivorm verb jne.
Teine viis NER-i teostamiseks on ruumipaketi kasutamine. Vaadake järgmist näidet selle kohta, kuidas ruumis identifitseerib iga sõna lemmatisatsioon, PoS, silt, dep, kuju, kas see on tähestik ja kas see on stoppsõna. Lemmatiseerimisest räägime hiljem. PoS ja silt määratlevad kõneosa, nagu määraja, nimisõna, abitegusõna, arv, ja nii edasi "dep" näitab sõna sõltuvused. "Shape" näitab sõna tähti X ja x vastavalt suure ja väikese suurtähe jaoks. "on_alphabet" ja "on_stop_words" näitavad, kas sõna on vastavalt tähestik või lõppsõna.
import spacy spa = spacy.load("en_core_web_sm") spa_text = spa(tekst) print('tekst' + 't' + 'lemmatiseeritud' + 't' + 'PoS' + 't' + 'silt' + 't ' + 'dep' + 't' + 'kuju' + 't' + 'on_alphabet' + 't' + 'on_stop_words') sõna jaoks spa_tekstis: print(sõna.tekst + 't' + sõna.lemma_ + ' tt' + sõna.pos_ + 't' + sõna.märgend_ + 't' + sõna.dep_ + 't' + sõna.kuju_ + 't' + str(sõna.on_alfa) + 'tt' + str(sõna. on_peatus))
Väljund:
tekst lemmatiseeritud PoS silt dep shape is_alphabet is_stop_words The DET DT det Xxx Tõene Tõelised ahvid ahvid NOUN NNS nsubj xxxx Tõene Väär on be AUX VBP aux xxx Tõeline Tõeline söömine Söö VERB VBG ROOT xxxx Tõeline NUM Falsemod7 Tõene NUM Falsemod7 NIMEsõna NNS dobj xxxx Tõene Väär sees ADP IN ettevalmistamisel xx Tõene Tõene DET DT det xxx Tõene Tõene puupuu NIMEsõna NN pobj xxxx Tõene Väär! ! PUNCT . punkt ! Vale Vale
Tüvestamine ja lemmatiseerimine
Tüvestamine ja lemmatiseerimine tagastavad sõna selle lihtsama tüvivormi. Nii tüvestamine kui ka lemmatiseerimine on üksteisega sarnased. Erinevuse mõistmiseks järgige järgmist koodi. Siin rakendame sõnale "uuringud" tüvest ja lemmatiseerimist ning need annavad erinevaid väljundeid. Stemming tagastab sõna "studi" kui "uuringute" tüvivormi. Lemmatiseerimine tagastab "uuringu" kui "uuringute" tüvivormi. Lemmatiseerimisega tagastatud tüvivormil on tähendus. Tüve tüvivormil pole mõnikord tähendust. Sõna "studi" tuletatud sõnast ei oma tähendust. Sõnast "uuringud" ei saa tüvest tulenev täht "i" muuta.
# Tuleneb nltk.stem impordist PorterStemmer print(PorterStemmer().stem('studies'))
# Lemmatiseerimine saidilt nltk.stem import WordNetLemmatizer print(WordNetLemmatizer().lemmatize('uuringud'))
Väljund:
studi uuring
Word Cloud
Selle harjutuse jaoks kavatseme kasutada naisterõivaste ülevaated e-kaubanduse andmestikust. Andmestik sisaldab tekstiülevaateid ja hinnanguskoori 1–5. Nüüd püüame mõista, mida 23,486 23,486 arvustust ütlesid. Kui arvustused on arvulised, saame andmete jaotuse vaatamiseks kasutada kirjeldavat statistikat. Kuid arvustused on teksti kujul. Kuidas saada kiiresti kokkuvõte XNUMX XNUMX arvustuse tekstist? Nende ükshaaval lugemine ei ole tõhus lahendus.
Lihtne viis on sõnapilve joonistamine. Sõnapilv kuvab kogu andmestikust sageli leitud sõnu. Suurem kirjasuurus tähendab, et leitakse sagedamini.
visual_rev = WordCloud().generate(' '.join(data['Review Text'])) plt.figure(figsize=(8,8)) plt.imshow(visual_rev, interpolation='bilinear') plt.show( )
Sõnapilvest võime märgata, et arvustused räägivad kleidist, armastusest, suurusest, topist, kulumisest jne, kuna need on enimleitud sõnad. Iga sõna täpse sagedusnumbri kuvamiseks saame kasutada Counter(). Demonstreerime seda muutuja “text2” abil.
kogudest import Loendur Counter(word_tokenize(text2))
Väljund:
Counter({'The': 2, 'ahvid': 1, 'on': 1, 'söövad': 1, '7': 1, 'banaanid': 2, 'on': 1, 'the': 1 , 'puu': 3, '!': 1, 'tahab': 1, 'ainult': 1, 'on': 1, '5': 1, 'vasakul': 1, 'hiljem': 1, ' .': 2, 'üks': 1, 'ahv': 1, 'on': 1, 'hüppab': 1, 'kuni': 1, 'teine': 1})
Järgmine kood teeb sama, kuid see kutsub esile ainult 3 kõige levinumat sõna.
Counter(word_tokenize(text2)).most_common(3)
Väljund:
[('puu', 3), ('The', 2), ('banaanid', 2)]
Sõnakott (BoW)
Bag-of-Words teeb sarnast asja. See tagastab tabeli funktsioonidega, mis koosnevad arvustustes olevatest sõnadest. Rida sisaldab sõna sagedus. Järgmine kood rakendab naisterõivaste arvustuste andmestikule BOW. See loob andmeraami, mille funktsioonidena on märgistatud sõnad.
CountVectoriceris määrasin funktsioonide arvu piiramiseks väärtuseks max_features 100. “max_df” ja “min_df” määravad dokumentides märgistatud sõnade maksimaalse ja minimaalse ilmumise protsendi. Valitud märgistatud sõnad peaksid esinema rohkem kui 10% ja vähem kui 95% dokumentidest. Seda tehakse liiga harva ja liiga sageli esinevate sõnade valiku tühistamiseks. (1,2) "ngram_range" on seatud 1 sõna ja 2 järjestikuse sõna märgistamiseks (2-sõnaline jada või bigramm). See on oluline kahesõnaliste jadade tuvastamiseks, nagu "must mamba", "maakate", "pole õnnelik", "pole hea", jms. Pange tähele, et kasutatakse ka lemmatisaatorit ja regulaaravaldist.
# Filtreerige ridu veeruga data = dataset.loc[dataset['Review Text'].notnull(),:] # Rakenda uni- ja biggrammvektorit klass lemmatiseerija(objekt): def __init__(self): self.wnl = WordNetLemmatizer() def __call__(self, df): tagasta [self.wnl.lemmatize(word) sõna vastu in word_tokenize(df)] vectorizer = CountVectorizer(max_features=100, max_df=0.95, min_df=0.1, ngram_range=(1,2), tokeniser=lemmatizer(), väiketähed=tõene, stop_words='inglise keel', r'w+muster ') vectorizer.fit(data['Läbivaatamise tekst']) count_vector = vectorizer.transform(data['Ülevaatamise tekst']) # Muutke andmeraamiks bow = count_vector.toarray() bow = pd.DataFrame(bow, veerud=vectorizer.get_feature_names()) bow.head()
! | ilus | ... | tellitud | täiuslik | tõesti | jooks | suurus | väike | pehme | wa | kandma | töö | |
0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | ... | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 1 | 0 | ... | 1 | 0 | 1 | 0 | 1 | 3 | 0 | 3 | 0 | 1 |
3 | 2 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
4 | 3 | 0 | ... | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Terminite sagedus – dokumendi pöördsagedus (TF-IDF)
Sarnaselt BoW-ga loob TF-IDF ka tokeniseeritud sõnade funktsioonidega andmeraami. Kuid see püüab suurendada haruldasi termineid ja vähendada sagedasi termineid. See on kasulik, näiteks sõna "the" võib esineda mitu korda, kuid see pole see, mida me ootame, kuna sellel puudub sentimentaalne tendents. TF-IDF väärtused genereeritakse kolmes etapis. 3. samm, arvutage TF = terminite arv / sõnade arv. Näiteks rakendame neid 1 lauset:
1. Ahvid on väikesed. Pardid on ka väikesed.
2. Koomikud on näljas. Koomikud lähevad siis sööma.
3. Koomikutel on väikesed ahvid.
Termin | TF 1 | TF 2 | TF 3 |
the,en | 2/9 | 2/10 | 1/5 |
ahvid | 1/9 | 0/10 | 1/5 |
See on | 2/9 | 1/10 | 0/5 |
väike | 2/9 | 0/10 | 1/5 |
pardid | 1/9 | 0/10 | 0/5 |
koomikud | 0/9 | 2/10 | 1/5 |
näljane | 0/9 | 1/10 | 0/5 |
... | ... | ... | ... |
Esimene tekst sisaldab 9 sõna. Sellel on 2 sõna "the". Niisiis, sõna "the" TF 1-s on 2/9.
2. samm, IDF = logi (dokumentide arv / terminiga dokumentide arv)
Termin | IDF |
the,en | logi (3/3) |
ahvid | logi (3/2) |
See on | logi (3/2) |
väike | logi (3/2) |
pardid | logi (3/1) |
koomikud | logi (3/2) |
näljane | logi (3/1) |
... | ... |
Sõna "ahvid" esineb 2 korda kolmes dokumendis. Niisiis, IDF on log(3/3).
Samm 3 arvutage TF-IDF = TF * IDF
Termin | TF 1 | TF 2 | TF 3 | IDF | TF-IDF 1 | TF-IDF 2 | TF-IDF 3 |
the,en | 2/9 | 2/10 | 1/5 | logi (3/3) |
0.000 |
0.000 |
0.000 |
ahvid | 1/9 | 0/10 | 1/5 | logi (3/2) |
0.020 |
0.000 |
0.035 |
See on | 2/9 | 1/10 | 0/5 | logi (3/2) |
0.039 |
0.018 |
0.000 |
väike | 2/9 | 0/10 | 1/5 | logi (3/2) |
0.039 |
0.000 |
0.035 |
pardid | 1/9 | 0/10 | 0/5 | logi (3/1) |
0.053 |
0.000 |
0.000 |
koomikud | 0/9 | 2/10 | 1/5 | logi (3/2) |
0.000 |
0.035 |
0.035 |
näljane | 0/9 | 1/10 | 0/5 | logi (3/1) |
0.000 |
0.048 |
0.000 |
... | ... | ... | ... | ... | ... | ... | ... |
Siin on väljundtabel.
Termin | the,en | ahvid | See on | väike | pardid | koomikud | näljane | ... |
1 |
0.000 |
0.020 |
0.039 |
0.039 |
0.053 |
0.000 |
0.000 |
... |
2 |
0.000 |
0.000 |
0.018 |
0.000 |
0.000 |
0.035 |
0.048 |
... |
3 |
0.000 |
0.035 |
0.000 |
0.035 |
0.000 |
0.035 |
0.000 |
... |
Nüüd võrdleme seda alloleva BoW andmeraamiga. Bow andmeraami sõna "the" väärtused on vastavalt 2, 2 ja 1 teksti 1, 2 ja 3 jaoks. Teisest küljest on sama sõna väärtus 0 kõigi TF-IDF andmeraami kolme teksti jaoks. Seda seetõttu, et sõna "The" esineb kõigis kolmes tekstis. Seega on IDF null (log(3/3)). Sõnad "ahvid" ja "pardid" esinevad esimeses tekstis üks kord, kuid "pardid" on kõrgema väärtusega (3) võrreldes "ahvide" väärtusega (3) TF-IDF andmeraamis. Sõna "pardid" esineb kõigis dokumentides vähem kui "ahvid", seega tõstab see sõna "part" esile.
Tekst | the,en | ahvid | See on | väike | pardid | koomikud | näljane | ... |
1 |
2 |
1 |
2 |
2 |
1 |
0 |
0 |
... |
2 |
2 |
0 |
1 |
0 |
0 |
2 |
1 |
... |
3 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
... |
Siin on kood TF-IDF-i rakendamiseks naisterõivaste andmekogumile.
from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer(max_features=100) tfidf.fit(data['Arvustuse tekst']) tfidf_data = tfidf.transform(data['Arvusta teksti toarray(), veerud=tfidf.get_feature_names()) tfidf_data.head()
Väljund:
kõik | Ka | am | an | ja | See on | ... | will | koos | töö | oleks | sa | |
0 | 0.000000 | 0.0 | 0.000000 | 0.0 | 0.602589 | 0.0 | ... | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 |
1 | 0.000000 | 0.0 | 0.148418 | 0.0 | 0.133039 | 0.0 | ... | 0.0 | 0.000000 | 0.000000 | 0.307109 | 0.0 |
2 | 0.000000 | 0.0 | 0.000000 | 0.0 | 0.163130 | 0.0 | ... | 0.0 | 0.000000 | 0.163481 | 0.000000 | 0.0 |
3 | 0.000000 | 0.0 | 0.000000 | 0.0 | 0.142825 | 0.0 | ... | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 |
4 | 0.228419 | 0.0 | 0.000000 | 0.0 | 0.082899 | 0.0 | ... | 0.0 | 0.273455 | 0.000000 | 0.000000 | 0.0 |
Mis kasu on tekstist, mis on teisendatud BOW või TF-IDF andmeraamiks? See on väga oluline, kui tahame masinõpet tekstiandmetele rakendada. Masinõpe ei mõista teksti, seega tuleb tekst teisendada numbriliseks andmeraamiks. Masinõppe üks levinumaid kasutusviise teksti ennustamiseks on sentimentanalüüs. Sentimentanalüüs võib ennustada ülevaateteksti sentimenti. Selle asemel, et arvustusi ükshaaval lugeda, võib sentimentaalanalüüs teisendada teksti arvustuste rahuloluks.
Sentimentide analüüs
Sentimentanalüüsi saab käivitada TextBlobi abil või masinõppe mudeli koolitamisega. TextBlob ei vaja koolitust. See võib öelda arvustuste polaarsuse ja subjektiivsuse. Polaarsus on vahemikus 1 kuni -1, mis väljendab positiivset suhtumist negatiivsesse. Siin on kood tundeanalüüsi rakendamiseks tekstile2 = 'Ahvid söövad puu otsas 7 banaani! Puule jääb hiljem alles vaid 5 banaani. Üks ahv hüppab teise puu otsa.
tekstiblobist import TextBlob TextBlob(text2).sentiment
Väljund:
Sentiment (polaarsus = -0.0125, subjektiivsus = 0.25)
Nüüd vaatame, kuidas see naisterõivaste andmekogus töötab.
# Tekstiblobi sentiment def polaarsuse(t) rakendamine: a = TextBlob(t).sentiment return a[0] def Subjectivity(t): a = TextBlob(t).sentiment return a[1] data['polaarsus'] = data.apply(lambda t: polaarsus(t['Review Text']), axis=1) data['subjektiivsus'] = data.apply(lambda t: subjektiivsus(t['Review Text']), axis=1 ) data.head()
Väljund:
Vaadake tekst üle | Hinnang | polaarsus | subjektiivsus | |
0 | Täiesti imeline – siidine ja seksikas ja mugav… | 4 | 0.633333 | 0.933333 |
1 | Armasta seda kleiti! see on niii ilus. ma juhtun… | 5 | 0.339583 | 0.725000 |
2 | Mul olid selle kleidi suhtes nii suured lootused ja tõesti… | 3 | 0.073675 | 0.356294 |
3 | Ma armastan, armastan, armastan seda kombinesooni. see on lõbus, fl… | 5 | 0.550000 | 0.625000 |
4 | See särk on kõigile väga meelitav tänu… | 5 | 0.512891 | 0.568750 |
Ülaltoodud tabelis kuvatakse ülevaateteksti polaarsuse esimesed 5 rida. Uurige, kuidas "Review Text" sõnad tagastavad "polaarsuse". Samas andmestikus on rahuloluhinnangu andnud ka iga arvustaja funktsioonis „Hinnang”. "Reiting" on vahemikus 1 kuni 5. Allolev joonis kujutab iga reitinguklassi polaarsuse jaotust.
Joonis 2 Iga reitinguklassi polaarsuse jaotus (allikas: pilt autorilt)
seotud
- '
- 100
- 11
- 39
- 7
- 84
- 9
- absoluutne
- ADEelis
- algoritm
- algoritme
- Materjal: BPA ja flataatide vaba plastik
- eraldamine
- Tähestik
- analüüs
- analytics
- viha
- rakendused
- arhitektuur
- artikkel
- Automatiseeritud
- automatiseeritud masinõpe
- AVG
- Alused
- BEST
- võimendamine
- ehitama
- helistama
- kapital
- muutma
- chatbot
- Kontroll
- klassifikatsioon
- Riided
- Cloud
- kood
- Veerg
- ühine
- Arvutama
- segadus
- jätkama
- loomine
- andmed
- andmeteadus
- otsustuspuu
- sügav õpe
- Detection
- Arv
- mõõde
- dokumendid
- e-kaubandus
- Varajane
- sööma
- emotsioone
- Inseneriteadus
- Inglise
- Teostama
- eksport
- pere
- tunnusjoon
- FUNKTSIOONID
- Joonis
- leiab
- esimene
- sobima
- vorm
- formaat
- lõbu
- funktsioon
- Põhialused
- mäng
- Üldine
- Globaalne
- hea
- suunata
- siin
- Suur
- Esile tõstma
- ajalugu
- Kuidas
- Kuidas
- HTTPS
- Näljane
- identifitseerima
- IDF
- pilt
- importivate
- Kaasa arvatud
- indeks
- Internet
- IT
- keras
- Labels
- keel
- suur
- õppimine
- lemmatiseerimine
- nimekiri
- Nimekirjad
- koormus
- Pikk
- armastus
- masinõpe
- Makro
- Vastama
- maatriks
- Meedia
- Meetrika
- mudel
- film
- Loomulik keel
- Natural Language Processing
- võrk
- Neural
- Närvivõrgus
- nlp
- numbrid
- Internetis
- poe
- Muu
- Muster
- Maksma
- PoS
- Postitusi
- Täpsus
- ennustus
- Ennustused
- esitada
- Toode
- Toodet
- Python
- r2
- hinnangust
- RE
- Lugemine
- regressioon
- aru
- Vahendid
- REST
- Tulemused
- Tulu
- läbi
- Arvustused
- jooks
- jooksmine
- Skaala
- teadus
- Otsing
- väljavalitud
- tunne
- tunne
- Seeria
- komplekt
- lihtne
- SUURUS
- väike
- So
- sotsiaalmeedia
- Sotsiaalse meedia
- SPA
- Ruum
- Kõnetuvastus
- Kulutused
- jagada
- Sprint
- algus
- statistika
- vars
- salvestada
- uuringud
- edukas
- toetama
- Toetab
- rääkimine
- sihtmärk
- tensorivool
- test
- Mõtlemine
- aeg
- Tokeniseerimine
- ülemine
- Teemasid
- koolitus
- Tõlge
- õpetused
- Kasutajad
- väärtus
- nädal
- sõnad
- Töö
- töötab
- X
- null