原文地址:https://tianchi.aliyun.com/dataset/6592
#修改文件名称
!mv /home/myspace/baidu/sgns.target.word-ngram.1-2.dynwin5.thr10.neg5.dim300.iter5.bz2.zip /home/myspace/baidu/sgns.target.word-ngram.1-2.dynwin5.thr10.neg5.dim300.iter5.bz2
#加载词向量
nlp_model = KeyedVectors.load_word2vec_format('/home/myspace/baidu/sgns.target.word-ngram.1-2.dynwin5.thr10.neg5.dim300.iter5.bz2',binary=False,encoding='utf-8')
=================================== 分割线 ===============================================================
分词之后,将文本向量化主要可以通过以下几种方法:
-
词袋模型(Bag of Words, BoW):
- 将分词后的文本中每个词语看作一个特征,构建一个特征词表。
- 对于每个文档,统计词表中每个词的出现次数,构建一个词频向量。
- 可以选择是否进行词频的归一化,比如使用TF(词频)或者TF-IDF(词频-逆文档频率)进行加权。
-
TF-IDF向量化:
- TF(Term Frequency)表示一个词在文档中出现的频率。
- IDF(Inverse Document Frequency)表示一个词在整个文档集合中的逆频率,即一个词在多少篇文档中出现过。
- 将每个词的TF和IDF相乘,得到TF-IDF值,然后用这些值构建文档的向量。
-
词嵌入(Word Embeddings):
- 使用预训练的词嵌入模型,如Word2Vec、GloVe或FastText等,将每个词转换为固定维度的向量。
- 这些词嵌入向量通常是在大量语料库上训练得到的,能够捕获词的语义信息。
- 对于不在预训练词汇表中的词,可以使用特殊标记(如“”)或随机初始化向量。
-
One-hot编码:
- 构建一个词汇表,对于每个唯一的词分配一个唯一的索引。
- 对于每个文档,创建一个与词汇表大小相同的向量,并将文档中出现的词的索引位置设置为1,其余位置为0。
- 这种方法没有考虑词的语义信息,通常只用于简单的模型或作为其他向量化方法的输入。
-
词哈希(Word Hashing):
- 将每个词通过哈希函数映射到一个固定大小的向量上。
- 这种方法可以有效地处理未在词汇表中出现的词(OOV问题),但可能会丧失部分语义信息。
-
基于神经网络的向量化方法:
- 使用神经网络模型,如循环神经网络(RNN)或Transformer模型,将文本转换为向量。
- 这些方法通常更加复杂,能够捕获文本的上下文信息,并且需要大量的训练数据。
在实际应用中,选择合适的向量化方法取决于具体任务的需求、数据的特点以及计算资源等因素。对于简单的文本分类或情感分析任务,词袋模型或TF-IDF可能就足够了;而对于更复杂的语义任务,如问答系统或机器翻译,使用预训练的词嵌入或基于神经网络的向量化方法可能更有效。