一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于加权频繁序列的商品组合挖掘方法与流程

2022-03-23 07:27:47 来源:中国专利 TAG:


1.本发明涉及大数据挖掘的技术领域,更具体地,涉及一种基于加权频繁序列的商品组合挖掘方法。


背景技术:

2.近年来,随着网络活动的日益增加,产生了大量的数据;如何从海量数据中寻找出有价值的信息成为各行各业都极为感兴趣的领域。因此,数据挖掘技术得到了极大的发展,为人们进行决策活动提供了更加细致和明晰的内在关联,具有深刻的借鉴、指导意义。比如商场的购物篮模型,对频繁项集挖掘做了充分且深入的研究。频繁项集挖掘是指从事务数据库中挖掘出现频次高的模式,即事务的组合,这在许多领域有着广泛的应用。随着信息的复杂度上升以及数量指数增长,顺序模式挖掘被认为在各种任务中有更好的表现,比如在精准营销、医疗诊断、网络日志挖掘、智能家居以及自然灾害检查等领域。如何有效提高顺序模式挖掘的效率以及保证准确性成为了当前研究热点。在顺序模式挖掘研究的初始阶段,agraw等人提出了apriori算法。apriori算法需要不断地对原数据库进行扫描,频繁的i/o读取操作增加了时间开销,加上会产生的大量候选序列,需要更大的内存支持,影响了算法的表现性能。在apriori算法之后,学者们提出了基于fp树结构的挖掘、基于投影数据库的挖掘和基于位图实现的顺序模式挖掘。这些算法均大幅减少了i/o操作,并且在挖掘过程中利用向下闭包特性减少了候选序列的产生,从而提高了算法的效率。传统的顺序模式挖掘在挖掘的过程中都基于一个假设,即在数据库中不同的项目之间它们的权值是一样的。然而在实际生活中,不同的项目之间会因其价值的不同,导致其重要性存在巨大差异。比如在零售领域,具有高附加价值的商品与利润微薄的日常用品,两者的收益相差甚远。为了使顺序模式挖掘具有更好的代表性,可以在进行挖掘之前对数据库中的项目按照其重要性赋予相应的权值。具体的权值可以由用户根据相关领域知识或是特定的需要自行预设,如项目的收益、优先级、代价来进行考量。通过赋予权值实现的加权频繁序列挖掘,能够挖掘出具有高价值但是低频率的模式,也能过滤掉低价值但是重复出现的低意义模式。然而,引入权值后,传统频繁序列挖掘所维持的向下闭包特性将会被打破,即当前序列p是非加权频繁序列,但p通过拓展之后的超集p’仍有可能是加权频繁序列,由于不能根据向下闭包特性提前对数据集中无期望项集删除从而减小搜索空间,这为加权频繁序列的挖掘带来了巨大的挑战。为了使加权频繁序列挖掘也能实现向下闭包特性,学者们设计了多种模型。yun等人提出了一种基于数据集中最大权值的上界模型的wfim算法,通过该上界模型,wfim算法实现了在挖掘加权频繁序列过程中的向下闭包特性,提高了挖掘的速率;lin等人在此基础上进一步优化了上界模型,提出了iua算法,将构成数据集的每一条表项中的最大值作为存在于该表项的序列上界值,进一步提高了上界模型的精度,从而缩短了挖掘的时间。
3.现有技术公开了一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,包括步骤:对商品交易数据进行预处理,得到商品交易数据集,并存入交易序列数据库中;扫描交易序列数据库,对每个单项进行计数,得到每个单项的序列支持度并降序排序,
选出前μ项且满足最小支持度的单项作为初始前缀;采取深度优先遍历,对第一个初始前缀的位置进行计算,并保存在前缀位置信息表中,生成商品交易投影数据库;再对其进行迭代,直至无法生成新的商品交易投影数据库,保存每个商品交易投影数据库生成的频繁序列模式集合;从第二个初始前缀开始,重复上一步骤,直至所有初始前缀均计算完毕。该申请没有考虑不同商品之间的价值,仅根据商品在交易序列数据库中出现的次数计算支持度,无法过滤低价值重复出现的商品,导致商品组合推荐不准确。


