使用gensim训练word2vec

import logging
import randomimport numpy as np
import torchlogging.basicConfig(level=logging.INFO, format='%(asctime)-15s %(levelname)s: %(message)s')# set seed
seed = 666
random.seed(seed)
np.random.seed(seed)
torch.cuda.manual_seed(seed)
torch.manual_seed(seed)# split data to 10 fold
fold_num = 10
data_file = '../data/train_set.csv'
import pandas as pddef all_data2fold(fold_num, num=10000):fold_data = []f = pd.read_csv(data_file, sep='\t', encoding='UTF-8')texts = f['text'].tolist()[:num]labels = f['label'].tolist()[:num]total = len(labels)index = list(range(total))np.random.shuffle(index)all_texts = []all_labels = []for i in index:all_texts.append(texts[i])all_labels.append(labels[i])label2id = {}for i in range(total):label = str(all_labels[i])if label not in label2id:label2id[label] = [i]else:label2id[label].append(i)all_index = [[] for _ in range(fold_num)]for label, data in label2id.items():# print(label, len(data))batch_size = int(len(data) / fold_num)other = len(data) - batch_size * fold_numfor i in range(fold_num):cur_batch_size = batch_size + 1 if i < other else batch_size# print(cur_batch_size)batch_data = [data[i * batch_size + b] for b in range(cur_batch_size)]all_index[i].extend(batch_data)batch_size = int(total / fold_num)other_texts = []other_labels = []other_num = 0start = 0for fold in range(fold_num):num = len(all_index[fold])texts = [all_texts[i] for i in all_index[fold]]labels = [all_labels[i] for i in all_index[fold]]if num > batch_size:fold_texts = texts[:batch_size]other_texts.extend(texts[batch_size:])fold_labels = labels[:batch_size]other_labels.extend(labels[batch_size:])other_num += num - batch_sizeelif num < batch_size:end = start + batch_size - numfold_texts = texts + other_texts[start: end]fold_labels = labels + other_labels[start: end]start = endelse:fold_texts = textsfold_labels = labelsassert batch_size == len(fold_labels)# shuffleindex = list(range(batch_size))np.random.shuffle(index)shuffle_fold_texts = []shuffle_fold_labels = []for i in index:shuffle_fold_texts.append(fold_texts[i])shuffle_fold_labels.append(fold_labels[i])data = {'label': shuffle_fold_labels, 'text': shuffle_fold_texts}fold_data.append(data)logging.info("Fold lens %s", str([len(data['label']) for data in fold_data]))return fold_datafold_data = all_data2fold(10)# build train data for word2vec
fold_id = 9train_texts = []
for i in range(0, fold_id):data = fold_data[i]train_texts.extend(data['text'])logging.info('Total %d docs.' % len(train_texts))logging.info('Start training...')
from gensim.models.word2vec import Word2Vecnum_features = 100     # Word vector dimensionality
num_workers = 8       # Number of threads to run in paralleltrain_texts = list(map(lambda x: list(x.split()), train_texts))
model = Word2Vec(train_texts, workers=num_workers, size=num_features)
model.init_sims(replace=True)# save model
model.save("./word2vec.bin")# load model
model = Word2Vec.load("./word2vec.bin")# convert format
model.wv.save_word2vec_format('./word2vec.txt', binary=False)

自然语言处理实践Task5相关推荐

  1. python documents in chinese_基于 Python 的简单自然语言处理实践

    基于 Python 的简单自然语言处理 Twenty News Group 语料集处理 20 Newsgroup 数据集包含了约 20000 篇来自于不同的新闻组的文档,最早由 Ken Lang 搜集 ...

  2. DataWhale第21期组队学习自然语言处理实践(知识图谱)task4— 用户输入->知识库的查询语句

    参考来源:https://github.com/datawhalechina/team-learning-nlp/blob/master/KnowledgeGraph_Basic/task04.md# ...

  3. r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...

    斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger), ...

  4. 《自然语言处理实践——聊天机器人技术原理与应用》(王昊奋)简要笔记(全)

    第一章 概述 1.对话系统分类 基于实现方式--检索式.生成式 基于功能--问答系统.面向任务的对话系统.闲聊系统.主动推荐系统. 2.框架 自动语音识别--自然语言理解--对话管理(Web,社区问答 ...

  5. PyTorch深度学习实战 | 迁移学习与自然语言处理实践

    01.文章任务 从提供的金融文本中识别出现的未知金融实体,包括金融平台名.企业名.项目名称及产品名称.持有金融牌照的银行.证券.保险.基金等机构.知名的互联网企业如腾讯.淘宝.京东等和训练集中出现的实 ...

  6. 自然语言处理实践Task6

    基于Bert的文本分类 Bert Pretrain class WhitespaceTokenizer(object):"""WhitespaceTokenizer wi ...

  7. 自然语言处理实践Task4

    FastText FastText通过Embedding层将单词映射到稠密空间,然后将句子中所有的单词在Embedding空间中进行平均,进而完成分类操作. FastText是一个三层的神经网络,输入 ...

  8. 自然语言处理实践Task3

    One-hot 这里的One-hot与数据挖掘任务中的操作是一致的,即将每一个单词使用一个离散的向量表示.具体将每个字/词编码一个索引,然后根据索引进行赋值. One-hot表示方法的例子如下: 句子 ...

  9. 自然语言处理实践Task2

    一.读取训练数据 # sep设置分割符 # nrows设置读取的行数 train_df = pd.read_csv('./data/train_set.csv', sep='\t', nrows=10 ...

最新文章

  1. linux驱动:TI+DM8127+GPIO(三)之omap_hwmod中添加GPIO资源
  2. python哪些是可变对象_python的不可变对象与可变对象及其妙用与坑
  3. [How TO]-How to Install Python Pip on Ubuntu 20.04
  4. 為什麼system32中放的是64位dll,syswow64中放的是32位dll
  5. metaq发送和接收消息demo
  6. cc9.3 indesign_InDesign2018mac中文版_Adobe InDesign CC 2018 for mac官方版 - 17软件下载
  7. 新建文本文档好玩的代码_(03)用什么工具写ASP源代码?
  8. dj电商-需求分析开始-静态资源-用户模块
  9. 无声也能语音识别?微软这个黑科技有点厉害
  10. Junit框架使用--JUnit常用断言及注解
  11. 建立项目仓库(Gitgub 或 Coding 或 Gitlab 或 Gitee)
  12. 蓝桥杯2014年(第5届)省赛b组c/c++ 史丰收速算
  13. 4.4.1 External and Internal Ratings
  14. SpringBoot-Google二步验证
  15. 【转载】Python Numpy求余弦值和欧几里得距离
  16. Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string
  17. android调用另一个app,Android调用另一个App界面
  18. Tree-shaking
  19. 最美的时候你遇见了谁?
  20. 页面局部刷新( ScriptManager 和 UpdatePanel)(转)

热门文章

  1. Mysql 加锁防并发
  2. 教你如何完全解析Kotlin中的注解
  3. html常用标签6-表单标签
  4. 阿里云POLARDB如何帮助百胜软件应对数据库的“巅峰时刻”
  5. our happy ending(状压dp)
  6. filebeat 配置文件详解
  7. PHPEXCEL实例
  8. 手动安装lzop压缩工具 - JerryMo06的专栏 - 博客频道 - CSDN.NET
  9. [转载] 羽毛球——学打羽毛球 08 接发球 发球
  10. 无线网络MIMO技术浅谈