DreamBlooms/HansPub-15000-to-45000 huggingface dataset:
system: [SYSTEM]

user: 4. 朴素贝叶斯模型的应用 运用朴素贝叶斯分类器来解决天气图像识别问题：根据图像的要素来判断图像中的天气属于哪一类 [ 8 ] 。从试验数据中筛选一组数据集合(部分内容见表1)，我们可以将因变量划分为两类： 雾霾天气W N 和沙尘天气W Q Table 1 Part of the test data se 序号 色相均值 饱和度均值 亮度均值 天气现象 1 0.3008 0.0067 0.7058 雾霾 2 0.5671 0.0693 0.5632 雾霾 3 0.5402 0.1159 0.6693 雾霾 4 0.5867 0.3455 0.5803 雾霾 5 0.4532 0.0452 0.5539 雾霾 6 0.1084 0.6269 0.7579 沙尘 . . . . . . . . . . . . . . . n − 2 0.0973 0.5314 0.7281 沙尘 n − 1 0.0878 0.4673 0.5568 沙尘 n 0.0946 0.5699 0.6213 沙尘 表1. 试验数据集合(部分) 可以从原始数据中选取合适的自变量：色相均值X 1 、饱和度均值X 2 、亮度均值X 3 。其中每一类自变量我们可以将其划分为三种属性 [ 9 ] ： 色相均值X 1 ： ； ； 饱和度均值X 2 ： ； ； 亮度均值X 3 ： ； ； 现在给定一组自变量数值X：(X 1 = 0.0871；X 2 = 0.4930；X 3 = 0.6598)让我们来判断图像中的天气是雾霾还是沙尘天气？ 显然，我们的任务是判断图像中的天气情况，确定所选图像天气情况W取值(W N 或W Q )。为此，我们拿出图像中天气的一类情况进行考虑(其他类别同此分析)，构建朴素贝叶斯网络分类器。因变量W的类别是W N ，其他3个自变量X 1 、X 2 、X 3 分别代表色相均值，饱和度均值，亮度均值。根据朴素贝叶斯假设子结点之间没有任何的依赖关系，即自变量之间相互独立。 其中j属于自变量的属性，根据给定的一组自变量数据和之前我们对自变量的属性分类，我们可以将上式改写为： 为计算W N 的值，需要从表1所示的集合中估计出概率：P(W N )、P(x 11 |W N )、P(x 22 |W N )、P(x 33 |W N )、P(W Q )、P(x 11 |W Q )、P(x 22 |W Q )、P(x 33 |W Q )等。 其中部分算法如下： 我们可以将处理后的所有条件概率汇总于表2，表3。 所以有： 可见，朴素贝叶斯分类器将该图像的天气现象归为沙尘W Q 类。将上述概率进行归一化，可得到朴素贝叶斯分类器对该图像天气现象的识别概率： 上述概率即为我们所修订后的后验概率，当然它们彼此之间没有可比性，因为历史资料告诉我们它 Table 2 The conditional probability of independent variables under the condition of haze W P(x ij |W N ) X 1j X 2j X 3j X i 1 0.0159 0.9206 0.0159 X i 2 0.9365 0.0635 0.1270 X i 3 0.0476 0.0159 0.8571 表2. 雾霾W N 条件下自变量各属性的条件概率 Table 3 The conditional probability of independent variables under the condition of dust W P(x ij |W Q ) X 1j X 2j X 3j X i 1 0.9512 0.0488 0.0244 X i 2 0.0244 0.4878 0.1463 X i 3 0.0244 0.4634 0.8293 表3. 沙尘W Q 条件下自变量各属性的条件概率 们各自出现的概率本来就不是平均的。所以我们再引入增长率 ，它表示后验概率在其对应的先验概率的基础上的增量。此时我们在结合增长率之间的大小就可以对该天的天气现象做出相应的预报[ 10 ] -[ 15 ] 。 如天气现象预报情况为：最有可能出现沙尘W Q ，且出现的概率为P Q = 99.66%。而所选图像为沙尘天气，这与我们所得结果正好吻合，这也验证了朴素贝叶斯预报模型的适用性，为了进一步验证模型天气图像识别的准确性，我们用同样的方法选取多组自变量数值X进行检验，分别选取沙尘和雾霾的天气图像多张进行检验，准确率达到了80%以上。
system: [SYSTEM]

user: 5. 结论 本文提出了一种基于贝叶斯分类方法的天气图像自动识别方法。主要是对雾霾和沙尘两种天气图像进行识别分类，通过数字图像处理提取图像的色相、饱和度和亮度等特征，采用贝叶斯分类，建立贝叶斯分类模型，通过仿真验证了该模型的有效性，有比较高的准确性，准确率达到了80%以上。本方法可以适用于不同天气现象的识别，在天气现象识别方面可以取代人工观测，节省大量的人力物力，且本方法简单可靠、经济适用、精度较高，可以应用在船舶、机场等天气识别的场合。
system: [SYSTEM]

user: 摘 要 本文设计了一种智能电网中的链路故障快速恢复算法，并对算法进行了验证。本文方法解决了链路故障恢复三个方面的问题：1) 链路故障探测，2) 计算备份多播树的算法，3) 快速备份树的建立。首先，本文设计了基于Openflow的链路故障探测和上报机制，来探测链路故障。Openflow是一种开源框架，将网络管理的控制和转发平面进行分离。其次，本文设计了多播回收机制，通过计算备份多播树来最小化控制信号的开销。本文证明了多播回收问题是一个NP难问题，并提出一种相应的算法来解决该问题。最后，本文设计了一种优化算法，通过在多播组之间共享规则来查找到接近最优的转发集合，同时降低了备份树和控制机制之间的时间开销。本文在POX Openflow控制器上使用Mininet仿真器评估了所提出的算法，量化了控制平面的信号和安装时间。 关键词 :智能电网，故障恢复，Openflow
system: [SYSTEM]

