TF-IDF apzīmē Term Frequency Inverse Document Frequency of records. To var definēt kā aprēķinu par to, cik vārds sērijā vai korpusā ir atbilstošs tekstam. Nozīme palielinās proporcionāli tam, cik reižu tekstā vārds parādās, bet to kompensē vārda biežums korpusā (datu kopā).
Terminoloģijas:
- Termina biežums: dokumentā d biežums apzīmē dotā vārda t gadījumu skaitu. Tāpēc mēs varam redzēt, ka tas kļūst aktuālāks, kad tekstā parādās vārds, kas ir racionāls. Tā kā terminu secība nav nozīmīga, mēs varam izmantot vektoru, lai aprakstītu tekstu terminu modeļu maisā. Katram konkrētajam terminam darbā ir ieraksts, kura vērtība ir termina biežums.
Termina svars, kas sastopams dokumentā, ir vienkārši proporcionāls termina biežumam.
tf(t,d) = count of t in d / number of words in d>
- Dokumentu biežums: pārbauda teksta nozīmi, kas ir ļoti līdzīga TF, visā korpusa kolekcijā. Vienīgā atšķirība ir tāda, ka dokumentā d TF ir frekvenču skaitītājs terminam t, bet df ir atgadījumu skaits termina t dokumentu kopā N. Citiem vārdiem sakot, dokumentu skaits, kuros ir vārds, ir DF.
df(t) = occurrence of t in documents>
- Apgrieztā dokumenta biežums: galvenokārt tiek pārbaudīts, cik atbilstošs ir vārds. Meklēšanas galvenais mērķis ir atrast atbilstošos ierakstus, kas atbilst pieprasījumam. Tā kā tf visus terminus uzskata par vienlīdz nozīmīgiem, terminu biežums var izmantot ne tikai, lai izmērītu termina nozīmi darbā. Vispirms atrodiet termina t dokumentu biežumu, saskaitot dokumentu skaitu, kas satur šo terminu:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
Termiņu biežums ir termina gadījumu skaits tikai vienā dokumentā; lai gan dokumenta biežums ir atsevišķu dokumentu skaits, kuros termins parādās, tas ir atkarīgs no visa korpusa. Tagad apskatīsim apgrieztā papīra frekvences definīciju. Vārda IDF ir dokumentu skaits korpusā, kas atdalīts ar teksta biežumu.
idf(t) = N/ df(t) = N/N(t)>
Biežāk sastopamais vārds tiek uzskatīts par mazāk nozīmīgu, taču elements (visvairāk noteikti veseli skaitļi) šķiet pārāk skarbs. Pēc tam mēs ņemam papīra apgrieztās frekvences logaritmu (ar 2. bāzi). Tātad vārda t if kļūst:
idf(t) = log(N/ df(t))>
- Aprēķins: Tf-idf ir viens no labākajiem rādītājiem, lai noteiktu, cik nozīmīgs termins ir tekstam sērijā vai korpusā. tf-idf ir svēruma sistēma, kas katram vārdam dokumentā piešķir svaru, pamatojoties uz tā terminu biežumu (tf) un abpusējo dokumenta biežumu (tf) (idf). Vārdi ar lielāku svaru tiek uzskatīti par nozīmīgākiem.
Parasti tf-idf svars sastāv no diviem terminiem -
- Normalizēta termiņa biežums (tf) Apgrieztā dokumenta biežums (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
Python tf-idf vērtības var aprēķināt, izmantojot TfidfVektorizer() metode iekšā sklearn modulis.
Sintakse:
sklearn.feature_extraction.text.TfidfVectorizer(input)
Parametri:
ievade : Tas attiecas uz nodoto parametru dokumentu, tas var būt faila nosaukums, fails vai pats saturs.
Atribūti:
vārdu krājums_ : Tas atgriež terminu vārdnīcu kā atslēgas un vērtības kā pazīmju indeksi. idf_ : Tas atgriež Apgrieztā dokumenta frekvences vektors dokumentam, kas nodots kā parametrs.
Atgriež:
fit_transform(): Tas atgriež terminu masīvu kopā ar tf-idf vērtībām. get_feature_names(): Tas atgriež funkciju nosaukumu sarakstu.
Soli pa solim pieeja:
- Importēt moduļus.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Apkopojiet virknes no dokumentiem un izveidojiet korpusu, kurā ir virkņu kolekcija no dokumentiem d0, d1, un d2 .
Python3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Iegūstiet tf-idf vērtības no fit_transform() metodi.
Python3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
cik liels ir mana monitora ekrāns
>
- Parādiet korpusā esošo vārdu idf vērtības.
Python3
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Izvade:

- Parādiet tf-idf vērtības kopā ar indeksēšanu.
Python3
# get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf value:'>)> print>(result)> # in matrix form> print>(>'
tf-idf values in matrix form:'>)> print>(result.toarray())> |
>
>
Izvade:

java korteži
The rezultāts mainīgais sastāv no unikāliem vārdiem, kā arī no tf-if vērtībām. To var izstrādāt, izmantojot zemāk redzamo attēlu:

No iepriekš redzamā attēla var izveidot šādu tabulu:
| Dokuments | Vārds | Dokumentu rādītājs | Vārdu rādītājs | tf-idf vērtība |
|---|---|---|---|---|
| d0 | priekš | 0 | 0 | 0,549 |
| d0 | geeks | 0 | 1 | 0,8355 |
| d1 | geeks | 1 | 1 | 1000 |
| d2 | r2j | 2 | 2 | 1000 |
Tālāk ir sniegti daži piemēri, kas parāda, kā aprēķināt vārdu tf-idf vērtības no korpusa:
1. piemērs: Tālāk ir sniegta visa programma, kuras pamatā ir iepriekšminētā pieeja:
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf value:'>)> print>(result)> # in matrix form> print>(>'
tf-idf values in matrix form:'>)> print>(result.toarray())> |
>
>
Izvade:

2. piemērs: Šeit tf-idf vērtības tiek aprēķinātas no korpusa, kuram ir unikālas vērtības.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'geek1'> d1>=> 'geek2'> d2>=> 'geek3'> d3>=> 'geek4'> # merge documents into a single corpus> string>=> [d0, d1, d2, d3]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
>
Izvade:

3. piemērs: Šajā programmā tf-idf vērtības tiek aprēķinātas no korpusa ar līdzīgiem dokumentiem.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks!'> d1>=> 'Geeks for geeks!'> # merge documents into a single corpus> string>=> [d0, d1]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
>
Izvade:

4. piemērs: Zemāk ir programma, kurā mēs cenšamies aprēķināt viena vārda tf-idf vērtību geeks tiek atkārtots vairākas reizes vairākos dokumentos.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign corpus> string>=> [>'Geeks geeks'>]>*>5> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
sql concat
>
Izvade:
