当前位置: 首页 > java >正文

Word2Vec 生成词向量

两个简单的示例,生成词向量。

1. 英文单词生成词向量

from gensim.models import Word2Vecmodel = Word2Vec(
sentences=[["cat", "say", "meow"], ["dog", "say", "woof"]], 
sg=0, 
window=2, 
vector_size=3,min_count=0, 
workers=4)

模型model训练好了,打印词向量

model.wv.vectors输出为:
array([[-0.01787424,  0.00788105,  0.17011166],[ 0.3003091 , -0.31009832, -0.23722696],[ 0.21529575,  0.2990996 , -0.16718094],[-0.12544572,  0.24601682, -0.05111571],[-0.15122044,  0.21846838, -0.16200535]], dtype=float32)

共5个不重复的单词,每个单词由3个数据的词向量表示。打印"cat"的词向量

model.wv.get_vector("cat")输出为:
array([-0.15122044,  0.21846838, -0.16200535], dtype=float32)

2.中文生成词向量,

生成"小猫说话喵喵, 小狗说话汪汪"这句话的词向量

2.1 分词

# !pip install jieba
import jiebaseg_list = jieba.cut(s, cut_all=False)f=" ".join(seg_list)
f
输出为:
'小猫 说话 喵 喵 ,   小狗 说话 汪汪'

2.2 将分好的词构造成列表

import nltk
from nltk.tokenize import sent_tokenize, word_tokenizenltk.download('punkt_tab')data = []# iterate through each sentence in the file
for i in sent_tokenize(f):temp = []# tokenize the sentence into wordsfor j in word_tokenize(i):temp.append(j.lower())data.append(temp)data输出为:[['小猫', '说话', '喵', '喵', ',', '小狗', '说话', '汪汪']]

2.3 训练模型model,获得每个分词的向量表示

model = Word2Vec(
sentences=data, 
sg=0, 
window=2, 
vector_size=3, 
min_count=0, 
workers=4)model.wv.get_vector("小猫")
输出为:array([-0.06053392,  0.09588599,  0.03306246], dtype=float32)model.wv.get_vector("小狗")
输出为:array([-0.12544572,  0.24601682, -0.05111571], dtype=float32)model.wv.vectors
全部词的词向量:
array([[-0.01787424,  0.00788105,  0.17011166],[ 0.3003417 , -0.31010646, -0.23725258],[ 0.21530104,  0.29910693, -0.16718504],[-0.12544572,  0.24601682, -0.05111571],[-0.15122044,  0.21846838, -0.16200535],[-0.06053392,  0.09588599,  0.03306246]], dtype=float32)

参考文献

http://www.xdnf.cn/news/10099.html

相关文章:

  • 【python基础知识】列表简介
  • 会议室钥匙总丢失?换预约功能的智能门锁更安全
  • 如何做好一份技术文档:从信息孤岛到知识图谱的进阶之路
  • 国芯思辰| SC751X替换OPA2354/OPA354/OPA4354可调激光器应用方案
  • 网络编程4-epoll
  • 多模态大语言模型arxiv论文略读(101)
  • 大语言模型中的注意力机制详解
  • gitlib 常见命令
  • 【xmb】内部文档148344596
  • nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: 80端口被占用
  • GEARS以及与基础模型结合
  • 产品更新|数字主线深度解析:华望解决方案助力企业数字化转型
  • Linux入门(十一)进程管理
  • 分布式锁和数据库锁完成接口幂等性
  • 深度学习初探:当机器开始思考(superior哥AI系列第1期)
  • 线程池的详细知识(含有工厂模式)
  • STM32通过rt_hw_hard_fault_exception中的LR寄存器追溯程序问题​
  • 深圳南山沙河社区联合心美行动举办“青少年天赋提升”助青春成长
  • 用于工业设备的高精度仪表放大器“NL9620”开始上市~日本首家!高EMC性能的仪表放大器
  • 使用matlab读取txt文件中的2进制数据
  • 文字转图片的字符画生成工具
  • JavaScript 计算两个日期之间天数的全面指南
  • [网页五子棋][对战模块]前后端交互接口(建立连接、连接响应、落子请求/响应),客户端开发(实现棋盘/棋子绘制)
  • 将Kotti从Pyramid1.0升级到2.0 (失败的记录)
  • CATIA高效工作指南——测量分析篇(一)
  • C++ TCP程序增加TLS加密认证
  • Java本地缓存实现方案全解析:原理、优缺点与应用场景
  • C/C++ 面试复习笔记(2)
  • 漫画Android:事件分发的过程是怎样的?
  • JS数组 concat() 与扩展运算符的深度解析与最佳实践