一种基于非负矩阵分解的事件分析方法与系统的制作方法

文档序号:6628210阅读:432来源:国知局
一种基于非负矩阵分解的事件分析方法与系统的制作方法
【专利摘要】本发明提供一种基于非负矩阵分解的事件分析方法与系统,该方法包括:获取包括至少一个数据文本的待处理数据;分别对每个数据文本进行分词处理,得到与待处理数据对应的文本空间矩阵;对文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定待处理数据中包含的各个事件以及分别用于描述各个事件的关键词,并根据分解得到的系数矩阵确定分别与各个事件对应的数据文本。通过构造待处理数据的文本空间矩阵,并对该文本空间矩阵进行非负矩阵分解,从而将一个规模庞大的矩阵分解成为两个规模较小的矩阵,并且保证分解前后矩阵元素的非负性,在保证事件挖掘结果的准确性的同时,通过降维找到待处理数据中包含的事件,计算简便,可扩展性较好。
【专利说明】—种基于非负矩阵分解的事件分析方法与系统

【技术领域】
[0001]本发明属于数据挖掘【技术领域】,尤其是涉及一种基于非负矩阵分解的事件分析方法与系统。

【背景技术】
[0002]随着互联网技术的蓬勃发展,越来越多的用户通过比如论坛、微博等社交网络平台来发布各种新闻或者发表个人对一些社会现象的意见,从而导致互联网上的各种数据信息也呈现出爆炸式增长,如何对海量的数据信息进行有效的事件挖掘是各搜索引擎一个主要研究的问题。
[0003]现有的一种数据挖掘的方式是采用层次式的聚类方式,对给定数据对象集合进行层次的分解,直到某种截止条件满足为止。具体又可分为:凝聚的层次聚类:一种自底向上的策略,首先将每个数据对象作为一个原子簇,然后以数据对象间的相似性为依据合并这些原子簇为越来越大的簇,直到某个截止条件被满足。分裂的层次聚类:采用自顶向下的策略,它首先将所有数据对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个截止条件。
[0004]但是,由于层次聚类的方式本身的特性决定了其具有较高的计算复杂度,使得可扩展性受限,不适于应用在海量数据的事件挖掘中。


【发明内容】

[0005]针对上述存在的问题,本发明提供一种基于非负矩阵分解的事件分析方法与系统,用以克服现有技术中的层次聚类方式导致较高的计算复杂度和较差的可扩展性的缺陷。
[0006]本发明提供了一种基于非负矩阵分解的事件分析方法,包括:
[0007]获取待处理数据,所述待处理数据中包括至少一个数据文本;
[0008]分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息;
[0009]对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
[0010]本发明提供了一种基于非负矩阵分解的事件分析系统,包括:
[0011]获取模块,用于获取待处理数据,所述待处理数据中包括至少一个数据文本;
[0012]处理模块,用于分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息;
[0013]计算模块,用于对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
[0014]本发明提供的基于非负矩阵分解的事件分析方法与系统,在获取到包含多个数据文本的待处理数据后,以词语为单位,对该多个数据文本分别进行分词处理,从而得到用于描述该待处理数据中包含的多个数据文件信息以及该多个数据文件信息中包含的所有词语的文本空间矩阵。进而,在该文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵得到待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与每个事件对应的数据文本,即包含该事件的数据文本。通过构造待处理数据的文本空间矩阵,并对该文本空间矩阵进行非负矩阵分解,从而将一个规模庞大的矩阵分解成为两个规模较小的矩阵,并且保证分解前后矩阵元素的非负性,即在分解前后同一位置上的元素为正数,在保证事件挖掘结果的准确性的同时,通过降维找到待处理数据中包含的事件,计算简便,可扩展性较好。

【专利附图】

【附图说明】
[0015]图1为本发明基于非负矩阵分解的事件分析方法实施例一的流程图;
[0016]图2为本发明基于非负矩阵分解的事件分析方法实施例二的流程图;
[0017]图3为本发明基于非负矩阵分解的事件分析系统实施例一的结构示意图;
[0018]图4为本发明基于非负矩阵分解的事件分析系统实施例二的结构示意图。

