系列文章
? 詞向量
?Adam,sgd
? 梯度消失和梯度爆炸
?初始化的方法
? 過(guò)擬合&欠擬合
? 評(píng)價(jià)&損失函數(shù)的說(shuō)明
? 深度學(xué)習(xí)模型及常用任務(wù)說(shuō)明
? RNN的時(shí)間復(fù)雜度
? neo4j圖數(shù)據(jù)庫(kù)
分詞霉赡、詞向量
關(guān)鍵詞提取-TFIDF
TfidfVectorizer
基本介紹
- TF-IDF是一種統(tǒng)計(jì)方法穴亏,用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度重挑。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加谬哀,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降。
- 比如:為了獲得一篇文檔的關(guān)鍵詞谦屑,我們可以如下進(jìn)行
- 對(duì)給定文檔篇梭,我們進(jìn)行"詞頻"(Term Frequency,縮寫為TF)
- 給每個(gè)詞計(jì)算一個(gè)權(quán)重悍手,這個(gè)權(quán)重叫做"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF)竣付,它的大小與一個(gè)詞的常見(jiàn)程度成反比滞欠。
算法明細(xì)
- 基本步驟
- 1仑撞、計(jì)算詞頻⊥傲迹考慮到文章有長(zhǎng)短之分沮翔,為了便于不同文章的比較,進(jìn)行"詞頻"標(biāo)準(zhǔn)化疲牵。
詞頻:TF = 文章中某詞出現(xiàn)的頻數(shù)
詞頻標(biāo)準(zhǔn)化:tf-TFIDF_2 - 2纲爸、計(jì)算逆文檔頻率妆够。如果一個(gè)詞越常見(jiàn)神妹,那么分母就越大,逆文檔頻率就越小越接近0冕茅。
逆文檔頻率:關(guān)鍵詞提取-TFIDF_3
其中蛹找,語(yǔ)料庫(kù)(corpus)熄赡,是用來(lái)模擬語(yǔ)言的使用環(huán)境。 - 3炊豪、計(jì)算TF-IDF∏2眨可以看到缺虐,TF-IDF與一個(gè)詞在文檔中的出現(xiàn)次數(shù)成正比高氮,與該詞在整個(gè)語(yǔ)言中的出現(xiàn)次數(shù)成反比
- 1仑撞、計(jì)算詞頻⊥傲迹考慮到文章有長(zhǎng)短之分沮翔,為了便于不同文章的比較,進(jìn)行"詞頻"標(biāo)準(zhǔn)化疲牵。
算法優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):
- TF-IDF算法的優(yōu)點(diǎn)是簡(jiǎn)單快速,結(jié)果比較符合實(shí)際情況塞淹。
- 缺點(diǎn)
- 單純以"詞頻"衡量一個(gè)詞的重要性罪裹,不夠全面状共,有時(shí)重要的詞可能出現(xiàn)次數(shù)并不多。
- 這種算法無(wú)法體現(xiàn)詞的位置信息冯袍,出現(xiàn)位置靠前的詞與出現(xiàn)位置靠后的詞鬓椭,都被視為重要性相同关划,這是不正確的贮折。
- 對(duì)于文檔中出現(xiàn)次數(shù)較少的重要人名、地名信息提取效果不佳
應(yīng)用場(chǎng)景
- 應(yīng)用場(chǎng)景簡(jiǎn)介
- 1)搜索引擎踊赠;
- 2)關(guān)鍵詞提让壳臁缤灵;
- 3)文本相似性蓝晒;
- 4)文本摘要
可執(zhí)行實(shí)例
# python:3.8
# sklearn:0.23.1
# 1芝薇、CountVectorizer 的作用是將文本文檔轉(zhuǎn)換為計(jì)數(shù)的稀疏矩陣
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document?',
]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
# 查看每個(gè)單詞的位置
print(vectorizer.get_feature_names())
#['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
# 查看結(jié)果
print(X.toarray())
# [[0 1 1 1 0 0 1 0 1]
# [0 2 0 1 0 1 1 0 1]
# [1 0 0 1 1 0 1 1 1]
# [0 1 1 1 0 0 1 0 1]]
# 2作儿、TfidfTransformer:使用計(jì)算 tf-idf
from sklearn.feature_extraction.text import TfidfTransformer
transform = TfidfTransformer()
Y = transform.fit_transform(X)
print(Y.toarray()) # 輸出tfidf的值
# [[0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524]
# [0. 0.6876236 0. 0.28108867 0. 0.53864762 0.28108867 0. 0.28108867]
# [0.51184851 0. 0. 0.26710379 0.51184851 0. 0.26710379 0.51184851 0.26710379]
# [0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524]]
# 3攻锰、TfidfVectorizer:TfidfVectorizer 相當(dāng)于 CountVectorizer 和 TfidfTransformer 的結(jié)合使用
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
'This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document?',
]
vectorizer = TfidfVectorizer() #構(gòu)建一個(gè)計(jì)算詞頻(TF)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
# ['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
print(X.shape)
# (4, 9)
參數(shù)項(xiàng)說(shuō)明
- CountVectorizer
關(guān)鍵詞提取-TFIDF_4
- TfidfTransformer
關(guān)鍵詞提取-TFIDF_5
- 從函數(shù)上來(lái)看变擒,咱也可以發(fā)現(xiàn)有TfidfVectorizer=CountVectorizer + TfidfTransformer哈
- TfidfVectorizer
關(guān)鍵詞提取-TFIDF_6