日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文本表示

發布時間:2024/7/5 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文本表示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 one-hot representation
該單詞對應所在元素為1,向量中其他元素均為0,向量的維度就等于詞庫中的單詞數目
??? ?所有向量都是互相正交的,我們無法有效的表示兩個向量間的相似度
??? ?向量維度過大。
from sklearn.feature_extraction.text import CountVectorizer
import seaborn as sns
import matplotlib.pyplot as plt

corpus = ['Time flies flies like an arrow.',
? ? ? ? ? 'Fruit flies like a banana.']

vocab = set([word for sen in corpus for word in sen.split(" ")])

one_hot_vectorizer = CountVectorizer(binary=True)
one_hot = one_hot_vectorizer.fit_transform(corpus).toarray()

print(one_hot_vectorizer.vocabulary_)
print(one_hot)

sns.heatmap(one_hot, annot=True,cbar=False, xticklabels=vocab, yticklabels=['Sentence 2'])
plt.show()
{'time': 6, 'flies': 3, 'like': 5, 'an': 0, 'arrow': 1, 'fruit': 4, 'banana': 2}
[[1 1 0 1 0 1 1]
?[0 0 1 1 1 1 0]]

?
2 使用sklearn計算tfidf
TF-IDF(term frequency–inverse document frequency,詞頻-逆向文件頻率)是一種用于信息檢索(information retrieval)與文本挖掘(text mining)的常用加權技術。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。
TF是詞頻(Term Frequency) 詞頻(TF)表示詞條(關鍵字)在文本中出現的頻率。這個數字通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的文件。
IDF是逆向文件頻率(Inverse Document Frequency) 逆向文件頻率 (IDF) :總文件數目除以包含該詞語的文件的數目,再將得到的商取對數得到。罕見詞的IDF很高,高頻詞的IDF很低。
TF-IDF實際上是:TF * IDF

應用
關鍵字:計算出文章中每個詞的TF-IDF值之后,進行排序,選取其中值最高的幾個作為關鍵字。
文章的相似性: 計算出每篇文章的關鍵詞,從中各選取相同個數的關鍵詞,合并成一個集合,計算每篇文章對于這個集合中的詞的詞頻,生成兩篇文章各自的詞頻向量,進而通過歐氏距離或余弦距離求出兩個向量的余弦相似度,值越大就表示越相似。
from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer,TfidfVectorizer
from pprint import pprint
import seaborn as sns
from matplotlib.pylab import plt

corpus = ['Time flies flies like an arrow.',
? ? ? ? ? 'Fruit flies like a banana.']

one_hot_vectorizer = CountVectorizer()
one_hot = one_hot_vectorizer.fit_transform(corpus).toarray()

pprint(one_hot) #輸出詞頻

transformer = TfidfTransformer()
tfidf = transformer.fit_transform(one_hot)

vocab = one_hot_vectorizer.get_feature_names()

print(vocab) #打印詞典
pprint(transformer.idf_ ) #輸出逆文檔頻率
pprint(tfidf.toarray()) #輸出TFIDF

sns.heatmap(tfidf.toarray(), annot=True, cbar=False, xticklabels=vocab,
? ? ? ? ? ? yticklabels= ['Sentence 1', 'Sentence 2'])

plt.show()

array([[1, 1, 0, 2, 0, 1, 1],
? ? ? ?[0, 0, 1, 1, 1, 1, 0]], dtype=int64)
['an', 'arrow', 'banana', 'flies', 'fruit', 'like', 'time']
array([1.40546511, 1.40546511, 1.40546511, 1. ? ? ? ?, 1.40546511,
? ? ? ?1. ? ? ? ?, 1.40546511])
array([[0.42519636, 0.42519636, 0. ? ? ? ?, 0.60506143, 0. ? ? ? ?,
? ? ? ? 0.30253071, 0.42519636],
? ? ? ?[0. ? ? ? ?, 0. ? ? ? ?, 0.57615236, 0.40993715, 0.57615236,
? ? ? ? 0.40993715, 0. ? ? ? ?]])

?
?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的文本表示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。