user: 1. 引言 电力通信网包括车载变电站集合，由电力变电站、发电机中心、电力负载汇聚点组成，集合中的组件通过输电线路来连接。电网的操作可以通过高频率电压以及现有的相量测量设备(PMUs)进行优化。 PMU器件具有严格的超低数据包延迟和丢包的问题。如果不能满足，PMU器件会丢失一个重要的电力事件，例如雷击，潜在的导致了不正确策略的级联制定，以及相应动作的发生。例如，闭环回路控制应用需要每个数据包8~16 ms的请求延迟[ 1 ] ，如果每个包并没有在规定时间窗内到达，会执行一个错误的操作。最坏情况下，会导致智能电网失效，诸如印度的智能电网失效 [ 2 ] 。 因此，具有敏感和互通要求的网络规定PMU数据必须提供严格的端到端数据保证 [ 1 ] 。为此，互联网的最佳服务模式并不适用于PMU器件的严格包转发策略和丢包率限制 [ 3 ] ，需要建立新的网络架构或者对现有的网络协议进行优化，文献 [ 1 ] [ 3 ] [ 4 ] 提出了高效的网内快速转发和链路交换机故障恢复机制。由于PMUs通过多个位置将数据分发到器件上 [ 1 ] ，因此多播需要在数据分发时对数据进行表示分发。 软件定义网络实现了交换机和路由器数据转发平面和控制平面的分离，实现控制平面的可编程，将转发规则可编程的写到交换机或路由器上。控制平面和数据平面的互通，包括消息转发规则，较为常用的是Openflow协议 [ 5 ] 。 本文使用Openflow定义了新的控制平面算法，并对算法进行优化，以实现对重要智能电网数据的分发，算法安装在网络交换机上。本文设计了网络链路故障的快速恢复算法，链路故障后，数据包不能从该链路进行转发。算法从三个方面对网络链路故障进行了恢复，分别为链路故障检测、预先计算备份多播树以及实现快速备份树的安装。 设计链路故障检测和上报算法Pcount，使用Openflow [ 5 ] 协议检测算法故障。网路内部检测可以降低算法发现故障并进行恢复的时间。但现有方法 [ 6 ] 主要针对端到端的包检测，导致了检测速度较慢。 设计一种经典的优化问题来计算备份多播树。本文定义了一个新问题，多播循环，在链路故障发生之前预先计算备份多播树，最小化备份树的安装时间。该问题优化不同于现有方法 [ 7 ] [ 8 ] 关注于最大化备份路径和主要路径之间的节点和路径脱节。 证明了多播回收问题是一个NP难问题，并提出了一种优化算法，BUNCHY。 提出MERGER，它是一种在多播模式下的Openflow应用，目的是降低转发状态。MERGER使用本地优化方法来创建一个近似最小集合，该集合通过对具有普通子节点的多播树进行转发规则的合并。 设计了两种算法——PROACTIVE和REACTIVE算法——来快速建立备份树。PROACTIVE预先建立备份树转发规则，并且在检测到链路故障之后触发这些规则，检测到链路故障后使用REACTIVE算法来建立备份树。 提供了一种算法执行原型，APPLESEED，使用POX模型，并使用Mininet验证了算法。PCOUNT、BUNCHY、MERGER、PROACTIVE和REACTIVE均在POX [ 9 ] 里执行，POX是一种开源Openflow控制器，每个算法使用Mininet仿真器 [ 10 ] 进行了验证。 本文组织结构如下，第二部分介绍相关工作，第三部分描述PMU器件需求，并介绍Openflow协议。第四部分描述算法，第五部分对所提算法进行仿真实验，第六部分总结全文。
system: [SYSTEM]

user: 2. 相关工作 Gridstat [ 1 ] 是一个出版订阅系统，是首个考虑实现智能电网数据分发系统的研究项目。Gridstat是构建在现有网络协议(例如IP，MPLS)上的overlay网络，主要关注制定PMU器件更加具有鲁棒性要求的网络协议。 现有工作大部分关注基于端到端的测量来检测包丢失 [ 6 ] ，要求多次检测来确定丢包率。本文算法PCOUNT提出了一种更快速准确的单一链路包检测方法，直接测量出网路内部的准确流量。 不同于多播的情况，预先计算备份树的创新点是MPLS快速重路由算法来重路由时间优先的单播IP流 [ 11 ] 。现有工作中计算备份树使用本地优化标准计算路径的方法，例如单一多播树特定条件，本文还考虑了网络标准，例如多个多播树的特定条件。此外，现有工作中并没有对最小化控制面板信号进行研究，本文在多播回环问题中，对该问题进行解决。备份路径或者备份树是通过计算与主路径脱节的最大节点来得出的 [ 7 ] [ 12 ] 。
system: [SYSTEM]

user: 3. 预言 3.1. PMU器件及其QoS需求 本文设计了算法对多播智能电网数据的可靠性，特别是PMU器件QoS要求的数据进行处理。参考文献 [ 13 ] 详细介绍了PMU器件的QoS要求细节。本文算法通过提供可靠的数据分发，使得PMU器件可以执行准确及时的操作。 3.2. 名词和假设 将通信网络建模为 ，这里的 表示一条从 到 的链路， 包括三种节点：能够发送PMU数据的节点(PMU发送节点)，接受PMU数据的节点(数据接受节点)，连接PMU发送节点和数据接受节点的交换机。我们假设 具有 多播树来发送PMU数据。用 表示在 中的 个多播树， 表示一个以 为根节点的多播树， 的直接相邻的边为 ，向量 表示从 到每个 的链路。用 表示所有 边的总权重。 用 表示具有 条边的第 颗树，其中 。对每个定向树 中的每条链路 ，定义备份树 ，备份树是一个有向树，根节点是 ，根节点到每个 的链路是有向路径，例如 。 和 表示原始树和备份树。对每一个原始树 ，具有一个多播流 ，数据接受节点 ，每个 具有一个端到端包延迟需求，并且具有一个丢包率需求。 3.3. Openflow Openflow是一个开源标准将交换设备的控制平面和转发平面进行了分离，并提供了一个可编程的控制框架 [ 5 ] 。所有Openflow算法和协议通过一个逻辑集中的控制器进行控制，同时网路交换设备根据本地转发规则进行包转发。 Openflow提供给了一个交换机流表，每个交换机使用对每个操作进行匹配的方法来对包进行操作 [ 5 ] ：流表根据数据包的包头进行匹配，判断将该数据流进行转发还是丢弃。交换机对每个流实例保存数据。 Openflow并没有提供多播转发模式，因此需要设计多播模式，本文称之为Basic。Basic是一个多播IP地址来标记多播组，并使用这些地址来设定多播树交换机的流表。对每个多播树 ，Basic在每个交换机 上安装一个流表。流表通过组的多播地址来匹配包，并将每个包的备份进行转发，相应出端口的交换机出口连接是 。
system: [SYSTEM]

user: 4. 问题描述 本文提出了一个算法集合，称之为APPLESEED，在链路故障时提高了多播树的鲁棒性，运行在一个Openflow控制器上，目标是最小化丢包率，保证满足端到端延迟的需求。APPLESEED由三部分组成：PCOUNT算法进行快速链路检测，快速安装并计算备份树，快速安装预先计算备份树。 4.1. 使用Openflow进行链路故障检测 本文提出了PCOUNT算法，使用Openflow来检测链路故障。网内检测可以降低丢包发生的时间。快速包检测对PMU器件来说是至关重要的，PMU器件对丢包率具有极高的敏感度。现有工作 [ 6 ] 大多关注于使用端到端的测量来评估丢包率，导致了检测时间超长。PCOUNT考虑当丢包了超过一定门限时，将该链路定义为失效。本文定义的一个链路是指：两个Openflow交换设备之间的端到端连接称之为一条链路。文章 [ 13 ] 中，详细介绍了PCOUNT算法检测多个交换机之间的丢包率。 对一个长度为 的时间窗口，PCOUNT评估一个链路 的丢包率，检测在链路 上的流 的丢包率，步骤如下： 1) 安装规则来计算所有在节点 收到的标签 的包。对在节点 上的每个流 ，安装流表，使用标签模块在第二步的节点 ，对流打标签。 2) 在节点 对所有流 打标签。假设 使用流表 来匹配和转发流 的包。首先，PCOUNT算法生成一个唯一的标签，然后，对每个流 ，PCOUNT算法创建一个新的流表 ， 是流表 的备份，不同的是， 包括数据包dl_vlan区域的标签。 比 具有更高的Openflow优先级，来保证每个 数据流均能被打上标签。 3) 在 时间窗口执行完之后，停止对节点 打标签，同时对 进行包统计。每个打标签规则在 都是单独进行查询的，在 进行一个聚合查询。 4.2. 计算备份树 APPLESEED预先计算一个备份树，当PCOUNT监测到一条链路故障时，预先计算的备份树对这条故障链路进行恢复。本文在这里提出了一个新问题多播回收，来计算备份树并且提出了相应的算法BUNCHY。 4.2.1. 多播回收问题 多播回收问题的目标是计算备份树来最大化初始树的边。回收初始树使用SDN控制器来保证初始树的转发规则安装到网络里，而不是新建立一套转发规则。在检测到链路故障时，备份树开始建立，并恢复之前的网络链路。 初始树 ，它的备份树是 ，我们定义一个二进制向量 ，对所有的 ，如果 具有相同的前向树 和 ，这时 。否则， 。对于 和 ，定义： (1) 是需要安装 新规则的数量。 我们将多播回收问题定义为改进的斯坦纳树问题，称之为STEINER-ARBORESCENCE。对与根节点 和 来说，用 表示在 上计算斯坦纳树，根节点是 ，生成树是 ，这里的 。 多播回收的输入是 ，这里的 是一个有向图， 中的每个 是使用 的初始树，这里 。对每个初始树使用 的输出是一个备份树。备份树的集合可以是 ： (2) 这里， ， ， 表示 的节点权重之和。目标函数是最大化重使用的初始树的边，同时 的约束是如何在最小化 的同时生成的备份树的最大值。 定理4.1. 多播回收问题是一个NP难问题 证明详见参考文献 [ 13 ] 。 4.2.2. Bunchy最优化算法 Bunchy是解决多播回收问题的简单最优化算法。对每个链路 ，APPLESEED算法使用BUNCHY对每个初始树使用链路 来计算备份树。 给定 ，对每个 ，Bunchy通过两个步骤来计算 。首先，生成一个 的备份 ，并且将 从 中删除。设定链路权重 为0，设定 为1。然后，对 运行STEINERP- ARBORESENCE优化算法，并且使用 作为结果。如果 满足公式(2)，将 作为最优解，否则，返回错误。 设定初始树的链路权重为0，在第一步中，STEINERP-ARBORESENCE优化算法不产生任何成本的使用初始树的链路，促进了初始树边的重使用。如果Bunchy算法在第二步骤中返回错误，则需要将 的取值调整的更大，或者生成一个新的多播树来满足树大小的限制。 4.3. 安装备份树 安装备份树有两个步骤：首先，计算需要安装转发规则的交换机的数目，以及相应的需要生成的Openflow流表的个数。然后，控制器向相应的交换机发送安装信号，来安装转发规则。本文将介绍两种安装算法：PROACTIVE和REACTIVE。这两种算法均计算转发规则，来同时生成一个单一的备份树。初始树为 ，备份树为 ， 。 REACTIVE算法：首先确定需要新转发规则的节点。如果 和 在节点 使用同一个输出链路，那么在节点 不需要安装新的转发规则。转发规则仅在 和每个 ，节点在 和 具有不同的输出链路。对每个节点，REACTIVE算法预先计算流表来匹配 多播地址的包。最后，当 失效时，REACTIVE触发交换机来安装预先计算的转发规则。 PROACTIVE算法：该算法在初始链路 失效之前，计算并安装备份树流表。由于该算法仅触发单一节点的备份安装，因此故障恢复速度比较快。当由于转发操作错误引起的链路故障，该算法不能不加修改的安装备份。对一个节点使用该算法时，初始树和备份树的节点输出链路必须是不同的。 为了解决该问题，PROACTIVE算法对每个备份树指派了一个唯一的备份树id，表示为bid。每个备份树使用bid进行流表匹配和包转发，将bid值写入到dl_src区域。当备份树 被触发时， 的根节点将bid的值写入到dl_src包头，表示这些包应该由 来转发而不是由 来进行转发。 4.4. 优化多播树安装 Basic多播安装需要在每个多播树节点创建一个流表，使用多播树地址来匹配输入包。因此，一个交换机可能有多个流表实例来执行相同的转发操作。作为Basic的优化算法，我们提出了Merger算法，该算法计算Openflow转发规则的近似最小集合，通过在每个节点将流表中具有相同输出链路的规则进行聚合。MERGER算法降低了故障恢复的备份树安装规模。
system: [SYSTEM]

user: 5. 实验验证 本文使用POX控制器 [ 9 ] 来执行上述第四章节中的算法。POX控制器基于Openflow 1.0并且运行在Mininet 2.0.0版本 [ 10 ] 上。实验环境是使用Linux操作系统，具有2.33 GHz Intel(R) Xeon ® CPU，15 GB RAM。Mininet的配置是运行在Oracle Virtal Box虚拟机上，并且安装了4 GB RAM和单核CPU。使用Mininet软件交换机，Open vSwitch，APPLESEED运行在VirtualBox VM上。 5.1. 链路故障检测器 本文运行两个模拟器来评估PCOUNT算法，首先，我们度量PCOUNT算法的丢包率，然后评估当PCOUNT监测到更多的数据流时交换机和控制器的性能。 丢包率评估的准确度：如图1所示PCOUNT测量链路 上的丢包率，我们生成 个多播组，每个 多播包向接受节点 以每秒钟60个数据包的速率发送数据包。Basic算法使用多播模式，实现了从节点 到 的 个流表。本文设定 ，使用Minniet模拟器，通过节点 到 的数据包服从贝努利分布，丢包率为 。 本文对PCOUNT算法丢包率的准确度进行了度量，优化了PCOUNT算法的检测器数据流参数，对丢包率实现了更为准确的度量。PCOUNT对每一个监测到的数据流进行计算，表明如果有失效的数据流发生了错误，该数据流是PCOUNT没有监测到的。本文使用一个实例来说明该算法，设定 ， 。 图2对比了PCOUNT链路丢包率函数为 ，置信区间为95%，结果表明，每个数据流随机选取，监测到 的数据流有 ，对每个 ，置信区间运行100次模拟。 PCOUNT估计丢包率是非常准确的，95%的置信区间，对所有的 ，有15%的丢包率，对于75个数据包的情况，80%的模拟运行，预计结果为5%的丢包率。 图1. 使用PCOUNT评价的拓扑图 图2. 执行时间对比图，置信区间为95% 执行时间：接下来验证PCOUNT算法在监测数据流的规模变大时，执行时间的变化情况。固定时间窗口为2秒钟，如图1所示，评估 的丢包率。执行时间是指当PCOUNT算法发送第一个静态队列到PCOUNT算法计算出丢包率的时间。如果PCOUNT算法监测到在链路 上集中 数据流的包丢失，该算法将向节点发送一个静态队列，并且发送一个集中数据流队列给节点。Mininet使用linux缺省的调度器，实现的是CPU多进程，保证了交换机为空时，多线程的处理PCOUNT请求。 图2表明了算法的总体执行时间作为PCOUNT算法的数据流数目的一个输入， ，这里每个数据点的平均计算时间均通过超过50次的实验模拟得出。为了评估流表大小对队列执行时间的影响，本文在 和 上设定了 个流表项。算法的执行时间大部分都是在交换机上处理 个静态队列的时候消耗掉的，执行时间根据 成倍数增长，在每个 流表项之间都会产生一段较长的时间间隔。本文的实验结果表明，为了获得合理的执行时间，只监控少于75次的流就可以满足实验要求。 由于交换机在每次模拟之间是空闲的，因此，CPUs在软件交换机上所产生的能耗比硬件交换机模式下将更多 [ 14 ] ，本文的实验结果低估了处理时间。此外，PCOUNT算法执行贝努利试验会丧失部分优越性，原因是在所有流中的丢包率是均匀的，并且丢包的发生也是有规律的。同时，实验结果并没有统计和监测大规模流队列的丢包情况。因此，使用PCOUNT算法的实际效果应该比贝努利试验得到的效果更优越。 5.2. 备份树安装模拟器 在本部分，我们将模拟单一链路故障的情况，并且测量故障恢复时间，交换机存储开销，控制平面信号，以及PROACTIVE算法和REACTIVE算法在没有进行MERGER优化情况下的垃圾回收开销。由于篇幅限制，本文仅说明了控制平面的信号结果，并简单介绍了总体实验情况。实验的详细步骤和结果参见文献 [ 13 ] 。 设定：使用IEEE总线系统14， 30， 57和118 4 ，以及基于IEEE总线系统的合成图。合成图的生成方法，参见参考文献[ 13 ] ，该文献中使用了IEEE总线系统作为一个临时模板生成具有相同度分布的合成图。 我们假设物理总线系统拓扑的网络总体沟通成本是可以全部检测到的，一个Openflow交换机安装在每个总线上，也安装在两个单向链路之间，每个方向上交换机的配置相同。设定PMUs器件测量电压和当前总线的相量，之后将测量结果发送给第一跳链接的交换机，之后通过Openflow交换机对PMU测量结果进行广播。 对每个总线系统 来说，我们生成了 个交换机， 个节点的合成拓扑，并且将链路权重设定为1。 然后，随机生成 个多播组，每个组有 个随机终端节点，使用STEINER_ARBORESCENCE 近似算法来生成 个初始树。BUNCHY算法中 ，然后对每个初始树进行预先计算，对每个初始树链路生成一个备份树。之后，我们将一个随机链路 关闭，制造链路故障，触发REACTIVE算法和PROACTIVE算法，来设定备份树。对每个 ，生成35个不同的有向树，3个随机的多播组集合。 本文对比了安装备份树的控制信号，在网络中安装备份树的信号是初始树 的函数。图3表明REACTIVE算法运行在BASIC和MERGER模式下的结果，使用基于IEEE总线系统57来生成有向拓扑图。实验结果的趋势可以用来说明整个网络的状况。 REACTIVE + LB计算出链路 失效后需要安装的备份树 的最小个数，计算出 在每个节点出向链路的集合数目 ，制定 在 转发包的规则。将通过 的节点数相加，并返回其下限值。 信令开销结果：PROACTIVE比REACTIVE的信令开销更小，甚至比REACTIVE + LB的开销也小。PROACTIVE通过使用故障链路给备份树的根节点发送一个控制信息来触发备份树。REACTIVE必须给多个交换机同时发送信号才能安装备份树。 图3. 触发备份树的控制信号个数 对REACTIVE而言，BASIC和MERGER之间的差距增加了备份树的数目，因为随着 的增长，MERGER可以重复使用备份树的转发规则。实验结果表明当 时，MERGER由于重复使用了转发规则，将节省75%的开销。平均而言，MERGER仅需要LB算法25%的信令消息，这表明MERGER的本地优化并没有因为流的聚合而丧失优越性。 其他实验结果：使用上述相同的实验设定，本文将 进行量化， 是PROACTIVE算法根据转发规则需要预先安装的备份树的数目，安装备份树的时间，垃圾回收开销。我们发现这三种评价指标的值与信号开销成正比。
system: [SYSTEM]

user: 6. 总结 本文对智能电网数据多播的可靠性进行了研究，提出并设计了一种快速丢包监测和快速故障恢复方法，通过预先计算并安装备份树实现了快速的网络链路故障恢复。由于预先计算备份树的方法需要改变现有网络的交换机，因此，本文使用Openflow交换机来实现新的转发规则。 首先提出了PCOUNT算法，使用Openflow协议来预先监测网络内部丢包率。然后，设计多播回收算法来计算备份树，并且重利用多播树的边界规则来降低控制平面的信令。多播回收被证明是NP难问题，本文提出了一种近似算法来对该问题进行求解。最后，提出了PROACTIVE和REACTIVE算法，安装在Openflow交换机上来执行。为优化PROACTIVE和REACTIVE算法，本文提出了MERGER算法，将交换机上的转发规则进行合并，这些交换机必须是多播树的普通子节点。 Mininet模拟器表明当监视短期时间窗的小规模流时，PCOUNT算法的准确性。通过预先安装备份树，PROACTIVE算法的时间开销是REACTIVE算法的十倍，因为相比REACTIVE算法的控制信令发送机制，PROACTIVE算法必须为每个多播信令交换机安装备份树。最后，我们发现MERGER算法比PREACTIVE算法降低了2倍到2.5倍的控制平面信令开销。
system: [SYSTEM]

user: 摘 要 图像形状特征的提取是图像检索中重要的研究内容，本文提出一种基于复杂网络模型的图像形状特征提取方法。提取图像的SIFT关键点，在此基础上进行分块处理并逐一在每个子图上面构建复杂网络初始模型，利用最小生成树分解的方法对网络进行动态演化，提取不同子图不同时刻下的网络特征作为形状特征。本文将形状特征与颜色特征、纹理特征进行融合，通过实验比较，说明此融合方案在CBIR应用中确实具有优势。 关键词 :基于内容的图像检索，复杂网络，关键点，拓扑结构，多特征融合
system: [SYSTEM]

user: 1. 概述 目前，复杂网络在图像特征提取中的应用受到了越来越多研究者的关注 [ 1 ] 。Goncalves等人通过对人脸图像建立复杂网络模型，实现了人脸图像的特征提取与识别 [ 2 ] 。Backes等人利用复杂网络模型对文理图像进行建模，然后利用复杂网络的常用统计量进行描述并分类 [ 3 ] 。该方法提取到丰富的纹理图像特征，对纹理图像具有较高的分类精度。Tang等人通过对图像的结构进行分析，建立了复杂网络模型，实现了不同结构图的识别及分类 [ 4 ] 。Backs等人利用复杂网络的方法进行形状边界分析 [ 5 ] ，进一步又提出了将复杂网络与多尺度的分形维数相结合来进行形状分类 [ 6 ] 。该方法中的复杂网络模型表示都是基于形状边缘点之间的欧式距离。但研究表明，上述方法往往受一些非刚性变形的影响较大、稳定性较差、抗噪声能力较弱，因此图像形状特征的提取在基于内容的图像检索中具有了重要的研究意义 [ 7 ] [ 8 ] 。对于形状特征的提取主要可以基于轮廓形状 [ 9 ] [ 10 ] 、基于区域形状以及基于关键点 [ 11 ] [ 12 ] 。基于关键点的形状特征提取，一般是先对图像提取一些关键点，如Harris角点、SIFT关键点等，然后根据关键点建立加权网络，其中图中的顶点表示每个关键点，而图的表示图像关键点之间的空间距离关系，边的权值表示所连接顶点之间的欧式距离。由于任意两点之间存在边相连接，所以该网络是一个完全图，然而这种完全图并不具有明显的拓扑结构特征，因此，很难实现对多幅不同图像的特征提取。本文为了解决这一问题，对该网络进行基于边的权值动态演化，可以得到一系列子图，联合这些子图的拓扑特征，将最大度、平均度、平均联合度、平均最短路径长度、平均聚类系数作为特征，来实现图像的形状特征提取。由于基于复杂网络的形状特征提取是根据统计特征得以实现的，因此这种形状特征具有稳定性好、抗噪声能力强等优点。 本文在上述形状特征提取的基础上，实现形状、颜色、纹理多特征融合。其中颜色特征选取HSV颜色直方图并结合动态金字塔技术，从原图像以及不断进行动态变换后得到的图中共同提取HSV颜色直方图进行统计作为本文实验的颜色特征，纹理特征选取HOG描述器并结合3D-LBP技术，首先将图像进行3D-LBP处理可以得到三幅新的图像，再利用HOG描述器从原图像以及衍生出三幅图像中提取特征作为纹理特征。实验过程中，还涉及到主成分因子分析PCA降维等技术的运用。实验选用大家公认的图像检索测试图片库Corel 1000 database为平台(共10个类，每类100幅图片)，通过检索性能来评价本方案的特征融合的优劣。
system: [SYSTEM]

