时间:2015-04-13 来源:

word2vec中distence.c文件源码分析 【编程语言】

#include <stdio.h>
#include <string.h>
#include <math.h>
//#include <malloc.h>
#include <stdlib.h>

const long long max_size = 2000;         // max length of strings
const long long N = 5;                  // number of closest words that will be shown
const long long max_w = 50;              // max length of vocabulary entries

int main(int argc, char **argv) {
  FILE *f;
  char st1[max_size];
  char *bestw[N];//指针数组,网页外包接活 b, d, bi[100];
  char ch;
  float *M;
  char *vocab;
  if (argc < 2) {
    printf("Usage: ./distance <FILE>\nwhere FILE contains word projections in the BINARY FORMAT\n");
    return 0;
  }
  strcpy(file_name, "rb");
  if (f == NULL) {
    printf("Input file not found\n");
    return -1;
  }
  fscanf(f, &words);//vocab_size
  fscanf(f, &size); //维数
  vocab = (char *)malloc((long long)words * max_w * sizeof(char));
  for (a = 0; a < N; a++) bestw[a] = (char *)malloc(max_size * sizeof(char));
  M = (float *)malloc((long long)words * (long long)size * sizeof(float));
  if (M == NULL) {
    printf("Cannot allocate memory: %lld MB    %lld  %lld\n", words, sizeof(float), f);
    len = 0;
    for (a = 0; a < size; a++) len += M[a + b * size] * M[a + b * size];
    len = sqrt(len);
    for (a = 0; a < size; a++) M[a + b * size] /= len;//将坐标归一化
  }
  fclose(f);

  while (1) {
    for (a = 0; a < N; a++) bestd[a] = 0;
    for (a = 0; a < N; a++) bestw[a][0] = 0;
    printf("Enter word or sentence (EXIT to break): ");
    a = 0;
    while (1) {
      st1[a] = fgetc(stdin);
      if ((st1[a] == '\n') || (a >= max_size - 1)) {
        st1[a] = 0;
        break;
      }
      a++;
    }
    printf("st1:%s words:%lld \n",words);
    if (!strcmp(st1, "EXIT")) break;
    cn = 0;
    b = 0;
    c = 0;
    while (1) {//把st中的每个单词分别存储到st1二维数组中,符合w3c标准共cn个.
      st[cn][b] = st1[c];
      b++;
      c++;
      st[cn][b] = 0;
      if (st1[c] == 0) break;
      if (st1[c] == ' ') {
        cn++;
        b = 0;
        c++;
      }
    }
    cn++;
    for (a = 0; a < cn; a++) {
      for (b = 0; b < words; b++) if (!strcmp(&vocab[b * max_w], st[a], bi[a]);
      if (b == -1) {
        printf("Out of dictionary word!\n");
        break;       //只要有一个词不在词汇表都终止for循环
      }
    }
    if (b == -1) continue;
    printf("\n                                              Word       Cosine distance\n------------------------------------------------------------------------\n");

    for (a = 0; a < size; a++) vec[a] = 0;

    for (b = 0; b < cn; b++) {//遍历每个词,div+css制作如果输入多个词vec[a]是各个词向量的累加和
      if (bi[b] == -1) continue;
      for (a = 0; a < size; a++) vec[a] += M[a + bi[b] * size];
    }

    len = 0;
    for (a = 0; a < size; a++) len += vec[a] * vec[a];
    len = sqrt(len);
    for (a = 0; a < size; a++) vec[a] /= len;//将vec归一化承接网页制作,当只输入一个词时,兼职手机网页制作不起作用.

    for (a = 0; a < N; a++) bestd[a] = -1;
    for (a = 0; a < N; a++) bestw[a][0] = 0;

    //由于查询词和词汇表的词向量都做了归一化web切图报价,所以余弦相似度等价于向量的内积,web切图报价内积越大越相似
    for (c = 0; c < words; c++) {//遍历词汇表
      a = 0;

      for (b = 0; b < cn; b++)   //a的作用:如果遍历词和查询词相同符合w3c标准, bestw[d - 1]);
          }
          bestd[a] = dist;
          strcpy(bestw[a], bestw[a], bestd[a]);
  }
  return 0;
}
点击次数:4983
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日【BestCoder】Round#8【编程语言】2015年02月02日UIView的contentMode中scale和aspect的字面意思 【编程语言】2015年06月24日FirefoxOS简介【编程语言】2015年06月29日5大Android手机用户谁最“惨”? ,,2016年06月23日BZOJ1002 【移动开发】2015年08月16日实现字符串中单词反转【编程语言】2015年04月08日日志文件锁定问题 【研发管理】2015年07月27日服务器存储数据丢失后的正确操作方法2014年01月28日&和&&的区别【系统运维】2015年08月31日Android复杂布局的ListView优化思路【研发管理】2015年01月21日Python整理开发环境搭建 【架构设计】2014年11月26日研究了一下div+css的高度自适应问题2014年01月29日数据结构实验之二叉树的建立与遍历 【综合】2015年08月14日玩转WPS表格的度量单位2014年01月28日Word快捷键手册:在软件窗体中使用的快捷键2014年01月28日Node.js自动化技术实现(Java) 【编程语言】2015年08月03日浅析MySQL中的IndexConditionPushdown(ICP索引条件下推)和Multi-RangeRead(MRR索引多范围查找)查询优化2017年08月16日【新书推荐】APracticalIntroductiontoComputerVisionwithOpenCV 【编程语言】2015年03月17日asp下轻松实现将上传图片到数据库的代码2014年01月29日取得一张表的数据不在另一张表中的最优秀方法(JOIN与EXISTS的效率研究) 【移动开发】2015年04月24日HDU3264Open-airshoppingmalls(圆交+二分)【编程语言】2014年12月16日myeclipse5.5注册机Myeclipse6.0M1Key序列号2014年01月29日Linux-(15)YUM软件仓库 【系统运维】2015年05月15日SQLServer2008导出脚本及数据方法 【编程语言】2014年12月03日javascript中对条件判断语句的优化 【架构设计】2015年06月12日京东2015校园招聘技术类笔试题(笔试时间:2014-10-18)【移动开发】2014年11月20日ASP.NETWebAPI教程创建域模型的方法详细介绍2014年01月29日黑马程序员——File类【综合】2015年07月01日jquery实现metro效果示例代码2014年01月29日Searcha2DMatrix(在二维数组中查找)【编程语言】2015年03月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)