python word2vector (三)
三体链接
下载三体文件,将其从命名为santi.txt 将其放在程序的统一目录下
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 1 10:13:28 2018@author: luogan
"""#!/bin/bash
# -*-coding=utf-8-*-
import jieba
import re
from gensim.models import word2vec
import multiprocessing
import gensimdef segment_text(source_corpus, train_corpus, coding, punctuation):'''切词,去除标点符号:param source_corpus: 原始语料:param train_corpus: 切词语料:param coding: 文件编码:param punctuation: 去除的标点符号:return:'''with open(source_corpus, 'r', encoding=coding) as f, open(train_corpus, 'w', encoding=coding) as w:for line in f:# 去除标点符号line = re.sub('[{0}]+'.format(punctuation), '', line.strip())# 切词words = jieba.cut(line)w.write(' '.join(words))#if __name__ == '__main__':# 严格限制标点符号
strict_punctuation = '。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼'
# 简单限制标点符号
simple_punctuation = '’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# 去除标点符号
punctuation = simple_punctuation + strict_punctuation# 文件编码
coding = 'utf-8'#coding ="gb18030"
# 原始语料
source_corpus_text = 'santi.txt'# 是每个词的向量维度
size = 10
# 是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词
window = 5
# 设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃
min_count = 1
# 是训练的进程数,默认是当前运行机器的处理器核数。
workers = multiprocessing.cpu_count()
# 切词语料
train_corpus_text = 'words.txt'
# w2v模型文件
model_text = 'w2v_size_{0}.model'.format(size)# 切词 @TODO 切词后注释
segment_text(source_corpus_text, train_corpus_text, coding, punctuation)# w2v训练模型 @TODO 训练后注释
sentences = word2vec.Text8Corpus(train_corpus_text)
model = word2vec.Word2Vec(sentences=sentences, size=size, window=window, min_count=min_count, workers=workers)
model.save(model_text)# 加载模型
model = gensim.models.Word2Vec.load(model_text)
# print(model['运动会'])# 计算一个词的最近似的词,倒序
similar_words = model.most_similar('文明')
for word in similar_words: print(word[0], word[1])# 计算两词之间的余弦相似度
sim1 = model.similarity('飞船', '爱情')
print(sim1)# 计算两个集合之间的余弦似度
list1 = ['三体', '物理']
list2 = ['相对论', '量子']
list_sim1 = model.n_similarity(list1, list2)
print(list_sim1)# 选出集合中不同类的词语
list = ['上帝', '葡萄', '基督', '爱']
print(model.doesnt_match(list))
人类 0.9959995150566101
信息化 0.9937461614608765
宇宙 0.9928457736968994
数字化 0.9915485978126526
第三方 0.9911766052246094
世界 0.9876834154129028
三体 0.9861425161361694
踪迹 0.985514760017395
达尔文 0.9851547479629517
退回 0.9846546649932861
0.8862147950518867
0.9169202194786192
葡萄
#将文字转化为向量
vector = model.wv['三体'] # numpy vector of a word
print(vector)
[-6.710487 1.0552257 -3.034105 -4.0415897 4.609099 2.3800325-0.9013142 2.425477 0.3875136 2.4119503]
python word2vector (三)相关推荐
- Python中将三个列表数据zip起来并遍历(Iterating through three lists in parallel)
Python中将三个列表数据zip起来并遍历(Iterating through three lists in parallel) 目录 Python中将三个列表数据zip起来并遍历(Iteratin ...
- python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...
前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...
- 孤荷凌寒自学python第三十八天初识python的线程控制
孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看着 ...
- python判断哪个数最小_怎么用python比较三个数大小
大部分初学编程的人来说刚开始都会练习判断两个数或者三个数的大小,来熟悉某种语言的特性和最基本的if,else循环,当我们学习了更高级的语法知识后,又会有不同的实现方式,比如依次接收用户输入的3个数,排 ...
- python中三个双引号 的作用是什么?1、多行注释 2、定义多行字符串(代替转义字符换行符 \n)
作用1:多行注释 # 这是单行注释""" 这是多行注释第一行 这是多行注释第二行 这是多行注释第三行 """ 作用2:定义多行字符串(无需转 ...
- python求三个整数最大值_怎么用python比较三个数大小
大部分初学编程的人来说刚开始都会练习判断两个数或者三个数的大小,来熟悉某种语言的特性和最基本的if,else循环,当我们学习了更高级的语法知识后,又会有不同的实现方式,比如依次接收用户输入的3个数,排 ...
- [Python人工智能] 三十四.Bert模型 (3)keras-bert库构建Bert模型实现微博情感分析
从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章开启了新的内容--Bert,首先介绍Keras-bert库安装及基础用法及文本分类工作.这篇文章将通过keras- ...
- [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
最新文章
- 什么是产品Backlog(Product Backlog)?
- javascript中将整数添加千位符号
- 简单的html5 readAsDataURL img和base64互相转换
- 1.14 sort()数组排序(升序和降序)
- 模拟input type=file
- mysql中时间类型datetime,timestamp与int的区别
- ubuntu16.04 修改分辨路并永久保存
- InTouch软件介绍
- 局域网 服务器禁止共享文件夹,一键设置局域网共享文件夹权限,禁止他人打印...
- ollydbg调试使用
- python查看保留字_Python 关键字(保留字)一览表,含查询方法
- Cox模型中的变量选择(1)---自适应Lasso方法
- Matlab中计算图像的灰度值
- c语言随机数字密码生成器,随机数生成器(浮点数整型数)
- 大数据金融,这个“跨界整合”会带来什么
- vuepress的初始化中的heroImage在哪
- Azure虚拟机计费模式
- arduino五天小结
- ios 融云 重写对话列表_iOS集成融云SDK part 1 小记
- java jtextfield长度_JTextField限制输入长度的完美解决方案