user: 2. 基于复杂网络的图像特征提取 2.1. 特征描述与动态演化 复杂网络存在大量的特征描述，本文选取了最大度、平均度、平均联合密度、平均最短路径长和平均聚类系数这些特征来度量复杂网络的重要属性。 演化是复杂网络的一个重要特征，在动态演化下，复杂网络的特征是一个关于时间的函数，在同一种演化方式下的两个网络具有不同的特征 [ 8 ] 。所以，应用网络演化过程中不同时刻的相关度量来进行图像形状特征提取是非常关键的。 2.2. 利用图像关键点构建复杂网络 本文在提取关键点时，采用的是SIFT提取算法。对图像的SIFT关键点建立加权复杂网络模型： ，其中 代表网络中的定点，表示的是图像中的关键点， 代表网络中的边，表示图像关键点之间的空间距离关系，而边的权值为所连顶点之间的欧式距离。由于任意两点之前均存在边相连接，故该复杂网络是一个完全图。这种完全图并不具有明显的拓扑结构特征，所以很难实现对图像的形状特征提取。 2.3. 复杂网络的动态演化实现 为了解决这一问题，文献 [ 9 ] 使用了边的权值对上述完全图进行动态演化得到一系列子图，并根据这些子图对完全图进行动态演化得到一系列子图，并根据这些子图实现对完全图的特征提取。但这种方法存在弊端，因为在动态演化过程中很难保证各个子图相联通，进而对子图提取特征常带来一定困难。因此，本文在文献 [ 9 ] 的基础上，先将图片进行分块处理，再利用最小生成树分解的方法给出一种全新的动态演化方案，详细步骤如下： 其中， 是最小生成树算法， ， 为初始的完全图， 是第 次动态演化得到的最小生成树， 是第 次动态演化得到的子图， 为 相对于 的补图。 图1展示了图像关键点分块到建立复杂网络模型再到进行动态演化的全过程。首先对图片进行SIFT关键点提取，再将提取好的关键点进行分块处理，这样可以使得特征提取效率大大提高，然后逐一对分块子图中的关键点建立复杂网络模型，并根据最小生成树进行动态演化，最后从各个演化网络拓扑结构中提取形状特征。 2.4. 基于复杂网络拓扑结构的特征提取 根据各个分块子图动态演化过程中得到的 ，分别计算以下特征值：最大度、平均度、 图1. 关键点分块及其复杂网络建模动态演化 平均联合度、平均最短路径长和平均聚类系数。再将不同分块子图的不同动态演化时刻下对应各个网络特征值串联起来，组成特征向量。 如图1分块子图A的形状特征可由特征向量： (1) 表示，其中 分别对应分块子图 各动态演化 时刻的最大度、平均度、平均联合度、均最短路径长和平均聚类系数。而特征向量 则可以表示该图像的形状特征。在本文中，令 ，故运用上述提取方法，一副图像可获取270维的形状特征。
system: [SYSTEM]

user: 4. 实验 实验图像数据库：采用Corel数据库，该数据库包含1000幅图像，图像大小为 或 。图像共分为10类，每类100张，按语义可分为：非洲(Africa)、海滩(Beach)、城堡(Buildings)、公交车(Buses)、恐龙(Dinosaurs)、大象(Elephants)、花(Flowers)、马(Horses)、山(Mountains)和食物(Food)。 本文相似性度量使用的是Euclidean距离。先将各个向量进行归一化，后通过计算特征数据之间的Euclidean距离，根据距离数值从小到大将各个图像进行排列，若距离越小，则可以认为两幅图像越相似。 检索性能参数选用查全率、查准率。查准率指的是检索结果中相关图像数与检索结果集合中的所有图像数(包括相关图像和不相关图像)的比值。在CBIR系统返回的检索结果中，相关图像数越多，则查准率就越高。查全率指的是系统返回的检索结果结合中，相关图像数与图像库中所有相关图像数的比值。查全率和查准率越高，则该CBIR系统检索性能就越好。 图6展示的是本文方案查准率与查全率变化曲线。通过比较图6与文献 [ 21 ] ，本文方案优于文献 [ 21 ] 中方案。本文特征不仅基于复杂网络提取了图片的形状特征，而且还通过3D-LBP及Harr小波变换分别提取了颜色特征和纹理特征，因此检索效果较好。 图6. Precision-Recall曲线
system: [SYSTEM]

user: 5. 结论 本文给出了一种基于复杂网络模型的图像形状特征提取方法。提取图像的SIFT关键点，在此基础上进行分块处理并逐一在每个子图上面构建复杂网络初始模型，利用最小生成树分解的方法对网络进行动态演化，提取不同子图不同时刻下的网络特征作为形状特征。除此之外，本文还实现了形状特征与颜色特征、纹理特征进行多特征融合。颜色特征选取HSV颜色直方图并结合动态金字塔技术，从原图像以及不断进行动态变换后得到的图中共同提取HSV颜色直方图进行统计作为本文实验的颜色特征，纹理特征选取HOG描述器并结合3D-LBP技术，首先将图像进行3D-LBP处理可以得到三幅新的图像，再利用HOG描述器从原图像以及衍生出三幅图像中提取特征作为纹理特征。实验表明，利用融合后的方案进行图像检索，与现有传统特征相比，本文方案检索效果更好，充分说明多特征融合在CBIR应用中确实具有优势。
system: [SYSTEM]

user: 摘 要 目的：探讨数据挖掘技术中的关联规则与决策树分类在中医肝病诊断中的应用。方法：整理筛选来自某中医医院肝病科电子病历的数据，利用Weka数据挖掘软件对其进行数据分析，主要采用关联规则中的Apriori算法和决策树分类中的C4.5算法。结果：经算法分析产生十条相关规则，并生成中医常见肝病的决策树，揭示了检查指标与中医辨证间的关系。结论：数据挖掘结果与医生实际诊断结果基本一致，可将该方法用于基于电子病历的疾病诊断，具有一定实用价值。 关键词 :中医肝病，电子病历，数据挖掘
system: [SYSTEM]

user: 1. 引言 中医肝病是指肝脏的正常生理功能受损而出现的各种病理表现，根据患者不同的临床表现辨病为黄疸、积聚、肝癌、肝着、臌胀等[ 1 ] [ 2 ] 。肝脏疾病大多属于慢性难治性疾病，严重影响了患者的身心健康，因此提高肝病的诊疗水平将减轻患者痛苦，提高其生存质量。本文选用某中医院的肝病科电子病历数据，通过整理筛选建立中医肝病数据库，并运用数据挖掘技术中的关联规则和决策树分类对数据进行分析与探索性研究，探讨中医肝病与症状之间的联系，以期为中医肝病诊断研究提供借鉴作用。
system: [SYSTEM]

