亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dv.c

?? 貝葉斯學(xué)習(xí)算法分類文本。基于樸素貝葉斯分類器的文本分類的通用算法
?? C
字號:
/* Functions for manipulating "document vectors". *//* Copyright (C) 1997 Andrew McCallum   Written by:  Andrew Kachites McCallum <mccallum@cs.cmu.edu>   This file is part of the Bag-Of-Words Library, `libbow'.   This library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public License   as published by the Free Software Foundation, version 2.      This library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with this library; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA */#include <bow/libbow.h>#include <assert.h>unsigned int bow_dv_default_capacity = 2;/* The number of "document vectors" current in existance. */unsigned int bow_dv_count = 0;/* Create a new, empty "document vector". */bow_dv *bow_dv_new (int capacity){  bow_dv *ret;  if (capacity == 0)    capacity = bow_dv_default_capacity;  ret = bow_malloc (sizeof (bow_dv) + (sizeof (bow_de) * capacity));  ret->length = 0;  ret->idf = 0.0f;  ret->size = capacity;  bow_dv_count++;  return ret;}/* Return the index into (*DV)->entries[] at which the "document   entry" for the document with index DI can be found.  If necessary,   allocate more space, and/or shift other document entries around   in order to make room for it. */static int_bow_dv_index_for_di (bow_dv **dv, int di, int error_on_creation){  int dv_index;			/* The "document vector" index at				   which we are looking for. */  static inline void grow_if_necessary ()    {      if (error_on_creation)	bow_error ("Shouldn't be creating new entry for a weight.");      if ((*dv)->length == (*dv)->size)	{	  /* The DV must grow to accommodate another entry. */	  (*dv)->size *= 3;	  (*dv)->size /= 2;	  (*dv) = bow_realloc ((*dv), (sizeof (bow_dv) 				       + sizeof (bow_de) * (*dv)->size));	}    }  static inline void initialize_dv_index (int dvi)    {      (*dv)->entry[dvi].di = di;      (*dv)->entry[dvi].count = 0;      (*dv)->entry[dvi].weight = 0.0f;    }  assert ((*dv)->length <= (*dv)->size);  if ((*dv)->length == 0)    {      /* The DV is empty. */      assert ((*dv)->size);      ((*dv)->length)++;      initialize_dv_index (0);      return 0;    }  else if (di == (*dv)->entry[(dv_index = (*dv)->length - 1)].di)    {      /* An entry already exists for this DI; it's at the end. */      return dv_index;    }  else if (di > (*dv)->entry[dv_index].di)    {      /* The entry does not already exist, and the entry belongs at	 the end of the current DV. */      dv_index = (*dv)->length;      ((*dv)->length)++;      grow_if_necessary ();      initialize_dv_index (dv_index);      return dv_index;    }  else    {      /* Search for the entry in the middle of the list. */      for (dv_index = 0; 	   (((*dv)->entry[dv_index].di < di)	    && (dv_index < (*dv)->length));	   dv_index++)	{	  if ((*dv)->entry[dv_index].di == di)	    break;	}      if ((*dv)->entry[dv_index].di == di)	{	  /* The entry already exists in the middle of the DV. */	  return dv_index;	}      else	{	  /* The entry should be in the middle of the DV, but it isn't 	     there now; we'll have to push some aside to make room. */	  int dvi;	  assert (dv_index < (*dv)->length);	  ((*dv)->length)++;	  grow_if_necessary ();	  /* Scoot some "document entries" up to make room */	  for (dvi = (*dv)->length - 2; dvi >= dv_index; dvi--)	    memcpy (&((*dv)->entry[dvi+1]), &((*dv)->entry[dvi]), 		    sizeof (bow_de));	  initialize_dv_index (dv_index);	  return dv_index;	}    }}/* Sum the COUNT into the document vector DV at document index DI,   creating a new entry in the document vector if necessary. */voidbow_dv_add_di_count_weight (bow_dv **dv, int di, int count, float weight){  int dv_index;			/* The "document vector" index at				   which we are adding COUNT. */  int new_count;  dv_index = _bow_dv_index_for_di (dv, di, 0);  new_count = (*dv)->entry[dv_index].count + count;  if (new_count < (*dv)->entry[dv_index].count)    {      static int already_warned = 0;      if (!already_warned)	{	  bow_verbosify (bow_verbose,			 "bow_dv->entry[].count overflowed int\n");	  already_warned = 1;	}      (*dv)->entry[dv_index].count = (INT_MAX) - 1;    }  else    (*dv)->entry[dv_index].count = new_count;  assert ((*dv)->entry[dv_index].count > 0);  /* If we are recording only binary word absence/presence, force the      word count to 0 or 1. */  if (bow_binary_word_counts && (*dv)->entry[dv_index].count > 1)    (*dv)->entry[dv_index].count = 1;  /* xxx But we don't do anything special with the weight? */  (*dv)->entry[dv_index].weight += weight;}/* Return a pointer to the BOW_DE for a particular document, or return   NULL if there is no entry for that document. */bow_de *bow_dv_entry_at_di (bow_dv *dv, int di){  int dvi;  for (dvi = 0; dvi < dv->length && dv->entry[dvi].di <= di; dvi++)    {      if (dv->entry[dvi].di == di)	return &(dv->entry[dvi]);    }  return NULL;}/* Return the number of bytes required for writing the "document vector" DV. */intbow_dv_write_size (bow_dv *dv){  int size;  if (dv == NULL)    size = sizeof (int);  else    {      int di_count_size;      if (bow_file_format_version < 5)	di_count_size = (sizeof (short)        /* di */			 + sizeof (short));    /* count */      else	di_count_size = (sizeof (int)          /* di */			 + sizeof (int));      /* count */      size = (sizeof (int)		       /* length */	      + sizeof (float)	               /* idf */	      + (dv->length		       /* for each entry */		 * (di_count_size		    + sizeof (float))));       /* weight */    }  return size;}/* Write "document vector" DV to the stream FP. */voidbow_dv_write (bow_dv *dv, FILE *fp){  int i;  if (dv == NULL)    {      bow_fwrite_int (0, fp);      return;    }  bow_fwrite_int (dv->length, fp);  bow_fwrite_float (dv->idf, fp);  assert (dv->idf == dv->idf);	/* testing for NaN */  for (i = 0; i < dv->length; i++)    {      if (bow_file_format_version < 5)	{	  bow_fwrite_short (dv->entry[i].di, fp);	  bow_fwrite_short (dv->entry[i].count, fp);	}      else	{	  bow_fwrite_int (dv->entry[i].di, fp);	  bow_fwrite_int (dv->entry[i].count, fp);	}      bow_fwrite_float (dv->entry[i].weight, fp);    }}/* Return a new "document vector" read from a pointer into a data file, FP. */bow_dv *bow_dv_new_from_data_fp (FILE *fp){  int i;  int len;  bow_dv *ret;  assert (feof (fp) == 0);	/* Help make sure FP hasn't been closed. */  bow_fread_int (&len, fp);    if (len == 0)    return NULL;  ret = bow_dv_new (len);  bow_fread_float (&(ret->idf), fp);  assert (ret->idf == ret->idf);	/* testing for NaN */  ret->length = len;  for (i = 0; i < len; i++)    {      if (bow_file_format_version < 5)	{	  short s;	  bow_fread_short (&s, fp);	  ret->entry[i].di = s;	  bow_fread_short (&s, fp);	  ret->entry[i].count = s;	}      else	{	  bow_fread_int (&(ret->entry[i].di), fp);	  bow_fread_int (&(ret->entry[i].count), fp);	}      bow_fread_float (&(ret->entry[i].weight), fp);    }  return ret;}voidbow_dv_free (bow_dv *dv){  bow_dv_count--;  bow_free (dv);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女视频在线观看| 精品久久久久久久久久久院品网 | 成人福利电影精品一区二区在线观看| 日韩一区二区三| 精品一区二区三区在线播放视频| 日韩精品在线一区| 国产精品一品二品| 亚洲欧洲日本在线| 欧美日韩在线不卡| 韩国午夜理伦三级不卡影院| 久久亚洲综合色一区二区三区| 国产一区不卡视频| 国产精品久久久久9999吃药| 一本一本大道香蕉久在线精品| 亚洲一区二区三区四区在线| 欧美一区二区三区免费在线看| 美腿丝袜亚洲一区| 中文字幕第一区| 欧美网站大全在线观看| 另类的小说在线视频另类成人小视频在线| 欧美精品一区在线观看| 99在线精品免费| 亚洲一区二区三区爽爽爽爽爽| 777亚洲妇女| 国产91丝袜在线播放九色| 亚洲欧洲精品天堂一级| 在线成人小视频| 国产成人精品影视| 亚洲综合图片区| 欧美成人官网二区| 91免费视频网址| 蜜芽一区二区三区| 亚洲免费在线视频| 久久久久国产精品免费免费搜索| 91色在线porny| 九九久久精品视频| 一区二区三区中文字幕电影 | 免费人成网站在线观看欧美高清| 国产欧美日韩综合| 欧美老人xxxx18| eeuss影院一区二区三区| 日韩国产在线观看一区| 国产精品视频观看| 日韩欧美一二三四区| 91免费视频观看| 国产成人在线影院| 蜜臀av亚洲一区中文字幕| 亚洲男人的天堂一区二区 | 欧美日本在线视频| av一区二区三区四区| 精品一区二区三区的国产在线播放| 一区二区三区免费看视频| 欧美国产精品中文字幕| 日韩亚洲欧美成人一区| 欧美在线一区二区三区| 成人高清伦理免费影院在线观看| 青青草成人在线观看| 亚洲综合成人在线| 亚洲人123区| 国产精品美女视频| 国产精品对白交换视频 | 一区二区成人在线| 国产精品福利影院| 国产精品欧美久久久久无广告 | 一区二区高清免费观看影视大全| 国产女同性恋一区二区| www欧美成人18+| 精品国产制服丝袜高跟| 日韩美女主播在线视频一区二区三区 | 国产精品家庭影院| 国产欧美日韩久久| 中文字幕高清一区| 国产精品国产三级国产普通话三级 | 久久99深爱久久99精品| 免费人成精品欧美精品| 日本不卡一区二区三区高清视频| 一区二区在线免费| 亚洲免费视频成人| 亚洲精品中文字幕在线观看| 国产精品国产三级国产有无不卡| 国产精品美女久久久久久2018| 中文在线一区二区| 亚洲欧洲www| 亚洲一卡二卡三卡四卡| 一区二区成人在线观看| 亚洲愉拍自拍另类高清精品| 亚洲一区二区精品久久av| 亚洲成人777| 久久99精品国产91久久来源| 激情久久五月天| 国产超碰在线一区| 91麻豆精品一区二区三区| 欧美在线你懂的| 欧美日韩免费视频| 日韩精品中文字幕在线一区| 久久久久高清精品| 亚洲色图在线播放| 五月婷婷综合网| 国产精品1024| 91福利社在线观看| 4438x亚洲最大成人网| 精品国产凹凸成av人导航| 欧美国产日产图区| 亚洲综合久久久久| 狠狠色狠狠色综合系列| www.66久久| 欧美精品 国产精品| 亚洲精品一区二区三区蜜桃下载| 国产精品你懂的在线欣赏| 一区二区三区精品| 九九国产精品视频| 99久久精品免费精品国产| 欧美日韩国产另类一区| 久久嫩草精品久久久精品| 亚洲免费在线电影| 久久国产综合精品| 色素色在线综合| 久久综合九色综合欧美98| 亚洲视频中文字幕| 久久精品国产亚洲高清剧情介绍 | 亚洲不卡av一区二区三区| 蜜臀久久久99精品久久久久久| 国产**成人网毛片九色 | 亚洲欧美国产高清| 麻豆国产一区二区| 91浏览器打开| www国产精品av| 亚洲午夜精品在线| 国产不卡在线视频| 51精品视频一区二区三区| 中文字幕一区二区三区在线播放 | 精品1区2区在线观看| 一区二区三区四区亚洲| 国产精品综合在线视频| 色av成人天堂桃色av| 久久理论电影网| 香蕉久久一区二区不卡无毒影院 | 成a人片亚洲日本久久| 日韩一区二区中文字幕| 亚洲色欲色欲www| 国产丶欧美丶日本不卡视频| 欧美人妇做爰xxxⅹ性高电影| 中文字幕一区av| 国产.欧美.日韩| 久久综合九色欧美综合狠狠| 香蕉乱码成人久久天堂爱免费| 99久久免费精品| 国产日韩欧美激情| 九九九精品视频| 欧美成人r级一区二区三区| 亚洲综合丁香婷婷六月香| 色综合中文字幕国产 | 日韩不卡在线观看日韩不卡视频| 972aa.com艺术欧美| 亚洲国产精品激情在线观看| 久久精品国产澳门| 宅男噜噜噜66一区二区66| 一区二区高清免费观看影视大全| 不卡的电影网站| 国产精品视频一二三区| 高清不卡一区二区在线| 国产欧美日韩久久| 在线亚洲精品福利网址导航| 久久久久久久久久电影| 国产一区二区导航在线播放| 日韩欧美电影一二三| 精品一区二区三区久久久| 精品国产髙清在线看国产毛片 | 久久久777精品电影网影网| 欧美aⅴ一区二区三区视频| 91麻豆精品久久久久蜜臀| 丝袜诱惑制服诱惑色一区在线观看| 欧美日韩一区二区三区在线| 亚洲va在线va天堂| 在线播放91灌醉迷j高跟美女| 午夜视频在线观看一区二区三区| 欧美日韩成人在线一区| 麻豆精品久久精品色综合| 精品国产99国产精品| 国产精品一区二区久久不卡| 国产喷白浆一区二区三区| 成人精品一区二区三区四区 | 91美女在线视频| 一区二区三区日韩| 欧美日韩国产成人在线免费| 五月天中文字幕一区二区| 欧美本精品男人aⅴ天堂| 国产精品一区二区久激情瑜伽| 国产婷婷一区二区| 色综合欧美在线| 日韩和欧美的一区| 久久久激情视频| 99re亚洲国产精品| 亚洲gay无套男同| 精品国产伦一区二区三区观看方式| 国产成人8x视频一区二区| 亚洲精品国产视频| 日韩精品中午字幕| 色综合欧美在线| 久久99精品视频|