技术实现要素:

4.本发明为克服上述现有技术对商品组合的频繁序列进行挖掘时无法兼顾效率与准确性的缺陷,提供一种基于加权频繁序列的商品组合挖掘方法,能够提高商品组合的频繁序列的挖掘效率,提供更准确的商品组合推荐。
5.为解决上述技术问题,本发明的技术方案如下:
6.本发明提供了一种基于加权频繁序列的商品组合挖掘方法,包括:
7.s1:获取基于时间的商品交易的订单信息,组成商品数据集d;
8.商品数据集d={s1,s2,

,sn},其中sn表示第n段时间的订单序列,每个订单序列称为商品数据集的项集;订单序列sn={i1,i2,

,im},其中im表示第m个订单,每个订单称为商品数据集的项,每个订单包含至少一个商品;
9.s2:根据商品的收益情况为每个商品赋予不同的权值;
10.s3:根据商品权值大小,对多元项中包含的商品进行排序,获得排序后的商品数据集d
*

11.s4:建立候选加权频繁序列集wfubr、加权频繁序列集wsr和加权频繁项集fir,令r=1;
12.s5:判断排序后的商品数据集d
*
是否为空,若为空,则执行步骤s10;否则,根据候选加权频繁序列集wfubr的r序列与排序后的商品数据集d
*
中的一元项进行扩展,获得扩展r序列,执行步骤s6;
13.s6:计算扩展r序列中每个序列的加权支持上界值和加权支持度,依据向下闭包特性,确定是否将每个序列加入候选加权频繁序列集wfubr和加权频繁序列集wsr中;并将加入候选加权频繁序列集wfubr中的序列的项添加到加权频繁项集fir中;
14.s7:根据先验性原理,利用加权频繁项集fir中的项对排序后的商品数据集d
*
进行压缩,形成压缩数据集d


15.s8:基于压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集dr,将投影数据集dr作为下一轮次的数据集d
*

16.s9:令r=r 1,返回步骤s5;
17.s10:根据每一轮次获得的加权频繁序列集组成加权频繁序列总集;
18.s11:根据加权频繁序列总集进行商品组合推荐。
19.优选地,所述步骤s3中,根据商品权值大小,对多元项中包含的商品进行升序排序。
20.优选地,所述步骤s5中,根据候选加权频繁序列集wfubr的r序列与排序后的商品数据集d
*
中的一元项进行扩展包括项集扩展或序列扩展;
21.项集扩展表示将排序后的商品数据集d
*
中的一元项分别添加到r序列中最后一个项集的末尾;
22.序列扩展表示将排序后的商品数据集d
*
中的一元项分别添加到r序列的末尾。
23.如r序列为p={abcd},对其进行项集扩展,则扩展r序列为p1={abc(de)};若对其进行序列扩展,则扩展r序列为p2={abcde}。
24.优选地,所述步骤s6中,计算扩展r序列的加权支持上界值的具体方法为:
[0025][0026][0027]
式中,swubr表示扩展r序列的加权支持上界值,tsmw表示排序后的商品数据集d
*
的相对加权频繁总值,sy表示第y段时间的订单序列;rupr表示扩展r序列在所属订单序列的上界值,ωr表示扩展r序列的权值,lengthr表示扩展r序列所包含的项数,rswubr表示扩展r序列所在订单序列的剩余最大值,|x|表示添加至r序列的项的个数。
[0028]
优选地,所述步骤s6中,计算扩展r序列的加权支持度的具体方法为:
[0029][0030]
式中,wsupr表示扩展r序列的加权支持度。
[0031]
优选地,所述步骤s6中,依据向下闭包特性,确定是否将每个序列加入候选加权频繁序列集wfubr和加权频繁序列集wsr中的具体方法为:
[0032]
预设最小加权支持度min ws,分别将扩展r序列中每个序列的加权支持上界值与最小加权支持度进行比较,若swub≥min ws,则该序列加入候选加权频繁序列集wfubr中,否则不加入;
[0033]
分别将扩展r序列中每个序列的加权支持度与最小加权支持度进行比较,若wsup≥min ws,则该序列加入加权频繁序列集wsr中,否则不加入。
[0034]
向下闭包特性指:候选加权频繁序列的上界值总会大于等于其将要拓展序列的加权支持度;如r序列为p={abcd},无论对其进行项集扩展获得p1还是序列扩展获得p2,都有
[0035]
优选地,所述步骤s6中,将加入候选加权频繁序列集wfubr中的序列的项添加到加权频繁项集fir中,相同的项仅添加一次。
[0036]
优选地,所述步骤s7中,根据先验性原理,利用加权频繁项集fir中的项对排序后的商品数据集d
*
进行压缩,形成压缩数据集d

的具体方法为:
[0037]
判断排序后的商品数据集d
*
中的项是否存在于加权频繁项集fir中,若存在,则保留该项,若不存在,则剔除该项,形成压缩数据集d


[0038]
对排序后的商品数据集d
*
进行压缩的目的是减少搜索空间。
[0039]
先验原理是指任一加权频繁序列的子集也为加权频繁序列,所以将存在于排序后的商品数据集d
*
中的项但不存在于加权频繁项集fir的项剔除,而不影响最终挖掘结果的准确性。
[0040]
优选地,压缩数据集d

中的所有项集中,若存在包含一个项的项集,则从压缩数据集d

中删除该项集。
[0041]
优选地,所述步骤s8中,基于压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集dr的具体方法为:
[0042]
压缩数据集d

包含若干个序列,每个序列中包含若干项;以任意一项为前缀,则保留该项在每个序列中第一次出现位置之后的所有项,形成投影数据集dr。
[0043]
与现有技术相比,本发明技术方案的有益效果是:
[0044]
本发明根据不同商品的收益为商品赋予不同的权值之后,对商品进行加权频繁序列的挖掘;根据向下闭包特性,深度挖掘商品数据集中具有高收益和高频次的商品组合方式;根据先验性原理,从商品数据集中剔除不是加权频繁序列商品,减少候选组合方式的产生,提高挖掘效率。本发明在保证挖掘准确性的前提下拥有更高的挖掘效率。
附图说明
[0045]
图1为实施例1所述的一种基于加权频繁序列的商品组合挖掘方法的流程图。
[0046]
图2为实施例3所述的商品数据集的示意图。
[0047]
图3为实施例3所述的商品权值图。
[0048]
图4为实施例3所述的排序后的商品数据集的示意图。
[0049]
图5为实施例3所述的扩展1序列的加权支持上界值和加权支持度的结果示意图。
[0050]
图6为实施例3所述的候选加权频繁序列集wfub1的示意图。
[0051]
图7为实施例3所述的加权频繁序列集ws1的示意图。
[0052]
图8为实施例3所述的加权频繁项集fi1的示意图。
[0053]
图9为实施例3所述的第一轮次压缩数据集d

的示意图。
[0054]
图10为实施例3所述的以《c》为前缀的投影数据集d1的示意图。
[0055]
图11为实施例3所述的扩展2序列的加权支持上界值和加权支持度的结果示意图。
[0056]
图12为实施例3所述的候选加权频繁序列集wfub2的示意图。
[0057]
图13为实施例3所述的加权频繁序列集ws2的示意图。
[0058]
图14为实施例3所述的加权频繁项集fi2的示意图。
[0059]
图15为实施例3所述的第二轮次的压缩数据集d

的示意图。
[0060]
图16为实施例3所述的投影数据集d2的示意图。
[0061]
图17为实施例3所述的扩展3序列的加权支持上界值和加权支持度的结果示意图。
[0062]
图18为实施例3所述的加权频繁序列总集的示意图。
具体实施方式
[0063]
附图仅用于示例性说明,不能理解为对本专利的限制;
[0064]
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0065]
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0066]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0067]
实施例1
[0068]
本实施例提供一种基于加权频繁序列的商品组合挖掘方法,如图1所示,包括:
[0069]
s1:获取基于时间的商品交易的订单信息,组成商品数据集d;
[0070]
商品数据集d={s1,s2,

,sn},其中sn表示第n段时间的订单序列,每个订单序列称为商品数据集的项集;订单序列sn={i1,i2,

,im},其中im表示第m个订单,每个订单称为商品数据集的项,每个订单包含至少一个商品;
[0071]
s2:根据商品的收益情况为每个商品赋予不同的权值;
[0072]
s3:根据商品权值大小,对多元项中包含的商品进行排序,获得排序后的商品数据集d
*

[0073]
s4:建立候选加权频繁序列集wfubr、加权频繁序列集wsr和加权频繁项集fir,令r=1;
[0074]
s5:判断排序后的商品数据集d
*
是否为空,若为空,则执行步骤s10;否则,根据候选加权频繁序列集wfubr的r序列与排序后的商品数据集d
*
中的一元项进行扩展,获得扩展r序列,执行步骤s6;
[0075]
s6:计算扩展r序列中每个序列的加权支持上界值和加权支持度,依据向下闭包特性,确定是否将每个序列加入候选加权频繁序列集wfubr和加权频繁序列集wsr中;并将加入候选加权频繁序列集wfubr中的序列的项添加到加权频繁项集fir中;
[0076]
s7:根据先验性原理,利用加权频繁项集fir中的项对排序后的商品数据集d
*
进行压缩,形成压缩数据集d


[0077]
s8:基于压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集dr,将投影数据集dr作为下一轮次的数据集d
*

[0078]
s9:令r=r 1,返回步骤s5;
[0079]
s10:根据每一轮次获得的加权频繁序列集组成加权频繁序列总集;
[0080]
s11:根据加权频繁序列总集进行商品组合推荐。
[0081]
在具体实施过程中,获取基于时间的商品交易的订单信息,组成商品数据集d;如只获取第一段时间的商品交易订单序列,则d={s1},s1称为d的项集;在该段时间按时间顺序排序共有5个订单,第一个订单包括商品a,第二个订单包括商品c,第三个订单包括商品f,第四个订单包括商品d和e,第五个订单包括商品f,则订单序列s1表示为s1={a,c,f,(de),f},a,c,(de),f均称为d的项,a,c,f为一元项,(de)为二元项;之后根据商品的收益情况为每个商品赋予不同的权值,基于权值对多元项中包含的商品进行排序,即包含两种及以上商品的订单,对订单内的商品进行排序,获得排序后的商品数据集。建立候选加权频繁序列集wfubr、加权频繁序列集wsr和加权频繁项集fir,分别用于收集候选加权频繁序列、加权频繁序列和加权频繁项;根据向下闭包特性和先验性原理,通过多轮次计算扩展r序列中每个序列的加权支持上界值和加权支持度,直到商品数据集为空,确定出r元的加权频繁序列,汇总为加权频繁序列总集,进行商品组合推荐。
[0082]
实施例2
[0083]
本实施例提供一种基于加权频繁序列的商品组合挖掘方法,包括:
[0084]
s1:获取基于时间的商品交易的订单信息,组成商品数据集d;
[0085]
商品数据集d={s1,s2,

,sn},其中sn表示第n段时间的订单序列,每个订单序列
称为商品数据集的项集;订单序列sn={i1,i2,

,im},其中im表示第m个订单,每个订单称为商品数据集的项,每个订单包含至少一个商品;
[0086]
s2:根据商品的收益情况为每个商品赋予不同的权值;
[0087]
s3:根据商品权值大小,对多元项中包含的商品进行升序排序,获得排序后的商品数据集d
*

[0088]
s4:建立候选加权频繁序列集wfubr、加权频繁序列集wsr和加权频繁项集fir,令r=1;
[0089]
s5:判断排序后的商品数据集d
*
是否为空,若为空,则执行步骤s10;否则,根据候选加权频繁序列集wfubr的r序列与排序后的商品数据集d
*
中的一元项进行扩展,获得扩展r序列,执行步骤s6;
[0090]
所述扩展包括项集扩展或序列扩展,具体为:
[0091]
项集扩展表示将排序后的商品数据集d
*
中的一元项分别添加到r序列中最后一个项集的末尾;
[0092]
序列扩展表示将排序后的商品数据集d
*
中的一元项分别添加到r序列的末尾;
[0093]
s6:计算扩展r序列中每个序列的加权支持上界值和加权支持度,依据向下闭包特性,确定是否将每个序列加入候选加权频繁序列集wfubr和加权频繁序列集wsr中;并将加入候选加权频繁序列集wfubr中的序列的项添加到加权频繁项集fir中,相同的项仅添加一次;
[0094]
加权支持上界值表示为:
[0095][0096][0097]
加权支持度表示为:
[0098][0099]
式中,swubr表示扩展r序列的加权支持上界值,tsmw表示排序后的商品数据集d
*
的相对加权频繁总值,sy表示第y段时间的订单序列;rupr表示扩展r序列在所属订单序列的上界值,ωr表示扩展r序列的权值,lengthr表示扩展r序列所包含的项数,rswubr表示扩展r序列所在订单序列的剩余最大值,|x|表示添加至r序列的项的个数,wsupr表示扩展r序列的加权支持度;
[0100]
预设最小加权支持度min ws,分别将扩展r序列中每个序列的加权支持上界值与最小加权支持度进行比较,若swub≥min ws,则该序列加入候选加权频繁序列集wfubr中,否则不加入;
[0101]
分别将扩展r序列中每个序列的加权支持度与最小加权支持度进行比较,若wsup≥min ws,则该序列加入加权频繁序列集wsr中,否则不加入。
[0102]
向下闭包特性指:候选加权频繁序列的上界值总会大于等于其将要拓展序列的加权支持度;
[0103]
s7:根据先验性原理,利用加权频繁项集fir中的项对排序后的商品数据集d
*
进行
压缩,形成压缩数据集d

,具体的:
[0104]
判断排序后的商品数据集d
*
中的项是否存在于加权频繁项集fir中,若存在,则保留该项,若不存在,则剔除该项,形成压缩数据集d


[0105]
压缩数据集d

中的所有项集中,若存在包含一个项的项集,则从压缩数据集d

中删除该项集。
[0106]
s8:基于压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集dr,将投影数据集dr作为下一轮次的数据集d
*

[0107]
构建投影数据集dr的具体方法为:
[0108]
压缩数据集d

包含若干个序列,每个序列中包含若干项;以任意一项为前缀,则保留该项在每个序列中第一次出现位置之后的所有项,形成投影数据集dr。
[0109]
s9:令r=r 1,返回步骤s5;
[0110]
s10:根据每一轮次获得的加权频繁序列集组成加权频繁序列总集;
[0111]
s11:根据加权频繁序列总集中多元项进行商品组合推荐。
[0112]
实施例3
[0113]
本实施例结合具体的数据对实施例2提出的一种基于加权频繁序列的商品组合挖掘方法进行说明;
[0114]
如图2所示,某电商平台5个时间段内出售商品构成了商品数据集d,5个时间段的订单序列记为其中s1~s5,在第一个时间段内,依次有4笔订单,分别卖出商品b、商品a、商品c、商品b,则s1={b,a,c,b},同理获得其他订单序列。根据商品的收益情况,分别为商品a~h赋予不同的权值,商品权值图如图3所示;以订单序列s3={a,c,f,(ed),b}为例,根据商品权值大小,对多元项中包含的商品进行升序排序,根据图3可知,商品d的权值小于商品e,故排序后的订单序列s3={a,c,f,(de),b},则排序后的商品数据集d
*
如图4所示。
[0115]
建立候选加权频繁序列集wfubr、加权频繁序列集wsr和加权频繁项集fir,令r=1,则有候选加权频繁序列集wfub1、加权频繁序列集ws1和加权频繁项集fi1;此时排序后的商品数据集d
*
不为空,则根据wfub1的1序列与排序后的商品数据集d
*
中的一元项进行扩展,由于建立的wfub1为空,所以将排序后的商品数据集d
*
中的一元项依次添加在空序列末尾,形成扩展1序列,即《a》,《b》,《c》,《d》,《e》,《f》,《g》,《h》,分别计算每个序列的加权支持上界值swub和加权支持度wsup,计算结果如图5所示;本实施例中,预设最小加权支持度min ws=0.3,将每个1序列的加权支持上界值swub和加权支持度wsup分别与最小加权支持度0.3进行比较,加权支持上界值swub不小于0.3的序列加入候选加权频繁序列集wfub1中,加权支持度wsup不小于0.3的序列加入加权频繁序列集ws1中,分别如图6、7所示;将加入候选加权频繁序列集wfub1中序列的项添加至加权频繁项集fi1中,如图8所示,fi1中存在的项包括《c》,《d》,《e》,《f》,《g》,《h》;与排序后的商品数据集d
*
中的项进行对比,《a》,《b》存在于d
*
但不存在于fi1,在d
*
中剔除《a》,《b》,以s5={c,(ad),c,e,f}为例,剔除后s5={c,(d),c,e,f},而s1中剔除《a》,《b》后仅剩《c》,则将s1也删除,第一轮次获得的压缩数据集d