user: 2. 研究方法 2.1. 数据来源及预处理 2.1.1. 数据来源 研究对象来自就诊于湖北省中医院门诊及住院患者，病例的采样时间为2013年1月~12月，原始病例210例。 2.1.2. 纳入标准 ① 符合西医诊断标准。② 符合黄疸、肝着、鼓胀、积聚、肝厥和肝癌六大中医证型诊断标准者。③ 愿意接受研究者。④ 年龄18~75岁。 2.1.3. 排除标准 ① 不符合病例纳人标准者。② 重叠患有除肝病以外的重大疾病患者，如精神病患者、心血管患者等。③ 妊娠或哺乳期的女性患者。 2.1.4. 数据预处理 对原始病例按患者ID和就诊时间进行预处理，主要工作是提取与中医肝病相关的数据属性，并进行适当的筛选，并进行了规一化处理，最终保留中医诊断病名、病位、病性、舌色、舌苔等61个属性，纳入病例98例。 2.2. 数据挖掘方法 数据挖掘具有自动预测趋势和行为、概念描述、关联分析、分类、聚类、偏差检测等功能，常用的方法有关联规则、决策树分类、朴素贝叶斯分类、K-means聚类等，为研究中医肝病与症状之间的关联性，本文主要采用关联规则及决策树分类对电子病历数据进行分析。 2.3. 数据挖掘软件 本文使用的数据挖掘软件是Weka (Waikato environment for knowledge analysis)，由新西兰怀卡托大学开发，主要用于数据挖掘和知识发现的数据挖掘软件。它集合了大量机器学习算法，包括对数据进行预处理、分类、回归、聚类、关联规则，并可将结果在交互式机器上进行可视化演示[ 3 ] 。 2.4. 数据挖掘算法 2.4.1. 关联规则 关联规则是从数据库或数据仓库中抽取频繁出现的模式，以寻找两个或多个属性取值之间存在的某种规律性。常用的关联规则分析算法包括Apriori算法、频繁模式增长(FP-增长)方法、多维关联规则挖掘等。本文采用的是经典Apriori算法，该算法是一种基于水平数据表示、广度优先搜索的挖掘算法，结构简单，易于理解，没有复杂的推导[ 4 ] 。 2.4.2. 决策树分类 决策树方法是解决分类问题的一个有效方法，它能很容易地构造出规则，而且规则通常易于理解和解释。决策树是一个类似于流程图的树状结构，其中每个内部节点表示在一个属性上的测试，每一个分枝代表一个测试输出，而每个树叶结点代表类或类分布，决策树的生成则是一个从上而下、分而治之的过程[ 5 ] 。决策树分类的算法有ID3算法、C4.5算法、C5.0算法等，本文采用经典C4.5算法，该算法可以处理具有连续值的属性，并使用信息增益比来作为选择根节点和各内部节点中分枝属性的评价标准，克服了ID3算法在选择属性时偏向于取值较多的属性的不足[ 6 ] 。
system: [SYSTEM]

user: 3. 研究结果 3.1. 中医肝病分布情况 纳入的98例肝病患者经中医辨病，病名分布由高到低依次为肝着(37例)、积聚(18例)、黄疸(11例)、肝癌(9例)、臌胀(6例)、肝积(4例)、肝厥(3例)、血证(3例)、肝癖(3例)、水肿(2例)、胁痛(1例)、心悸(1例)，其分布情况如图1所示。 3.2. 关联规则结果分析 在将数据进行关联规则分析计算之前，对数据进行了规范化处理，并在Weka软件中设置好最小支持度与最小置信度。支持度是指事务集D中包含XUY的事物所占的百分比，置信度是指事务集D中包含X的事务同时也包含Y的百分比，即support (X→Y)=P(XUY)，confidence (X→Y)=P(X|Y)。这里设置最小支持度为0.15，最小置信度为0.7，得到的相关关联规则结果如表1所示。 本研究是基于肝病住院病历的相关数据，故所有记录的病位都包含肝。从图1中医肝病分布图中可以发现肝着所占的比例较大，在关联规则数据挖掘的结果中也体现了该点。肝着一般是因肝热病、肝瘟等之后，肝脏气血瘀滞，着而不行。若证型为肝郁脾虚证，则是肝胆气郁，横犯脾胃，脾失健运所致。由此可见，诊断为肝着，且病位包含脾时，证型极大可能为肝郁脾虚，即表1第2条规则所示。当肝细胞损伤时，血液中胆红素会升高，此时巩膜会出现黄染，随之皮肤粘膜也会出现黄染，对应表1的第4条规则。如黄疸患者的皮肤、巩膜等组织会出现黄染，严重时尿、痰、泪液及汗液也会出现黄染。 3.3. 决策树分类结果分析 由前面中医肝病分布图可以发现，肝厥、血证、肝癖、水肿、胁痛、心悸的记录数量较少，所以进行决策树分类时只针对记录数为前六位的症状。将处理好的数据通过Weka软件计算分析后，可以得到如图2 图1. 中医肝病分布图 Table 1 The calculation results of association rule 序号 属性1 属性2 出现频次 属性3 出现频次 置信度 1 中医诊断 = 肝着 病性 = 本虚标实 21 证型 = 肝郁脾虚 21 0.97 2 中医诊断 = 肝着 病位 = 脾 24 证型 = 肝郁脾虚 23 0.96 3 中医诊断 = 肝着 37 证型 = 肝郁脾虚 35 0.95 4 皮肤黄染 = 中度 21 眼巩膜 = 黄染 17 0.81 5 眼巩膜 = 黄染 21 皮肤黄染 = 中度 17 0.81 6 小便颜色 = 较黄 21 病位 = 脾 17 0.81 7 病性 = 本虚标实 病位 = 脾 27 证型 = 肝郁脾虚 20 0.8 8 小便颜色 = 较黄 21 证型 = 肝郁脾虚 15 0.71 9 腹部移动性浊音 = 阳性 24 刻下症 = 腹胀 17 0.71 10 病性 = 本虚标实 47 证型 = 肝郁脾虚 33 0.7 表1. 关联规则计算结果 所示的决策树，其中正确分类为63.53%。 参与分类的属性很多，但经过算法剪枝后，进行分类的属性为身目尿黄染、皮肤粘膜黄染、胁痛等。积聚是腹内结块，或痛或胀的病证，黄疸、胁痛病后，湿浊留恋，气血蕴结，可导致其发生。图2中对积聚进行分类时，就涉及到了胁痛、皮肤粘膜轻度黄染等情况，与前面所述相吻合。 图2. 决策树分类结果图
system: [SYSTEM]

user: 4. 结语 正确的诊断对于确立治疗原则、指导用药以及调理康复等具有重要意义，医院数据库中含有大量有用的诊断信息，利用数据挖掘的相关技术可用来寻找病与症之间的联系、病与病之间的差异等，从而提高诊断水平，规范诊断过程。本文以肝病电子病历中的信息为数据来源，采用数据挖掘技术中关联规则与决策树分类，进行了探索性研究，找到了十条相关规则，并对记录数较多的中医肝病进行分类，形成决策树。算法分析的结果与事实医生诊断结果基本吻合，因此患者可以通过对比自己的临床症状，进行初步的疾病辅助预测，具有一定现实价值。此外，在以后的相关研究中需增加符合纳入标准的病例，提高算法的精度，使得预测结果更准确。
system: [SYSTEM]