【具体实施方式】
[0019]图1为本发明基于非负矩阵分解的事件分析方法实施例一的流程图,如图1所示,该方法包括:
[0020]步骤101、获取待处理数据,所述待处理数据中包括至少一个数据文本;
[0021]步骤102、分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息;
[0022]步骤103、对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
[0023]本实施例提供的所述方法可以适用于对互联网上的各种应用所产生的海量数据进行事件挖掘处理,尤其适用于诸如微博、论坛等社交网络,该方法可以由一处理设备来执行,该处理设备例如可以为某中应用的管理平台。
[0024]以微博为例,每天都会有大量的各种各样的数据信息在微博上进行传播,为了便于广大普遍用户能够在海量的微博数据中快速有效地搜索到自身需要的信息,或者为了使普通用户、政府机构等用户能够及时获知社会热点,都需要对海量的微博数据进行事件挖掘。值得说明的是,本实施例中主要是针对文本类型的数据信息进行处理,称之为数据文本。而且,本实施例中所述的事件,并非一般意义上的某件完整的事情或新闻,而是指用一些关键词表征的词语集合,一个事件中包含的关键词往往具有一定的关联,比如这些关键词同时在很多条数据文本中都同时出现过,因此,这些关键词也一定程度上反映了当前微博中的关注热点。
[0025]具体来说,当处理设备获得了比如某一天的微博数据即待处理数据后,对该待处理数据中包含的每个数据文本进行分词处理,比如采用现有的NLPIR汉语分词系统对每个数据文件进行分词处理,从而将每个数据文本按照词语为单位进行划分,得到每个数据文本中包含的各个词语。通过对待处理数据中的每个数据文本都进行分词处理,从而能够得到待处理数据中包含的所有词语,从而构造由待处理数据中的所有数据文本和所有词语组成的文本空间矩阵,该矩阵中的每个列向量表示的是该列向量对应的数据文本中所包含的各个词语。
[0026]进而,对该文本空间矩阵进行非负矩阵分解,其中,非负矩阵分解是现有技术中的现有矩阵分解方法,不做赘述。非负矩阵分解的结果是得到两个矩阵,分别为基矩阵和系数矩阵。值得说明的是,由于文本空间矩阵是一个规模庞大的矩阵,直接对该矩阵进行处理将会导致非常大的运算量,而将其分解为两个较小的矩阵,使得基于该两个较小的矩阵进行的处理的运算量大大降低。而且,非负矩阵分解得到的基矩阵和系数矩阵的乘积是该文本空间矩阵的近似表达,分解的结果保证了在同一位置上的元素,在分解前后的误差值为正数,从而使分解后的元素具有与分解前该元素基本等同的表达。从而,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。也就是说,分解得到的基矩阵中列向量的个数为该待处理数据中包含的事件的个数,而每个列向量中包含的各个词语即构成该事件的关键词;系数矩阵中的每个行向量表征了一个事件,该行向量中的各个数据文本表示了包含对应的该事件即该事件中各关键词的数据文本集合。因此,通过基矩阵和系数矩阵可以获知待处理数据中包含了多少事件,每个事件中包含的关键词是什么,以及分别包含每个事件的关键词的数据文本有哪些。
[0027]本实施例中,在获取到包含多个数据文本的待处理数据后,以词语为单位,对该多个数据文本分别进行分词处理,从而得到用于描述该待处理数据中包含的多个数据文件信息以及该多个数据文件信息中包含的所有词语的文本空间矩阵。进而,在该文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵得到待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与每个事件对应的数据文本,即包含该事件的数据文本。通过构造待处理数据的文本空间矩阵,并对该文本空间矩阵进行非负矩阵分解,从而将一个规模庞大的矩阵分解成为两个规模较小的矩阵,并且保证分解前后矩阵元素的非负性,即分解得到的两个矩阵中每一个元素都是非负值,在保证事件挖掘结果的准确性的同时,将大矩阵转变为两个小矩阵,通过降维找到待处理数据中包含的事件,计算简便,可扩展性较好。
[0028]图2为本发明基于非负矩阵分解的事件分析方法实施例二的流程图,如图2所示,本实施例提供的所述方法包括如下步骤:
[0029]步骤201、获取待处理数据,所述待处理数据中包括至少一个数据文本;
[0030]步骤202、对所述每个数据文本进行语义解析,确定所述每个数据文本中包含的名词和动词;
[0031]步骤203、对确定出的所述名词和动词进行标注,并根据如下公式确定每个所述名词和动词的权重值,得到与所述待处理数据对应的文本空间矩阵Amxn:
[0032]R(w) = (w在所述M个词语中的出现次数)Xlog(数据文本总数N/包含w的数据文本数量)。
[0033]其中,w为任一个所述名词或动词,R(W)为w的权重值
[0034]本实施例中,对待处理数据中的每个数据文件进行语义解析,以确定每个数据文本中包含了哪些词语,由于每个数据文本中包含的词语种类众多,其中比如会有些诸如“了”、“的”等没有实际意义的词语,统称为虚词,也会存在比如“城管”、“袭击”等具有实际意义的名词或者动词,因此,为了区别不同词语在每个数据文本中的重要性,在对每个数据文本进行语义解析之后,选择出该数据文本中包含的名词和动词,并为这些名词和动词赋值较高的权重值,而为虚词赋值较低的权重值。其中,可以根据每个名词和动词的在待处理数据中的出现次数分别确定每个名词和动词的权重值
[0035]步骤204、对所述文本空间矩阵Amxn进行非负矩阵分解,得到基矩阵WMXK,和系数矩阵Hkxn,所述K为所述待处理数据中包含的事件总数;
[0036]步骤205、确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的目标词语为描述对应的第一事件的关键词,所述目标词语为所述列向量包含的词语中权重值由大到小排列排在前面的第一预设数量的名词和动词;
[0037]步骤206、确定所述系数矩阵Hkxn中的每个行向量表征一个第二事件,每个行向量中所包含的数据文本为与所述行向量表征的第二事件对应的数据文本。
[0038]在对每个数据文本中包含的名词和动词赋值较高权重值的情况下,在对文本空间矩阵进行非负矩阵分解后,基矩阵中每个列向量中包含的词语便是具有不同权重值的词语,这些词语中既有较高权重值的名词和动词,也有较低权重值的虚词,可选的,可以确定这些较高权重值即权重值大于一定阈值的名词和动词作为该列向量对应的事件的关键词。但是,很有可能这些名词和动词的数量仍旧比较大,如果需要将事件挖掘的结果进行呈现,将如此数量的关键词进行呈现将导致较低的用户体验。因此,本实施例中,对基矩阵中每个列向量中包含的词语按照权重值由大到小的顺序进行排列,选取排在前面的预设数量的词语作为其对应的事件的关键词。值得说明的是,从大到小的排列顺序仅是一种举例,还可以从小到大排序,相应的,选择排在后面的预设数据的词语。
[0039]步骤207、分别以所述各个事件中的每个事件作为待处理事件,从所述待处理事件对应的关键词中选取第二预设数量的关键词作为所述待处理事件的标识,确定所述待处理事件对应的数据文本的数量占所述待处理数据的数据文本总数的比例;
[0040]步骤208、根据所述标识和所述比例,采用如下呈现方式中的任一种方式呈现所述待处理事件:表格、饼状图、柱状图、折线图、词云。
[0041]本实施例中,为了方便不同用户能够直观地了解事件挖掘的结果,S卩比较直观地了解到当前微博中的关注热点,可以将事件挖掘的结果进行可视化呈现。为此,需要对事件挖掘结果进行简单的分析或处理,比如:为了保证可视化效果,可以针对每个事件,从该事件包含的关键词中进一步再选取一定数量的关键词作为该事件的标识。作为事件标识的关键词既可以在该事件的关键词中随机选取,也可以按照各关键词的权重值来选取权重值较大的。再比如:为了更直观地了解每个事件在待处理数据中的重要程度或者关注热度,可以统计确定每个事件对应的数据文本占待处理数据的数据文本总数的比例。
[0042]进而,根据上述标识和所述比例,采用如下呈现方式中的任一种方式呈现所述待处理事件:表格、饼状图、柱状图、折线图、词云。比如:表格中可以显示每个事件的标识,对应的数据文本数量,以及对应的数据文本所占比例;词云中可以根据不同事件的数据文本所占比例的大小来确定每个事件的标识将被显示的字体大小,等等。
[0043]图3为本发明基于非负矩阵分解的事件分析系统实施例一的结构示意图,如图3所示,该系统包括:
[0044]获取模块11,用于获取待处理数据,所述待处理数据中包括至少一个数据文本;
[0045]处理模块12,用于分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息;
[0046]计算模块13,用于对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
[0047]本实施例的系统可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0048]图4为本发明基于非负矩阵分解的事件分析系统实施例二的结构示意图,如图4所示,本实施例提供的所述系统在图3所示实施例的基础上,所述待处理数据中包括N个数据文本,所述N个数据文本中包含的词语总数为M,所述文本空间矩阵Amxn为MXN维矩阵,所述N的取值为大于或等于I的整数;
[0049]所述计算模块13,包括:
[0050]计算单元131,用于对所述文本空间矩阵Amxn进行非负矩阵分解,得到基矩阵Wmxk,和系数矩阵Hkxn,所述K为所述待处理数据中包含的事件总数;
[0051]确定单元132,用于确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的词语为描述对应的第一事件的关键词;
[0052]所述确定单元132,还用于确定所述系数矩阵Hkxn中的每个行向量表征一个第二事件,每个行向量中所包含的数据文本为与所述行向量表征的第二事件对应的数据文本。
[0053]进一步地,所述处理模块12,包括:
[0054]解析单元121,用于对所述每个数据文本进行语义解析,确定所述每个数据文本中包含的名词和动词;
[0055]标记单元122,用于对确定出的所述名词和动词进行标注,并根据如下公式确定每个所述名词和动词的权重值:
[0056]R(w) = (w在所述M个词语中的出现次数)Xlog(数据文本总数N/包含w的数据文本数量);
[0057]其中,w为任一个所述名词或动词,R(W)为w的权重值。
[0058]具体地,所述确定单元132,具体用于:
[0059]确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的目标词语为描述对应的第一事件的关键词,所述目标词语为所述列向量包含的词语中权重值由大到小排列排在前面的第一预设数量的名词和动词。
[0060]进一步地,所述系统还包括:
[0061]分析模块21,用于分别以所述各个事件中的每个事件作为待处理事件,从所述待处理事件对应的关键词中选取第二预设数量的关键词作为所述待处理事件的标识;
[0062]所述分析模块21,还用于确定所述待处理事件对应的数据文本的数量占所述待处理数据的数据文本总数的比例;
[0063]呈现模块22,用于根据所述标识和所述比例,采用如下呈现方式中的任一种方式呈现所述待处理事件:
[0064]表格、饼状图、柱状图、折线图、词云。
[0065]本实施例的系统可以用于执行图2所不方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0066]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0067]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种基于非负矩阵分解的事件分析方法,其特征在于,包括: 获取待处理数据,所述待处理数据中包括至少一个数据文本; 分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息; 对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
2.根据权利要求1所述的方法,其特征在于,所述待处理数据中包括N个数据文本,所述N个数据文本中包含的词语总数为M,所述文本空间矩阵Amxn为MXN维矩阵,所述N的取值为大于或等于I的整数; 所述对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本,包括: 对所述文本空间矩阵Amxn进行非负矩阵分解,得到基矩阵WMXK,和系数矩阵Hkxn,所述K为所述待处理数据中包含的事件总数; 确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的词语为描述对应的第一事件的关键词; 确定所述系数矩阵Hkxn中的每个行向量表征一个第二事件,每个行向量中所包含的数据文本为与所述行向量表征的第二事件对应的数据文本。
3.根据权利要求2所述的方法,其特征在于,所述分别对所述至少一个数据文本中的每个数据文本进行分词处理,包括: 对所述每个数据文本进行语义解析,确定所述每个数据文本中包含的名词和动词; 对确定出的所述名词和动词进行标注,并根据如下公式确定每个所述名词和动词的权重值: R(w) = (w在所述M个词语中的出现次数)Xlog(数据文本总数N/包含w的数据文本数量); 其中,w为任一个所述名词或动词,R(W)为w的权重值。
4.根据权利要求3所述的方法,其特征在于,所述确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的词语为描述对应的第一事件的关键词,包括: 确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的目标词语为描述对应的第一事件的关键词,所述目标词语为所述列向量包含的词语中权重值由大到小排列排在前面的第一预设数量的名词和动词。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本之后,还包括: 分别以所述各个事件中的每个事件作为待处理事件,从所述待处理事件对应的关键词中选取第二预设数量的关键词作为所述待处理事件的标识; 确定所述待处理事件对应的数据文本的数量占所述待处理数据的数据文本总数的比例; 根据所述标识和所述比例,采用如下呈现方式中的任一种方式呈现所述待处理事件: 表格、饼状图、柱状图、折线图、词云。
6.一种基于非负矩阵分解的事件分析系统,其特征在于,包括: 获取模块,用于获取待处理数据,所述待处理数据中包括至少一个数据文本; 处理模块,用于分别对所述至少一个数据文本中的每个数据文本进行分词处理,得到与所述待处理数据对应的文本空间矩阵,所述文本空间矩阵描述了所述至少一个数据文本中所包含的词语信息; 计算模块,用于对所述文本空间矩阵进行非负矩阵分解,根据分解得到的基矩阵确定所述待处理数据中包含的各个事件以及分别用于描述所述各个事件的关键词,并根据分解得到的系数矩阵确定分别与所述各个事件对应的数据文本。
7.根据权利要求6所述的系统,其特征在于,所述待处理数据中包括N个数据文本,所述N个数据文本中包含的词语总数为M,所述文本空间矩阵Amxn为MXN维矩阵,所述N的取值为大于或等于I的整数; 所述计算模块,包括: 计算单元,用于对所述文本空间矩阵Amxn进行非负矩阵分解,得到基矩阵WMXK,和系数矩阵Hkxn,所述K为所述待处理数据中包含的事件总数; 确定单元,用于确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的词语为描述对应的第一事件的关键词; 所述确定单元,还用于确定所述系数矩阵Hkxn中的每个行向量表征一个第二事件,每个行向量中所包含的数据文本为与所述行向量表征的第二事件对应的数据文本。
8.根据权利要求7所述的系统,其特征在于,所述处理模块,包括: 解析单元,用于对所述每个数据文本进行语义解析,确定所述每个数据文本中包含的名词和动词; 标记单元,用于对确定出的所述名词和动词进行标注,并根据如下公式确定每个所述名词和动词的权重值: R(w) = (w在所述M个词语中的出现次数)Xlog(数据文本总数N/包含w的数据文本数量); 其中,w为任一个所述名词或动词,R(W)为w的权重值。
9.根据权利要求8所述的系统,其特征在于,所述确定单元,具体用于: 确定所述基矩阵Wmxk中的每个列向量表征一个第一事件,每个列向量中包含的目标词语为描述对应的第一事件的关键词,所述目标词语为所述列向量包含的词语中权重值由大到小排列排在前面的第一预设数量的名词和动词。
10.根据权利要求6至9中任一项所述的系统,其特征在于,还包括: 分析模块,用于分别以所述各个事件中的每个事件作为待处理事件,从所述待处理事件对应的关键词中选取第二预设数量的关键词作为所述待处理事件的标识; 所述分析模块,还用于确定所述待处理事件对应的数据文本的数量占所述待处理数据的数据文本总数的比例; 呈现模块,用于根据所述标识和所述比例,采用如下呈现方式中的任一种方式呈现所述待处理事件: 表格、饼状图、柱状图、折线图、词云。
【文档编号】G06F17/30GK104281663SQ201410495959
【公开日】2015年1月14日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】张日崇, 邰振赢, 于伟仁, 刘俊伟, 李建欣 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1