如图9所示;
[0116]
基于压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集d1,即分别以《c》,《d》,《e》,《f》,《g》,《h》为前缀,构建出6个投影数据集d1;以《c》为前缀构建投影数据集为例,保留《c》在每个序列中第一次出现位置之后的所有项;压缩数据集d

中,《c》出现在s1、
s2、s4中,则保留s1、s2、s4中《c》第一次出现位置之后的所有项,则以《c》为前缀的投影数据集d1如图10所示;
[0117]
将投影数据集d1作为下一轮次的数据集d
*
,令r=2,重复以上步骤;投影数据集d1不为空,则建立候选加权频繁序列集wfub2、加权频繁序列集ws2和加权频繁项集fi2;扩展时,wfub2的2序列则是将投影数据集d1中的一元项《c》,《d》,《e》,《f》,《g》,《h》分别添加到2序列的末尾,以《c》为例,则扩展2序列包括《cc》,《cd》,《ce》,《cf》,《cg》,《ch》,分别计算扩展2序列中每个序列的加权支持上界值swub和加权支持度wsup,计算结果如图11所示;继续与最小加权支持度0.3进行比较,加权支持上界值swub不小于0.3的序列加入候选加权频繁序列集wfub2中,加权支持度wsup不小于0.3的序列加入加权频繁序列集ws2中,分别如图12、13所示,此时仅有《cf》的加权支持上界值swub和加权支持度wsup不小于0.3,则加权频繁项集fi2中仅存在《cf》,如图14所示;继续在投影数据集d1剔除不是《cf》的项,则第二轮次的压缩数据集d

如图15所示,仅包含s1={f,f},s2={c,f};基于第二轮次的压缩数据集d

,分别以其中的每个项为前缀,构建投影数据集d2,无论以《c》还是《f》为前缀,第一次出现位置之后的项仅为《f》,投影数据集d2如图16所示;
[0118]
将投影数据集d2作为下一轮次的数据集d
*
,令r=3,重复以上步骤;投影数据集d2不为空,则建立候选加权频繁序列集wfub3、加权频繁序列集ws3和加权频繁项集fi3;扩展时,wfub3的3序列则是将投影数据集d2中的一元项《f》添加到3序列的末尾形成《cff》,计算《cff》的加权支持上界值swub和加权支持度wsup,计算结果如图17所示,加权支持上界值swub和加权支持度wsup均小于0.3,候选加权频繁序列集wfub3、加权频繁序列集ws3和加权频繁项集fi3均为空,投影数据集d2也被剔除为空,递归操作结束;
[0119]
利用相同的方法计算出以《d》,《e》,《f》,《g》,《h》为前缀构建出的投影数据集,最终根据所有加权频繁序列集组成权频繁序列总集,即ws=ws1∪ws2∪

∪wsr,本实施例最终获得的加权频繁序列总集如图18所示,可以看出商品按照cf、df、ef进行组合出售,具有更高的收益。
[0120]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献