user: 摘 要 本文给出了一种基于CUPS (Common Unix Printing System，通用Unix打印系统)的打印控制和管理方法。该方法首先设计并安装一个基于CUPS架构的虚拟打印机驱动，并通过CUPS配置虚拟打印机和物理打印机的访问控制，使得用户只能访问虚拟打印机。当用户从虚拟打印机发起打印请求时，在虚拟打印机驱动内产生打印记录并将管理信息嵌入到作业的每个页面。最后将嵌入管理信息后的打印内容发送给用户指定的物理打印机完成输出。该方法通过对物理打印机的访问控制实现打印控制，并通过存储打印记录和在打印页面上嵌入管理信息实现打印管理。由于该方法建立在CUPS架构上，因此适用于所有使用CUPS架构的操作系统，包括Unix系统、Linux操作系统、国产操作系统以及Mac OS X操作系统。 关键词 :CUPS，虚拟打印机，打印控制和管理
system: [SYSTEM]

user: 1. 引言 随着数字化技术的迅猛发展，目前许多行业和个人普遍都使用电子文档处理资料和保存信息，并且经常通过打印，复印等途径将电子文档中的内容显示在纸张上，以供阅读和传播。这一过程无疑对资料和信息保密是一个重要挑战。存在的问题包括：如何控制用户使用打印机避免纸张浪费和打印机损耗；如何对进行打印操作的用户信息进行记录，并嵌入到打印数据中使形成的纸质文档具有明显身份标识，便于纸质文档管理和来源追踪。 目前已经出现了针对Windows操作系统下的打印控制和管理方法的诸多研究成果及成熟的应用系统，例如黎伶锋等在“打印监控审计技术研究”中公开了Windows系统下常见的四种打印监控技术[ 1 ] 。刘慧 [ 2 ] 在其学位论文中对Windows系统打印原理与网络打印机连接方式以及网络打印协议进行了研究与分析并提出了多种方式实现对网络打印的监控管理方案。北大方正集团在“一种文档打印管控与文档溯源追踪方法和系统”专利中给出的打印管控和文档溯源追踪方法等 [ 3 ] 。出于对企业成本的节约以及对企业信息安全的考虑，不少公司已经在打印机监控方面做出了不少的研究，并做出了许多好的产品。如上海银兆的PrintUsage、上海达安科技的PrinterAdiut打印监控系统、较流行的打印机监控王、山明打印机监控系统、WebJetAdmin等。 然而在UNIX/Linux操作系统或其衍生系统下，尚未出现相应的研究成果。随着Linux系统的广泛使用，该系统下的打印控制和管理方法的重要性已经日渐提升。此外，国产操作系统都是基于Linux的衍生系统，随着国产化的推进和保密要求的日渐严格，此类操作系统下的打印控制和管理方法也越来越具有重要意义。Unix/Linux下打印总是有许多限制，但如果安装了CUPS (Common UNIX Printing System)，则可以得到一个完整的打印解决方案 [ 4 ] ，UNIX操作系统、Linux操作系统、国产操作系统和Mac OS操作系统均采用CUPS作为打印系统架构。因此，研究基于CUPS架构的打印管控方法，是实现Linux/UNIX系统及国产操作系统下打印管控的关键。本文给出一种基于CUPS架构的方法，以解决Linux操作系统和国产操作系统上的打印控制及打印管理等问题。 图1为本文给出的打印控制和管理方法的整体结构。该方法以CUPS架构为基础，包括虚拟打印机驱动、用户配置、打印记录、多个物理打印机。虚拟打印机驱动和物理打印机安装在CUPS架构上，用户配置和打印记录保存在系统存储器。CUPS是本发明的底层架构，用于支持虚拟打印机及物理打印机，并对打印机访问控制提供支持。虚拟打印机驱动用于获得打印操作用户名，打印内容及其他管理信息。 图1. 基于CUPS的打印控制和管理方法架构 用户配置保存不同用户的配置信息，包括可操作物理打印机列表等，其作用是为显示给用户的操作界面提供数据。打印记录保存打印操作的用户名、拷贝数、标题、页数以及打印内容等，为后续的查询及审计等管理功能提供数据。物理打印机通过通信线缆与计算机连接，接收嵌入用户信息的打印文档，完成实际的打印操作，得到纸质文档。
system: [SYSTEM]

user: 2. 虚拟打印机驱动设计 CUPS架构下的打印机驱动包括两种类型：PostScript打印机驱动和光栅打印机驱动 [ 5 ] 。图2和图3给出了这两种类型的打印机驱动过滤器链。无论是哪一种类型的打印机驱动，打印作业的数据流是相同的。在用户打印的时候，调度程序cupsd确定打印作业的格式以及用于将打印作业转换成打印机能识别的信息的程序(CUPS已经包含了针对多种通用格式的过滤程序，例如将PDF文件转换为CUPS光栅数据的过滤程序)。然后将打印作业转换为CUPS的两种标准数据格式之一，转换后的数据发送到过滤器程序，由过滤器程序转换为打印机能识别的格式(例如HP-PCL)。转换后的数据发送到后端程序(backend)，后端程序再将数据通过物理接口发送到打印机。在图2和图3中不同组件之间的数据传递均采用标准输入(stdin)和标准输出(stdout)，即从标准输入获得前级组件发来的数据，处理后的数据通过标准输出发送给后级组件。对比图2和图3所示的两种类型打印机驱动的数据流，其区别仅仅在于从CUPS Filter得到的数据是PostScript格式还是光栅格式。由于PostScript语言是一种文本格式的打印控制语言 [ 6 ] ，而且在Linux系统下PostScript格式数据可以方便的转换到其他格式且便于嵌入自定义信息，因此本文设计的虚拟打印机驱动以PostScript格式作为中间数据格式，即采用图3的流程设计虚拟打印机驱动。 基于PostScript的虚拟打印机驱动，包括一个打印机描述文件(PPD文件)、一个过滤器程序(filter)和一个后端程序(backend)。打印机描述文件包含虚拟打印机驱动的信息和用户界面配置。过滤器程序是一个命令行程序，用于获得CUPS传入的打印操作信息和内容。后端程序用于产生一个在CUPS架构中对用户可见的虚拟端口，并存储打印内容，在安装虚拟打印机驱动时需要将虚拟打印机安装到该端口。通过打印机描述文件将虚拟打印机安装在CUPS下之后，所有通过该虚拟打印机进行的打印操作及相关信息都会发送到该虚拟打印机的过滤器程序，而过滤器处理后的数据将发送到后端程序。 2.1. PPD文件设计 PPD文件由文本格式的驱动信息文件(通常以.drv为后缀)通过CUPS的PPD编译器编译得到。驱动信息文件中定义了打印机的各种属性和选项，包括产品信息、过滤器、介质和分辨率以及自定义选项。由于虚拟打印机驱动并不直接输出打印内容而是要将打印内容通过用户选择的物理打印机进行输出，因此为了兼容绝大部分物理打印机，虚拟打印机需要提供常用的纸张、分辨率、单双面打印等打印选项， 图2. PostScript驱动过滤器链 图3. 光栅驱动过滤器链 这些选项只需要在驱动信息文件中参照CUPS的要求进行设置即可。在我们的打印机驱动信息文件中最重要的是指明该驱动将要用到的过滤器程序，使得CUPS在对打印操作进行调度时，可以把打印内容发送到指定的过滤器程序。而要指定驱动使用的过滤器程序只需要按照下面的格式在文件中增加Filter命令即可。 其中“DriverType ps”命令表明我们的驱动类型是PostScript。而“Filter application/vnd.cups-postscript 100 cpifilter”表明我们的驱动对应的过滤器程序名为“vfilter”，且过滤器内得到的数据为PostScript格式。驱动信息文件完成后通过PPD编译器PPDC进行编译即可得到安装驱动所需的打印机描述文件。 2.2. 过滤器程序设计 过滤器程序为标准命令行程序，由CUPS调度。当过滤器程序被调度时，通过命令行参数传入了打印作业的相关信息，如表1所示。从表1中可知，发起打印作业的用户名可从argv[ 2 ]中获得。其他打印选项如纸张尺寸，送纸器等可以利用cups标准函数cupsGetOption从argv[ 5 ]中获得。 通过命令行参数argv[ 2 ]得到当前用户名，并使用该用户名在用户配置文件中查找该用户可以使用的所有物理打印机，生成物理打印机列表并通过对话框展示给用户。在用户选择物理打印机后，过滤器程序使用用户名，物理打印机名称，拷贝数量等信息生成打印记录，然后进行打印内容处理。 打印内容处理的主要目的是将包括用户名，作业ID，作业标题以及打印时间等内容的打印管理信息嵌入打印作业的每个页面。在过滤器中获得的打印内容是PostScript格式的打印数据。PostScript格式的打印数据会使用“showpage”命令来打印每一页，因此只需在打印内容数据流中找到所有“showpage”命令，并在每一条“showpage”命令之前增加一条“show”命令将打印管理信息文本添加到页面中不影响页面内容的地方(通常在页面顶部或底部)。在完成页面内容处理后，嵌入了管理信息的打印内容通过标准输出发送给后端程序。过滤器程序的处理流程如图4所示。 Table 1 Command line arguments of filte 命令行参数 参数内容 argv[ 1 ] argv[ 2 ] argv[ 3 ] argv[ 4 ] argv[ 5 ] 作业ID 打印用户 作业名/标题 拷贝数 打印选项 表1. 过滤器程序中传入的命令行参数 图4. 过滤器程序处理流程 2.3. 后端程序设计 后端程序(backend)将过滤器程序处理后的PCL数据流发送给打印机，完成打印过程。设计后端程序的关键是要让CUPS识别所扩充的后端程序是一个有效的后端程序，这一过程在后端程序中称为“设备发现”。其核心是当后端程序以不带命令行参数形式被CUPS调用时要将该后端程序支持的设备信息输出到标准输出(stdout)，输出的内容包括“设别类别”(例如，direct、network、file等)，“设备URI”，“制造商信息”和“设备信息”。为了使虚拟打印机可以安装到该端口上，虚拟端口类别为direct，其设备发现信息如下所示。 此外，后端程序还需要从标准输入读取所有打印数据并存储到文件，同时发送给物理打印机，直到接收完所有打印数据，后端程序流程如图5所示。
system: [SYSTEM]

