FastText 词向量模型训练与应用
1. 模型架构: ![image]()
2. 实现代码:
import fasttext
def train_word_embeddings():
# 方法一:执行无监督学习来构建词汇嵌入模型
# trained_model = fasttext.train_unsupervised('./corpus.txt', epoch=1)
# 方法二:存储训练完成的模型
model_file = 'word_vectors.bin'
# trained_model.save_model(model_file)
# 方法三:载入预训练模型,提取特定词汇的向量表示
loaded_model = fasttext.load_model(model_file)
vector_result = loaded_model.get_word_vector('computer')
print(f'vector_shape---》{vector_result.shape}')
print(f'vector_type---》{type(vector_result)}')
# 方法四:检索与目标词汇相似的词语,如查询"technology"可找到相关词汇
similar_words = loaded_model.get_nearest_neighbors('technology')
print(f'similar_words---》{similar_words}')
if __name__ == '__main__':
train_word_embeddings()
3. 无监督训练配置参数: ![image]()
4. 代码功能解析: 此示例展示了如何利用 **NumPy** 和 **PyTorch** 构建一维数据结构,并检查其基本特征。以下是详细分析:
第一部分:NumPy 实现
import numpy as np
data_array = np.array([10, 20, 30, 40, 50])
print(data_array.ndim)
import numpy as np:引入 NumPy 模块,并设置别名np便于后续引用。data_array = np.array([10, 20, 30, 40, 50]):生成一个名为data_array的 **NumPy 数组**,包含 5 个数值 [10, 20, 30, 40, 50],构成**单维度数组**。print(data_array.ndim):输出数组data_array的**维度计数**。- 对于单维度数组,
ndim返回值为1。 - 实际输出:**
1**
- 对于单维度数组,
第二部分:PyTorch 实现
import torch
tensor_data = torch.tensor([6, 7, 8, 9, 10])
print(tensor_data.shape)
print(tensor_data.size())
import torch:载入 PyTorch 框架。tensor_data = torch.tensor([6, 7, 8, 9, 10]):创建一个名为tensor_data的 **PyTorch 张量**,内容为 [6, 7, 8, 9, 10],同样属于**单维度张量**。print(tensor_data.shape):展示张量tensor_data的**结构信息**。shape属性提供torch.Size对象,描述各个维度的长度。- 针对单维度张量,结构显示为
torch.Size([5]),表明含有 5 个元素。
print(tensor_data.size()):调用张量的size()函数,**其返回值与tensor_data.shape完全一致**,均为torch.Size类型。- 输出结果亦为
torch.Size([5])。
- 输出结果亦为
完整输出结果
当程序正常执行时,终端将显示:
1
torch.Size([5])
torch.Size([5])
附加说明
ndim与shape区别:- NumPy 中
ndim提供维度数量(如单维为 1),shape提供各维度具体尺寸(如(5,))。 - PyTorch 中不存在
ndim属性,但可用tensor_data.dim()获取维度(此处tensor_data.dim()返回1)。
- NumPy 中
size()函数:在 PyTorch 中,size()返回结构信息,若需获取总元素数应使用tensor_data.numel()(NumPy 中对应data_array.size或np.prod(data_array.shape))。- 应用场景:该代码通常用于验证 NumPy 和 PyTorch 的安装状态,同时帮助理解张量基础属性。
import numpy as np
data_array = np.array([1, 2, 3, 4, 5])
print(data_array.ndim)
import torch
tensor_data = torch.tensor([1, 2, 3, 4, 5])
print(tensor_data.shape)
print(tensor_data.size())