Korpus matnlari uchun TF-IDF qiymatlarni hisoblash.
Yuqorida keltirilgan fikr-mulohazalar asosida berilgan D1, D2 va D3 ta
hujjatlar uchun TF-IDF qiymatlarni hisoblash ketma-ketligini ko‘rib chiqamiz.
TF-IDF qiymatlarni Pythonda hisoblash.
TF-IDF
qiymatlarni Python
vositalari yordamida hisoblash ketma-ketligini shakllantiramiz. So‘ngra, biz
jarayonni
avtomatlashtirish uchun
sklearn paketi
dan foydalanishni ko‘rib
chiqamiz.
computeTF
funksiyasi orqali hujjat boʻyicha korpusdagi har bir soʻz
uchun TF qiymat hisoblanadi.
def
computeTF(wordDict, bow): tfDict={} bowcount=len(bow)
for
word,count
in
wordDict.Items(): tfDict[word]=count/float(bowcount)
return
tfDict
computeIDF
funksiyasi korpusdagi har bir so‘zning IDF qiymatini
hisoblaydi:
def
computeIDF(docList):
import
math idfDict={} N=len(docList)
idfDict=dict.fromkeys(docList[
0
].keys(),
0
)
for
doc
in
docList:
for
word,
val
in
doc.Items():
if
val>
0
:
idfDict[word]+=
1
for
word, val
in
idfDict.Items():
idfDict[word]=math.log10(N/float(val))
return
idfDict
Quyidagi
computeTF-IDF
funksiyasi TF va IDF qiymatlarni ko‘paytirish
orqali har bir so‘z uchun TF-IDF qiymatni hisoblaydi:
def
computeTFIDF(tfBow, idfs): tfidf={}
for
word,val
in
tfBow.items(): tfidf[word]=val*idfs[word]
return
tfidf
TF-IDF qiymatlarni Pythonda hisoblashning yakuniy qadamlari quyida
keltirilgan:
# Korpus hujjatlari
docA =
‘Qor parchalari ham bir biriga aslo o‘xshamaydi’
docB =
‘Qor yog‘masa, qish faslining qizig‘i ham yo‘qday go‘yo‘
docC =
‘O‘lkamizga qish fasli ham kirib keldi’
# Tokenizatsiya
bowA = docA.split(
‘ ‘
) bowB = docB.split(
‘ ‘
) bowC =
docC.split(
‘ ‘
)
# Umumiy lug‘atni shakllantirish
wordSet = set(bowA).union(set(bowB)).union(set(bowC))
wordDictA = dict.fromkeys(wordSet,
0
) wordDictB =
dict.fromkeys(wordSet,
0
) wordDictC = dict.fromkeys(wordSet,
0
)
# Chastotani aniqlash
for
word
in
bowA:
wordDictA[word]+=
1
for
word
in
bowB:
wordDictB[word]+=
1
for
word
in
bowC: wordDictC[word]+=
1
#
BoW raqamli vektorini chop qilish
import
pandas
as
pd
print
(pd.DataFrame([wordDictA, wordDictB, wordDictC]))