Filme porno

Categorii

Advertising

Crearea unui TF-IDF in Python

De la zero in codul python

Sursa

Ca parte a unui interviu tehnic, mi s-a cerut sa implementez un pseudo cod TF-IDF in python. Avand in vedere experienta mea relativ noua cu biblioteca NLP, este suficient sa spun ca nu am facut o treaba excelenta explicandu-mi codul. Deci, pentru a ne asigura ca acest lucru nu se va mai intampla in viitor, sa facem asta aici.

Dar, inainte de toate acestea, cred ca este necesara o explicatie simpla a ceea ce reprezinta NLP:

NLP inseamna Prelucrarea limbajului natural. Nu trebuie confundat cu programarea neuro-lingvistica

Practic este vorba de o limba. Pentru programatori, computerul trebuie sa citeasca si sa inteleaga limbajul nostru vorbit si scris. NLP contine domenii in sine cunoscute sub numele de corpus (contine multe cuvinte / documente). Folosim biblioteca NLTK pentru a citi NLP.

Odata cu stabilirea acestei relatii simple, sa trecem la partea TF-IDF a postarii. TF-IDF inseamna Term Frequency- Inverse Term Frequency.

Array

Partile TF conteaza de cate ori a aparut un cuvant intr-un corpus dat. Deoarece un corpus este alcatuit din mai multe documente, fiecare document si cuvintele sale vor avea propriul numar TF. Partea IDF conteaza cat de rar apare un cuvant in cadrul unui document. Cu cat cuvantul este rar, cu atat va fi mai mare numarul / greutatea acestuia.

TF-IDF

Combinand TF cu IDF

Exista un exemplu minunat in Free Code Camp, pe care il vom folosi si ca exemplu:

Fraza 1: Masina este condusa pe drum.

Fraza 2: Camionul este condus pe autostrada.

Tabara Cod liber

Puteti face acest lucru si in Excel folosind functia jurnal. Dar aici vedem ca cuvintele unice, adica cuvintele care au aparut doar o singura data si numai intr-unul din documente, sunt ponderate foarte mult in comparatie cu cuvintele care au aparut de mai multe ori. Folosim TF pentru a numara cuvintele totale pe documente si folosim IDF pentru a defini cat de rare sunt fiecare cuvinte. Cu cat cuvintele sunt mai rare – masina, camion, drum, autostrada – cu atat sunt mai semnificative.

Acest lucru intra in joc atunci cand realizam o matrice rara. Intr-o matrice rara, majoritatea cuvintelor dintr-un corpus dat vor fi cuvinte obisnuite si nu vor juca niciun rol in determinarea diferentei dintre fiecare document. Cu toate acestea, atunci cand cuvintele sunt unice, acestea vor ajuta programul sa invete cum sa diferentieze fiecare document.

Pentru a face TF-IDF de la zero in python, avem nevoie de doi pasi separati. Mai intai trebuie sa cream functia TF pentru a calcula frecventa totala a cuvintelor pentru toate documentele. Iata codurile de mai jos:

#import biblioteci necesare

import panda ca pd import sklearn ca sk

import matematica (aceasta este doar pentru portiunea IDF) # incarcati exemplele noastre phrasesfirst = “Masina este condusa pe drum”

second = “Camionul este condus pe autostrada” # impartiti astfel incat fiecare cuvant sa aiba propriul sir

first = first.split (“”)

second = second.split (“”) # uniti-le pentru a elimina cuvintele comune duplicate

total = set (first) .union (set (second))

print ( total): {‘The’, ‘car’, ‘driven’, ‘highway’, ‘is’, ‘on’, ‘road’, ‘the’, ‘truck’} # Acum permite sa adaugam o modalitate de a numara cuvintele folosind o pereche cheie-valoare dictionar pentru ambele propozitii

wordDictA = dict.fromkeys (total, 0)

wordDictB = dict.fromkeys (total,0) pentru cuvant in primul:

cuvantDictA [cuvant] + = 1

pentru cuvant in al doilea:

cuvantDictB [cuvant] + = 1

# introduceti-le intr-un cadru de date si apoi vizualizati rezultatul:

pd.DataFrame ([wordDictA, wordDictB])

# Scrierea acum a functiei TF: def computeTF (wordDict, bow):

tfDict = {}

bowCount = len (bow)

for word, count in wordDict.items ():

tfDict [word] = count / float (bowCount)

return tfDict # ruland propozitiile noastre prin functia tf:

tfFirst = computeTF (wordDictA, first)

tfSecond = computeTF (wordDictB, second) #Converting to dataframe for visualization

tf_df = pd.DataFrame ([tfFirst, tfSecond])

Si acum, dupa ce am terminat sectiunea TF, trecem la partea IDF:

#creatia portiunii jurnal a tabelului Excel pe care am vazut-o mai devreme

def computeIDF (docList):

idfDict = {}

N = len (docList)

idfDict = dict.fromkeys (docList [0] .keys (), 0)

pentru doc ​​in docList:

pentru cuvant, val in doc.items ():

daca val> 0:

idfDict [cuvant] + = 1

pentru cuvant, val in idfDict.items ():

idfDict [cuvant] = math.log10 (N / float (val))

returneaza idfDict

#inputing our phrases in the log file

idfs = computeIDF ([wordDictA, wordDictB]) # Calculul real al TF * IDF din tabelul de mai sus:

def computeTFIDF (tfBow, idfs):

tfidf = {}

for word, val in tfBow. items ():

tfidf [word] = val * idfs [word]

return tfidf # ruleaza cele doua propozitii prin IDF:

idfFirst = computeTFIDF (tfFirst, idfs)

idfSecond = computeTFIDF (tfSecond, idfs) #putting it in a dataframe idf

= pd.DataFrame ([idfFirst, idfSecond])

Valorile IDF. Verificati daca se potriveste cu tabelul Excel de mai sus

A fost multa munca. Dar este util sa stiti, daca vi se cere sa codificati TF-IDF de la zero in viitor. Cu toate acestea, acest lucru se poate face mult mai simplu datorita bibliotecii sklearn. Sa vedem exemplul de mai jos:

# Primul pas este sa importati biblioteca

din sklearn.feature_extraction.text import TfidfVectorizer # pentru propozitie, asigurati-va ca toate cuvintele sunt minuscule sau ca veti da gres. pentru simplitate, tocmai am formulat aceeasi propozitie cu toate minuscule

firstV = “masina este condusa pe drum”

secondV = “camionul este condus pe autostrada” # apelarea TfidfVectorizer

vectorize = TfidfVectorizer () # potrivirea modelului si trecerea frazelor noastre imediat:

raspuns = vectorize.fit_transform ([firstV, secondV]) print (raspuns) (0, 6) .6043795515372431

(0, 0) .42471718586982765

(0, 3) .30218977576862155

(0, 1) .30218977576862155

(0, 4) .30218977576862155

( 0, 5) 0,42471718586982765

(1, 6) 0,6043795515372431

(1, 3) 0.30218977576862155

(1, 1) 0.30218977576862155

(1, 4) 0.30218977576862155

(1, 7) 0.42471718586982765

(1, 2) 0.42471718586982765

Daca potriviti numerele de mai sus cu locatia lor respectiva, veti vedea ca se potrivesc cu metoda de construire de la zero. In prima coloana, 0 este prima propozitie si 1 este a doua propozitie. Este mult mai rapida si mai usoara utilizarea acestei metode, dar nu este atat de usor de citit si de inteles.

Un mare multumire pentru postul Free Code Camp, fara de care acest lucru nu ar fi fost posibil. Acestea sunt legate mai jos.

Video Description:

De la zero in codul pythonSursaCa parte a unui interviu tehnic, mi s-a cerut sa implementez un pseudo cod TF-IDF in python. Avand in vedere experienta mea relativ noua cu biblioteca NLP, este suficient sa spun ca nu am facut o treaba excelenta explicandu-mi codul. Deci, pentru a ne asigura ca acest lucru nu se va mai intampla in viitor, sa facem asta aici.Dar, inainte de toate acestea, cred ca este necesara o explicatie simpla a ceea ce reprezinta NLP:NLP inseamna Prelucrarea limbajului natural. Nu trebuie confundat cu programarea neuro-lingvisticaPractic este vorba de o limba. Pentru programatori, computerul trebuie sa citeasca si sa inteleaga limbajul nostru vorbit si scris. NLP contine domenii in sine cunoscute sub numele de corpus (contine multe cuvinte / documente). Folosim biblioteca NLTK pentru a citi NLP.Odata cu stabilirea acestei relatii simple, sa trecem la partea TF-IDF a postarii. TF-IDF inseamna Term Frequency- Inverse Term Frequency. Array Partile TF conteaza de cate ori a aparut un cuvant intr-un corpus dat. Deoarece un corpus este alcatuit din mai multe documente, fiecare document si cuvintele sale vor avea propriul numar TF. Partea IDF conteaza cat de rar apare un cuvant in cadrul unui document. Cu cat cuvantul este rar, cu atat va fi mai mare numarul / greutatea acestuia.TF-IDFCombinand TF cu IDFExista un exemplu minunat in Free Code Camp, pe care il vom folosi si ca exemplu:Fraza 1: Masina este condusa pe drum.Fraza 2: Camionul este condus pe autostrada.Tabara Cod liberPuteti face acest lucru si in Excel folosind functia jurnal. Dar aici vedem ca cuvintele unice, adica cuvintele care au aparut doar o singura data si numai intr-unul din documente, sunt ponderate foarte mult in comparatie cu cuvintele care au aparut de mai multe ori. Folosim TF pentru a numara cuvintele totale pe documente si folosim IDF pentru a defini cat de rare sunt fiecare cuvinte. Cu cat cuvintele sunt mai rare - masina, camion, drum, autostrada - cu atat sunt mai semnificative. infirmiere porno womenofourtime.org hot porno americabikini.com porno hardcore inspectorsmall.com jennifer lopez porno jp-access.net illic porno 17hayes.com piscine porno ww17.saudi-girl.com porno cougars bhccinternational.com village porno testearly.com nikita bellucci porno wildwesternwear.com miley cyrus porno danielvicario.org bande dessinée porno hotelsiesta.com plombier porno bumpthemovie.com porno douche www.pillowkingdom.net you tube porno www.brastav.cz anna polina porno 696520.com porno hijab environmed.org porno cuisine titchener.us porno uro www.s-angels.com porno coq www.blurringtest.com porno cougar francaise birchrun.com Acest lucru intra in joc atunci cand realizam o matrice rara. Intr-o matrice rara, majoritatea cuvintelor dintr-un corpus dat vor fi cuvinte obisnuite si nu vor juca niciun rol in determinarea diferentei dintre fiecare document. Cu toate acestea, atunci cand cuvintele sunt unice, acestea vor ajuta programul sa invete cum sa diferentieze fiecare document.Pentru a face TF-IDF de la zero in python, avem nevoie de doi pasi separati. Mai intai trebuie sa cream functia TF pentru a calcula frecventa totala a cuvintelor pentru toate documentele. Iata codurile de mai jos:#import biblioteci necesare import panda ca pd import sklearn ca sk import matematica (aceasta este doar pentru portiunea IDF) # incarcati exemplele noastre phrasesfirst = "Masina este condusa pe drum" second = "Camionul este condus pe autostrada" # impartiti astfel incat fiecare cuvant sa aiba propriul sir first = first.split ("") second = second.split ("") # uniti-le pentru a elimina cuvintele comune duplicate total = set (first) .union (set (second)) print ( total): {'The', 'car', 'driven', 'highway', 'is', 'on', 'road', 'the', 'truck'} # Acum permite sa adaugam o modalitate de a numara cuvintele folosind o pereche cheie-valoare dictionar pentru ambele propozitii wordDictA = dict.fromkeys (total, 0) wordDictB = dict.fromkeys (total,0) pentru cuvant in primul: cuvantDictA [cuvant] + = 1pentru cuvant in al doilea: cuvantDictB [cuvant] + = 1# introduceti-le intr-un cadru de date si apoi vizualizati rezultatul: pd.DataFrame ([wordDictA, wordDictB])# Scrierea acum a functiei TF: def computeTF (wordDict, bow): tfDict = {} bowCount = len (bow) for word, count in wordDict.items (): tfDict [word] = count / float (bowCount) return tfDict # ruland propozitiile noastre prin functia tf: tfFirst = computeTF (wordDictA, first) tfSecond = computeTF (wordDictB, second) #Converting to dataframe for visualization tf_df = pd.DataFrame ([tfFirst, tfSecond])Si acum, dupa ce am terminat sectiunea TF, trecem la partea IDF:#creatia portiunii jurnal a tabelului Excel pe care am vazut-o mai devreme def computeIDF (docList): idfDict = {} N = len (docList)idfDict = dict.fromkeys (docList [0] .keys (), 0) pentru doc ​​in docList: pentru cuvant, val in doc.items (): daca val> 0: idfDict [cuvant] + = 1pentru cuvant, val in idfDict.items (): idfDict [cuvant] = math.log10 (N / float (val)) returneaza idfDict#inputing our phrases in the log file idfs = computeIDF ([wordDictA, wordDictB]) # Calculul real al TF * IDF din tabelul de mai sus: def computeTFIDF (tfBow, idfs): tfidf = {} for word, val in tfBow. items (): tfidf [word] = val * idfs [word] return tfidf # ruleaza cele doua propozitii prin IDF: idfFirst = computeTFIDF (tfFirst, idfs) idfSecond = computeTFIDF (tfSecond, idfs) #putting it in a dataframe idf = pd.DataFrame ([idfFirst, idfSecond])Valorile IDF. Verificati daca se potriveste cu tabelul Excel de mai susA fost multa munca. Dar este util sa stiti, daca vi se cere sa codificati TF-IDF de la zero in viitor. Cu toate acestea, acest lucru se poate face mult mai simplu datorita bibliotecii sklearn. Sa vedem exemplul de mai jos:# Primul pas este sa importati biblioteca din sklearn.feature_extraction.text import TfidfVectorizer # pentru propozitie, asigurati-va ca toate cuvintele sunt minuscule sau ca veti da gres. pentru simplitate, tocmai am formulat aceeasi propozitie cu toate minuscule firstV = "masina este condusa pe drum" secondV = "camionul este condus pe autostrada" # apelarea TfidfVectorizer vectorize = TfidfVectorizer () # potrivirea modelului si trecerea frazelor noastre imediat: raspuns = vectorize.fit_transform ([firstV, secondV]) print (raspuns) (0, 6) .6043795515372431 (0, 0) .42471718586982765 (0, 3) .30218977576862155 (0, 1) .30218977576862155 (0, 4) .30218977576862155 ( 0, 5) 0,42471718586982765 (1, 6) 0,6043795515372431(1, 3) 0.30218977576862155 (1, 1) 0.30218977576862155 (1, 4) 0.30218977576862155 (1, 7) 0.42471718586982765 (1, 2) 0.42471718586982765Daca potriviti numerele de mai sus cu locatia lor respectiva, veti vedea ca se potrivesc cu metoda de construire de la zero. In prima coloana, 0 este prima propozitie si 1 este a doua propozitie. Este mult mai rapida si mai usoara utilizarea acestei metode, dar nu este atat de usor de citit si de inteles.Un mare multumire pentru postul Free Code Camp, fara de care acest lucru nu ar fi fost posibil. Acestea sunt legate mai jos.

Categorie:
Taguri:
Data adaugarii: