基于php的图片搜索引擎内容摘要:
数,而构成一个倒排基本单位。 例如,一本旅游类书籍的第 130 页讲述了“冰糖葫芦”的来历。 在经过倒排后,“冰糖葫芦”被作为一个单独的关键字切分出来,保存在索引中,同时还带有其页码“ 130”,作为索引项的内容。 这样,当信息检索系统检索“冰糖葫芦”这个关键字 时,系统就可以迅速给出其页码,然后再到原书中取出相关页面文本内容。 这种查找方式要比从第 1页开始,线性匹配所有文本,找出包含有“冰糖葫芦”的页面内容要快得多,如图 所示 原始文档 索引 图 倒排 上说,倒排是一种面向单词的索引机制。 通常,它由词(关键字)和出现情况两部分组成。 对于索引中的每个词(关键字),都跟随一个列表(位置表),用来记录单词在所有文档中出现的位置。 【 8】 倒排的特点 在倒排索引中,关键字的数量并非随着文本内容的增长也线性增长。 这是因为无论多大数量的文本数据库,总能够规范出一个关键字表。 这种关键字表受到实际语言因素的限制,它的增长率在文本数据库达到一定规模后可以忽略不计。 有人做过统计,冰糖葫芦 130 页 砂锅丸子 第 42 页 羊肉串 第 67 页 冰糖葫芦 第 30 页 炸酱面 第 142 页 大闸蟹 第 177 页 9 对于 1GB 的文本信息来说, 词汇表(关键字表)的大小在 5MB 左右。 【 9】 可以试想,将一本书上所有的文本均制作成关键字,并对其进行倒排构建一个信息搜索引擎系统。 对其中的内容进行检索,在整个过程中,最消耗时间的应该就是倒排阶段。 因为在倒排时,需要对文本进行分析、切词, 还要构建索引结构,记录位置信息,同时维护相关内容。 虽然这一阶段花费大量时间,但是一旦完成。 检索时将会节省大量时间。 事实上,一个信息检索系统在建立索引时的速度要求是可以放宽的,因为毕竟这是在后台异步完成,而其搜索速度影响用户最终体验的直接因素。 分词技术 为什么需要分词 目前的搜索引擎,大多是基于一种称为倒排索引的结构。 以什么做为 索引 的 Key 值,直接影响到整个搜索引擎的准确度、召回率、速度。 我们先看看不使用中文分词的情况。 如果不使用中文分词,可以采用单个汉字索引方式。 例如,雅虎 , 先索引 ‘ 雅 ’ 字,然后再索引 ‘ 虎 ’ 字。 同样,对于一篇文章,先把所有的汉字都单独索引一次,并记录他们的位置。 搜索过程中,也是先找 39。 雅 39。 字的所有文档,再找 39。 虎 39。 字的所有文档,然后做交叉 39。 与 39。 运算,即包含这两个字,而且位置连续的文档才会做为符合要求的结果。 这种方式是最基本的索引方式,现在有些小 引擎中还在使用。 但这里存在一个很有挑战性的问题:总共的常用汉字 才 3000 多个,我们每次查询过程中,进行 39。 与 39。 操作的计算量会相当大,对于大数据量搜索引擎来说 (超过 10亿的文档 ),每天上亿次查询,这样的索引结构,无疑是对硬件和算法的极 大挑战。 考虑到速度问题,如果不使用分词,还有另外一种选择: n 元组合索引方式 , 2元 /3元等。 拿 2元来说,中国人 , 先索引 ‘ 中国 ’ , 再索引 ‘ 国人 ’。 同样,对于一篇文章,以 2 为单位,把所有相邻的汉字都索引起来,并记录他们的位置。 搜索过程中,也是先找包含 39。 中国 39。 的所有文档,再找 39。 国人 39。 的所有文档,然后做交叉 39。 与 39。 运算,即包含这两个单元,而且位置连续的文档才会做为符合要求的结果。 这样以两个字做为索引单元,可以大大减少在搜索过程中的计算量。 以上两种方式,都可以不需要分词,也能实现搜索引擎的索引和搜索。 但是这里 存在一个不可忽视的问题:准确度。 一个很常见的例子: 和服 , 如果按照上面两种方式,都会查到包含 39。 主板 和服 务器 39。 的文档; 北大 也会得到 39。 东 北大 学 39。 对于大数据量的搜索引擎来说,每个搜索次都会有成千上万个结果,用户已经很挑选他真正想要的文章,如果这里还要增加许多错误,估计用户体验会极差。 这时候,我们需要中文分词。 10 词,是中文语言中最小的语意单位。 以词为单位做为搜索引擎的索引的 Key 值,会大大提高搜索引擎结果的准确性,同时保证了搜索过程中计算量小。 其实还有一个优点,以词为单位的索引,起索引库会比上两 种方式的索引库小很多。 很明显:如果以 中国人 做为一个词,那么搜索的时候,不需要任何 39。 与 39。 运算,索引的时候记录也会减少。 中文分词的算法 中文分词技术的研究,已经有几十年的历史了,在 20 世纪 80 年代,我国就有人开始研究如何用计算机来自动分词。 如何让机器去识别语言中最小的语意单位,不是一件很容易的事情。 如何进行分词。 对于程序员来说,最容易想到的办法是,用一个大词典,把所有的词都存入词典中,扫描输入的文本,查找所有可能的词,然后看哪个词可以做为输出。 例如: 输入文本 : 我是学生 词 : 我 /是 /学生 其实这样做了以后,可以解决 60%的问题。 总结起来,分词的算法分为: 基于字符串匹配的分词方法 基于理解的分词方法 基于统计的分词方法 关于这 3种算法的详细介绍,可以查看 中文分词技术 , 这里想介绍的是,如何处理新词。 新词,术语是 未登录词 ,就是那些没有收入到词典里面的词。 新词主要包括:人名、地名、机构名、热点新名词等。 例 如: 2020 年之前,没有人知道 非典。 非典 刚出现的时候,这就是新词。 还有 超女 , 三个代表 , 芙蓉姐姐。 识别新词的能力是评估一个分词系统的重要指标。 在国际上每年进行的分词大赛中,识别新词的比赛也单独提出。 2020 年 SIGHAN 的分词大赛中,就增添了对于机构名识别的比赛。 如何识别新词成为最近几年分词技术研究的重点。 总结起来,无非分成两种: 基于规则的方法。 基于统计、机器学习。 拿人名识别 为例。 你不可能把所有的人名都放入词典中,这决定了人名注定会是新词。 从人名构造来说,很有规律:姓+名。 张王刘李陈、天下一半人。 也就是说可能有 11 一半的人,是这五个姓。 名也有一定规律:建华 /建国 /志强 .....等有许多经常用于名字中的汉字;对于地名识别也可以找出很多规则,省 /县 /村 /镇 /湾 /河等,都是很常用的后缀,如果他们出现,之前出现地名的可能性比较大。 如果把这些规律转化成计算机能识别的算法,就是基于规则的算法。 这种基于规则的算法简单有效,而且发现规则可很方便加入。 规则总会有例外,规则过多以后,如何去权衡这些 规则,会是十分头疼的问题。 人们试着告诉计算机目标,让计算机自己去尝试各种方法组合这些规则并得到最优参数,这就 是 机器学习。 随着 Machine Learning(机器学习 )技术的不断进步,其应用范围也越来越广,中文分词算法也从中受益。 ANN(人工神经网络 ), 最大熵模型 , HMM(隐马尔可夫模型 )等算法都在新词识别中有应用。 通过机器学习识别新词的原理并不复杂。 一般都是先定义一些特征,然后利用训练语料进行学习,建立模型。 还是以人名识别为例,可以定义姓名前面的字、姓、名、姓名后面的字做为特征,通过利用标注好姓名的语 料库进行学习训练。 机器学习识别新词的好处在于自动寻找一些识别新词的特征,其准确度和召回率都能达到比较高的水平。 但机器学习算法需要有足够多的训练语料,人工准备准确的大规模的训练语料也会十分困难。 另外,机器学习算法一般速度会比较慢,优化速度,使之用于海量数据处理,也是使用机器学习的一个关键点。 【 10】 中文分词和搜索引擎 中文分词除了在索引结构上影响搜索引擎以外,还会如何影响搜索引擎。 除了搜索引擎的索引过程需要用到分词以外,所有的搜索之前也需要用到分词。 有些人误认为 短语搜索 (即两端加上引 号的搜索方式,搜索引擎基本都支持这种方式,查看 搜索引擎帮助 )是 直接拿字符串去匹配不用分词,因为结果看上去好像是字符串匹配的结果。 其实不然,短语搜索同样需要用分词,只不过在结果中需要位置连续等严格限制。 当位置连续时,在显示摘要的时候,会让你感觉只是用字符串匹配。 除了在搜索前端后端都需要用到分词以外,搜索引擎还有一个原则:前端后端分词结果应该一致。 这意思是说,如果你在索引时 没有识别出 文德 的人名,你在搜索时最好也别识别出来,这样可以按照两个单字的方式查找,或许有正确结果,否则会查不到结果。 反之也一样。 由于索引过程中,分词输入的一篇文章,有大量的上下文信息,但在搜索时,用户输入的可能只有几个字,很多上下文信息不在存在。 如果过多使用统计或机器学习,很容易导致搜索引擎的前端后端分词不一致的问题。 这也是搜索引擎使用分词和其他系统,如机器翻译,使用分词不一样的地方。 12 如果你看过搜索引擎的 query log(即所有搜索词的记录),你会发现新词很多,会占 30%,或者更多。 对这些新词的识 别会直接影响搜索结果的准确性,或者说相关性。 搜索结果的相关性决定于排序算法,排序算法一部分依赖于网页的质量和权威性,另一方面依赖于分词结果的准确性。 分词结果准确,我们会方便的计算词在文章中的重要程度。 超女 做为一个词在文章中的权重,和 超 、 女 两个字在文章中的权重计算方法会很不一样,这样就会直接影响相关性的计算。 中文分词对于搜索引擎的影响,还表现在对于用户输入词意图的识别。 识别用户的输入词是否是人名、网站名、软件名还是其他通用词汇,能够判断用户的意图,从而提供用户想要的结果。 其实中文分词是所有 中文处理的基础,因此如果有一个好的分词系统,会对改进搜索引擎的相关性有很大的帮助。 但最终展现给用户的是网页结果而不是分词结果,提高网页的相关性,有 100%准确的分词也是不够。 如何在准确的中文分词基础上,做更多的分析和挖掘,理解用户的意图,满足用户的需要,是每个搜索引擎公司都在努力做的事情。 用 OpenCV 库 求解 图像颜色分布直方图 什么是 OpenCV OpenCV 是 Intel174。 开源计算机视觉库。 它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个 C 函数的跨平台的中、高层 API。 它不依赖于其它的外部库 ——尽管也可以使用某些外部库。 OpenCV 对非商业应用和商业应用都是免费( FREE)的。 它还 为 Intel174。 Integrated Performance Primitives (IPP) 提供了透明接口。 这意味着如果有为特定处理器优化的 IPP 库, OpenCV 将在运行时自动加载这些库。 【 11】 OpenCV作为开放的数字图像处理和计算机视觉软件平台,有以下特点: ① 开放 C 源码。 ② 基于 Intel 处理器指令 集开发的优化代码。 ③ 统一的结构和功能定义。 ④ 强大的图像和矩阵运算能力。 ⑤ 方便灵活的用户接口。 ⑥ 同时支持 MSWindows 和 Linux 平台。 作为一个基本的计算机视觉、图像处理和模式识别的开源项目, OpenCV 可以直接应用于很多领域,作为二次开发的理想工具。 13 求解 图像颜色分布直方图 实例 以一幅彩色图像为例, 求解其对应的颜色分布直方图,并附上求解过程的源代码 ,对应的程序流图见图。 输入图像: 输出直方图分布图像: include 14 include include iostream using namespace std。 int main( int argc, char** argv ) { IplImage * src= cvLoadImage(F:\\)。 IplImage* hsv = cvCreateImage( cvGetSize(src), 8, 3 )。 IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 )。 IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 )。 IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 )。 IplImage* planes[] = { h_plane, s_plane }。 /** H 分量划分为 16 个等级, S 分量划分为 8 个等级 */ int h_bins = 16, s_bins = 8。 int hist_size[] = {h_bins, s_bins}。 /** H 分量的变化范围 */ float h_ranges[] = { 0, 180 }。 /** S 分量的变化范围 */ float s_ranges[] = { 0, 255 }。 float* ranges[] = { h_ranges, s_ranges }。 /** 输入图像转换到 HSV 颜色空间 */ c。基于php的图片搜索引擎
相关推荐
好 、 完全控件式的页面布局,使得新闻的录入工作更简便,许多选项包括新闻分类、 新闻列表、新闻出处 等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。 对常见网站的新闻管理的各个方面:新闻录入、浏览、删除、修改、搜索等方面都大体江苏畜牧兽医职业技术学院 毕业论文(设计) 5 实现,实现了网站对即时新闻的管理要求。 通过相关调查,要求该系统应具有以下功能: 1.
cript的语言,最明显的就是当我们登录成功点击每一个按钮的时候它的执行操作都是一个鼠标点击事件,而且它的源码是 ().onclick 而我们的程序中是用的 ajax的方法所写 [3]。 function shangchuan($i){ $a = $i[39。 title39。 ]。 $b = $i[39。 content39。 ]。 $c = $i[39。 img39。 ]。 $d =
三步 :所有同数据库相关的操作,都由 PHP 来完成。 PHP 可以很好地完成同数据库的交互。 第四步 :PHP 从数据库中取得数据后,将文件内容转化为 HTML 格式。 第五步 :将 HTML 格式的文件交给 Apache 服务器。 第六步 :Apache 服务器再将其送给客户。 客 户 端M y S Q L数 据 库W e b 服 务 器页 面 返 回客户请求交 服 务
M A X 7 5 0C 1C 2 (a) 上电复位电路 (b) 手动复位电路 (c) 自动复位电路 图 复位电路 手 动 复位电 路 是上电复位与 手 动 复位相结合的方 案 ,如 图 (b)所 示。 上电复位过 程与 图 (a)所 示 相 似。 手 动 复位时,按下复位按 钮 ,电容 C通 过 1kΩ电 阻 迅 速 放电,使 RST端迅 速 变 为高电 平 ,复位按 钮松 开 后,电容通 过
nextents 1 16 maxextents 99 17 pctincrease 0) 18 tablespace hyuser。 表已创建。 SQL select * from books。 BOOKID BOOKNAME CATEGORY AMOUNT LEFT_AMOUNT ISDISCOUNT PRICE DISCOUNTPRICE AUTHOR PUBLISH
OpenGL 需要的动态链接库 OpenGL 需要的头文件 OpenGL 指的是开放图形程序库 (Open Graphics Library),是由 Silicon Graphics Incorporated(SGI 公司 )为其图形工作站 IRIS 开发的一种快速的、高质量的 3D 图形软件,是近几年 发展起来的一个性能卓越的三维图形平台。 它的独立性、开放性、前瞻性和跨平台性。 它被集成到