user: 3. 打印控制和管理方法 在完成虚拟打印机驱动设计后，可以通过CUPS和虚拟打印机驱动协作完成打印控制和管理。打印控制和管理方法的具体步骤如下： 1) 安装基于CUPS架构的虚拟打印机驱动。 2) 通过CUPS对虚拟打印机和物理打印机(包括本地打印机、共享打印机和网络打印机)进行访问控制，使得所有物理打印机只能被一个区别于普通用户的特定用户(该特定用户的用户名可以由root用户指定，假设为print_user)访问，而虚拟打印机可以被所有用户访问。 3) 配置各个用户可以用来输出打印内容的物理打印机，并形成配置文件。 4) 用户在客户端启动打印操作，此时只能访问虚拟打印机。当用户在打印操作界面中选择虚拟打印机启动打印操作时，虚拟打印机获得打印请求。 5) 虚拟打印机驱动获得打印操作的用户名，并根据用户名从步骤3)的配置文件中获得该用户可以使用的物理打印机列表，并将列表展示给用户以供选择 6) 用户在物理打印机列表中选择用于完成实际打印操作的物理打印机名称，虚拟打印机驱动记录用户名，用户选择的物理打印机名称、打印格式及打印作业的相关信息(包括标题，拷贝数量，打印时间等)。 7) 虚拟打印机驱动在PostScript格式的打印页面中嵌入步骤6)的打印管理信息。 8) 虚拟打印机驱动通过特定用户(print_user)将嵌入管理信息的打印内容按照用户指定的打印格式发送给用户选择的物理打印机，完成实际输出。
system: [SYSTEM]

user: 4. 实验结果 为了验证本文给出的打印管理方法，我们设计并实现了一个简单的原型系统。该原型系统在Linux Fedora 16操作系统下进行安装并测试。测试内容主要包括：虚拟打印机安装，物理打印机访问控制、打印记录生成及管理信息嵌入。 4.1. 虚拟打印机安装测试 使用2.1节给出的PPD文件，过滤器程序和后端程序，可以将虚拟打印机驱动安装到CUPS。安装完成后该虚拟打印机机可以在CUPS中查看，如图6所示。 4.2. 物理打印机访问控制 通过CUPS的管理页面可以设置每个物理打印机的访问控制，在原型系统中我们将所有物理打印机设置为不能被普通用户访问，而虚拟打印机可以被所有用户访问。如图7(a)所示，在设置访问控制之前，用户在进行打印操作时，可以看到所有物理打印机和虚拟打印机。如图7(b)所示，设置了访问控制后，用户在进行打印操作时，只能看到虚拟打印机。 4.3. 打印记录生成及管理信息嵌入 用户进行打印操作时，首先根据用户名访问用户配置文件，弹出图8所示的选择物理打印机对话框，在用户选择了某个物理打印机后，用户名，物理打印机名、作业ID、作业标题、打印时间等信息被嵌入到打印作业的每个页面，如图9所示。 图5. 后端程序流程 图6. CUPS中安装的虚拟打印机 图7. 打印机访问控制 (a) 设置访问控制之前； (b)设置访问控制之后 图8. 选择物理打印机对话框 图9. 嵌入了管理信息的打印页面
system: [SYSTEM]

user: 5. 结论 小节4的测试证明了本文所给出的打印控制和管理方法及原型系统的可行性。由于目前国内还没有针对Linux系统及国产操作系统的打印控制和管理方法的研究成果，因此本文给出的方法及原型系统具有独创性。本文给出的方法以CUPS架构为基础，而CUPS架构在Linux、UNIX，国产操作系统以及Mac系统下都被广泛使用，因此该方法也适用于这些系统，具备较强的通用性。 文中给出的原型系统还存在若干可以进一步完善的地方：1) 除了明文形式的来源信息外，还可以使用打印管理信息生成二维码图像，然后通过数字水印技术在页面中嵌入二维码图像，嵌入水印之后的页面在打印后与原始文档的区别无法用肉眼分辨，但通过扫描和特定水印提取算法可以得到嵌入在页面中的二维码图像，从而得到打印管理信息，这种方式更加安全和隐蔽；2) 除了嵌入打印来源信息外，还可以通过[ 7 ] 给出的方法获得打印作业中包含的文本信息，然后通过文本匹配算法找到所有敏感的关键字。获得的关键字可以用于对打印作业进行审核，进一步增强打印管理系统的安全性。
system: [SYSTEM]

user: 摘 要 特征选择是文本自动分类的核心技术。针对经典的CHI模型不足之处，本文首先从特征项与类别之间的正负相关性角度对特征项进行删减；然后针对类偏斜分类环境下的特征项权重进行调整；进而以特征项的词频数为依据，从特征项在文本中的具体位置、特征项的类内及类间分布等层面再对模型逐步改进，提出了一种优化的CHI特征选择方法。随后的文本分类试验验证了该方法的有效性。 关键词 :特征选择， 统计，相关性，位置分布，类偏斜