Hi,我是Johngo~
最近,理想汽车的薪资问题在网上挺火的。
主要原因还是工作内容和氛围都不错,而且薪资不低。
就拿今天看到的一位同学来说,nlp的薪资给到了39k,14薪。如果再加上七七八八,年包能到60~70w。
看了这个薪资,以及大家的评论,有人说虽然达不到975,但最多也是995。可是薪资福利确实不错。
我在网上看了其他的招聘信息,确实不低,可以作为后面目标企业之一。
比如,NLP不同工作年龄给到的薪资。
如果按照这个薪资来说,最起码45k以上吧。
在看大数据的,也是这样的薪资~
在加上其他方面的福利,受到了不少同学的喜爱。
今天趁这个机会,咱们说一个上周有同学问到的一个技术问题:文本分类任务中的TF-IDF和词嵌入之间的选择。
下面,咱们来详细的说一说~
TF-IDF是一种用于信息检索和文本挖掘的常用特征表示方法。通过计算文档中词语的权重,强调在文档中频繁出现但在语料库中不常见的词语。
TF(词频)表示某个词在文档中出现的频率,而IDF(逆文档频率)表示包含该词的文档在整个语料库中的稀有程度。TF-IDF的计算公式如下:
其中,
表示词语,
表示文档,
表示整个语料库。
下面用代码实现一下,大家可以按照刚刚说的原理进行理解~
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["This is a sample document.", "Another document.", "And another document."]
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)
feature_names = vectorizer.get_feature_names_out()
dense_matrix = tfidf_matrix.todense()
# 输出TF-IDF矩阵
print("TF-IDF Matrix:")
print(dense_matrix)
# 输出特征词
print("\nFeature Names:")
print(feature_names)
由于TF-IDF矩阵是稀疏矩阵,可以借助seaborn
和matplotlib
通过热力图来表示词语的权重,更加的直观一些。
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(dense_matrix, annot=True, xticklabels=feature_names, cmap="viridis")
plt.title("TF-IDF Matrix")
plt.show()
下面再说说词嵌入!
词嵌入是一种将词语映射到高维实数向量空间的技术,其中词语的语义相似性通过向量之间的距离来表示。Word2Vec和GloVe是常见的词嵌入模型。
Word2Vec中,词语的分布式表示是通过训练神经网络来学习的,而GloVe通过全局统计信息来生成词向量,考虑了词语之间的共现信息。
from gensim.models import Word2Vec
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 假设有一个已经分好词的文本列表
sentences = [["this", "is", "a", "sample", "sentence"],
["another", "sentence"],
["yet", "another", "sentence"]]
# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
# 获取词向量
word_vectors = model.wv
# PCA降维,将词向量可视化
words = list(word_vectors.index_to_key)
vectors = word_vectors[words]
pca = PCA(n_components=2)
vectors_2d = pca.fit_transform(vectors)
# 输出词嵌入可视化图
plt.scatter(vectors_2d[:, 0], vectors_2d[:, 1])
for i, word in enumerate(words):
plt.annotate(word, xy=(vectors_2d[i, 0], vectors_2d[i, 1]))
plt.title("Word Embeddings Visualization")
plt.show()
那么,刚刚说了两种算法的原理之后,再来看看各自的优势~
TF-IDF优势:
词嵌入优势:
总结下来呢:
在选择时需根据任务需求和数据特点来权衡使用TF-IDF还是词嵌入,有时候也可以将两者结合使用,融合它们的优势。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有