• Clustering and Exploring Search Results using Timeline Constructions (paper2)


    作者:Omar Alonso 

    会议:CIKM 2009

    摘要:

    截至目前(2009),通过提取文档中内嵌的时间信息来展现和聚类,这方面的工作并不多。 在这篇文章中,我们将提出一个“小插件”增添到现有的传统信息检索系统应用中,这个小附件能够探索多种时间信息。 使用时间实体提取技术,我们将展现时间表达如何被显示的生成以及如何被用于构建多粒度的时间线上。我们将讨论搜索结果的列表如何根据时间来聚类,并作为锚文本嵌入到时间线上,并且基于时间的文本聚类如何被利用来探索包含时间片段的搜索结果。同时,我们将描绘一个实现原型的大纲和评估来阐明我们的框架的可行性和有效性。


    简介:

          现有的搜索引擎可以看出,文档中的时间通常被用来根据先后来排序,而这个时间通常指的是,文档的创建/上一次修改的时间。 在某些情况下,这个方法有误导性:因为网页服务器给出的时间戳未必准确(我猜作者想表达的是,从文档发布,到传到服务器,再到显示,可能会有时间延迟,导致失去了实时性?)。其他的一些搜索引擎提供了时间搜索作为高级搜索的备选项。 又或者,一些搜索结果可以通过时间filter来进行筛选。  Anyway,不管怎么说,就是现有的搜索都没有探索嵌入文档中时间信息

          hit-list 是一个备选机制用来展示相似的文档,可以给用户更好的直观体验。对于用户的直观体验,已有专家证实用户确实偏好这种高度概括了某一主体的概要(参考文献:Information Search Re-access Strategies of Experienced Web Users. 2005. A.Aula)。接下来,作者就几个时间信息的应用场景做出了举例说明。例如:例1. 关于搜索CS领域的论文;例2.关于足球世界杯;例3;关于伊拉克战争。由此可看出时间信息真的很重要。那么,在一个文档中,时间信息有多个种类:可以是显式的,例如2007年8月3日等;可以是隐式的,例如2001年的国庆节,元旦节等;每一个文档中可能包含了众多的时间信息。那么问题来了,如何提取时间表达式,以及将时间锚定在一条时间线上,这是任何时间信息检索中的关键步骤。

      在这篇文中,我们将基于时间表达的提取技术,显示的提取时间,并构建时间文档简介,用于构建时间线,然后基于这条时间线,进行锚定和聚类。 因此,本文的贡献如下:

      1. 我们呈现了一个时间文档标注模型,基于不同的时间粒度;简述了提取多种时间信息的方法和呈现方法(例如,时间文档简介),

      2. 我们引入了一个基于时间的聚类算法,叫做TCluster,它可以从时间文档简介生成文档的聚类和支持探索;结合时间片段,我们将展示这个方法是有效的,

      3. 简述了实现的原型--简述系统的构造和算法流程图,基于一些标准的系统组建和工具,

      4. 呈现了评估我们的模型的方法,使用多种文档集和时间相关的文档探索任务,来阐述可行性和有效性,

      5. 使用Amazon Mechanical Turk(AMT), 一个用于我们评估研究的外包平台。

      全文组织如下:Section2 Related work - 探索性搜索, 命中列表聚类, 还有时间搜索;

             Section3 - 时间线的用户调查

             Section4 - 详细讲解 时间表达时间标注文档模型的概念。

             Section5 - TCluster 算法的组件和 时间片段

             Section6 - 系统构造和系统流程图

             Section7 - 评估方法


     Section 2 相关工作:

         目前有关使用时间信息的有很多研究,但是很少有探索把文档中的时间信息用于聚类和探寻搜索结果的。 “时间帧项目”是增强文章(可阅读性)的一个方法(参考:"On the Value of Termporal Information in Termporal information retrieval." O.Alonso.et. 2007);    比较两个文档上下文的“时间相似度”也被研究过(参考 "Termporal Expressions in Topic Detection and Tracking." J.Makkonen. et.el.2003  && Temporal Dcoument Retrieval Model for Business News Archives. P.J.Kalczynski. et. 2005);    挖掘博客中的时间(参考 “Mining Blog Stories using Community-based and Termporal Clustering”, A.Qamra.2006);最新,新的主题“关于未来的检索”开始流行,即“Future retrieval”,可以用来探寻未来(参考"Searching the Future" R. Baeza-Yates. 2005 SIGIR );同时,使用标签来可视化一段时间内的图片,也是一个很好的利用时间信息的例子(参考 "Visualizing Tags over Time." M.Dubinko. 2006)。

         令人激动的课题研究表现在将时间维度增添到现有的某些应用上,比如:新闻摘要(参考 "Temporal Summaries of News Topics", J.Allan. 2001),时间模式(参考"Identifying Temporal Patterns and Key Players in Document Collections", B. Shaparenko. 2005),检索(参考"Time Will Tell: Leveraging Termporal Expressions in IR. I.Arikan. 2009"),还有时态网页搜索(参考"Towards Temporal Web Search", M.pasca. 2008)。这些问题的探讨给出了一个明确的现有研究的方向。并且,谷歌现在增加了时间线的功能来展现搜索结果,这使得我们可以在命中列表上可以进行探索。这也就涉及到另一个有关我们课题的技术,叫做“hit-list clustering”(目前我还不太理解hit-list是什么东西,我就暂时叫它“命中列表”吧)。

      说到命中列表聚类,通常而言,它使用一个小的文档集合而并非整个文档集,这个小文档集适用于几个著名的提取子串的搜索算法。目前已有的命中列表聚类引擎有Vivisimo,我们把它作为一个baseline。基于Vivisimo呢,又有很多方法来优化它,比如,使用命名实体来聚类(参考"A Search Result Clustering Method using Informatively Named Entites", H.Toda. 2005) 或者依照特定的实体和引用来分组(参考"Grouping Search-Engine returned Citations for Person-Name Queries", R.Al-Kamha. 2004.)。 一个流行的命中列表聚类结构技术是基于后缀树的。另一种可选技术描述为参考文献("Apersonalized Serch Engine Based on Web-Snippet Hierarchical Clustering". P.Ferragina. 2005 ).  最新的有关网页聚类的研究参考("A Survey of Web Clustering Engines. "C.Carpineto, 2009), 数据聚类的研究参考("Data Clustering: A Survey." A.Jain,1999). 

         目前,众包已经成为一个流行的方法来进行评估(参考"Crowdsourcing for Relevance Evaluation SIGIR. O.Alonso. 2008")和用户调查( 参考 "Crowdsourcing User Studies with Mechanical Turk", A. Kittur. 2008)。 同时,研究搜索系统已经引起高度重视,包括帮助用户搜索,导航,以及发现新的方面(参考 "Supporting Exploratory Search."  R.White .2006  && "Evaluating Exploratory Serach Systems. R. White. 2008")。文献("The Value of Landmarks in Retrieving Information from Personal Stores. M. Ringel.2003")  给出了一个例子,关于将桌面搜索的结果放到时间线里。关于“时间标注(temporal annation)”的研究是最新兴起的,概括于参考("The Language of Time", I.Mani.2005.)  因为时间的识别很大程度上依赖于语言和文库,所以往往效果不尽人意。最新的研究,关于自动分配文档的时间段和使用实体提取来自动标记新闻的研究正在兴起(参考"Semantic Tagging of News Message. F.Schider. 2001")。

      特别的,我们将从以下三个方面,来帮助用户学习,探索,比较搜索结果:

      1.  提取文档中的各种时间信息

      2. 基于时间来聚类和组织

      3. 可视化界面

        


    Section 3 探索调查 

      略


    Section 4 标注时间的文档模型

       我们引入" time annotated document model " 作为 提取时间信息,锚定文本,显式用于集群这些任务的基础。

     我们的规划如下:

          4.1. 描述了基于我们方法的时间的概念

          4.2 讨论时间表达式如何在文中被显式呈现以及如何被锚定

          4.3 介绍了“时间文本简介”的概念。

    --------------------

    4.1 时间和时间线

          首先,概念:

          1⃣️ 一个时间线的  T={ T_d, T_w, T_m, T_y }

          2⃣️如何一个时间粒度由另一个时间粒度组成,则T_i >> T_j. 

            例如: 天组成星期,则有  T_w >> T_d

               天组成月,则有,  T_m >> T_d

               天组成年,则有,  T_y  >> T_d

               月组成年,则有   T_y  >> T_m

           3⃣️ 同一个粒度下, t_i, t_j 有先后顺序,则记做t_i < t_j  

               例如: t_i = 2019/1/1

               t_j = 2019/6/1 

              则有 t_i < t_j

    --------------------

    4.2 时间表达式

       终于到了最重要的地方了,现在我们开始关注 时间表达 以及时间信息的提取。 时间信息有两种: 一种是,成为文档时间戳,为文档创建或最后一次修改的时间(一般都是收集文档时或爬取文档时得到),记做  d.ts.  ;   另一种是涉及到文档上下文的时间,这个就有点复杂。一个合适的方法是通过提取“命名实体/时间实体”的方式来实现,它是跟时间相关的概念。 时间实体是一系列的tokens/words,可以被显式地表达成时间表达式“temporal expression”。 这个方法在Section6中有详细介绍。

         正如文献(“From Temporal expressions to Temporal information”. F.Schilder. 2001)中,我们沿用文中给出的划分,将时间划分成:显式表达,隐式表达,和相关时间表达。

     1. 显示表达: 对于T_d:  2019/10/27,   对于T_m : 2019/10 。 

     2. 隐式表达:2008年北京奥运会。一般而言,对于隐式表达,文档中的命名实体,隐式的时间表达至少要出现一个年份。

     3. 相对时间表达:指的是时间实体只能由另一个显示/隐式的表达的时间实体所指向。例如,上周,下个星期五。

       

      虽然看起来检测相对时间表达式很不可行,但是最近的高级课题都是探测和映射各种时间信息的实例。作者将在Section 6 详细讨论/讲解技术和工具。 

    --------------------

    4.3 时间文档简介 

       接下来,我们将展示如何通过NER(命名实体识别/提取)方法来显式的表达出各种时间表达式,用来构建我们的时间线和文档聚类方法。在我们的时间标注文档模型中,这个实体提取方法被记做 "tdp",也就是"temporal dcoument profile" 。 每个文档由三元组组成:

        D -> [EC x P]

      E: time expression,  E= Ee  + Ei  + Er

      C: time      T= Td + Tw + Tm  +  Ty

      P: postion  (position由出现了时间的句子数,在句子中的位置,以及绝对位置组成)

      d->  [ (e1, c1, p1),   (e2,c2,p2), ....    (e_ke,  c_ke, p_ke),                              //前ke个代表显示表达的时间  

         (e_ke+1, c_ke+1, p_ke+1), (e_ke+2, c_ke+2, p_ke+2), ....       (e_ki, c_ki, p_ki),         // ke+1 ~ ki 代表隐式表达的时间

         (e_ki+1, c_ki+1, p_ki+1),                                  //代表文档的时间戳

          (e_ki+2, c_ki+2, p_ki+2), .....        (e_kr, c_kr, p_kr)]                    //ki+2 ~ kr 代表相对表达的时间

    接下来,我们将这个文档的时间文档简介(temporal document profile)的三元组记做函数 tdp(d)

    总结:通过tdf可以很好的显示表达出时间,这对未来的构建多粒度的时间线来聚类文档有着重要作用


    section5 时间线的构建和文档探索

    在这一章,我们将展示如何将文档通过时间线的方式聚类起来。这个方法可以用于未排序的文档集,也可以用于命中列表的文档集。下面我们着重放在命中列表的文档集进行重排序上。

          我们假设已经有了 q,  D, 和一个hit-list  Lq = [ d1, d2, d3, .... dk] for top-k documents.  接下累四部分,详细阐述了TCluster 算法。

    --------------------

    5.1 构建时间大纲

       T-cluster的first step是构建 time outline,也就是,从时间文档简历中提取所有的时间单元(原文是chronon,我查不到这个词。我自己“翻译”“理解”成时间单元),我们记做ch(Lq):

        ch(Lq) := {{ c | d € Lq  AND (e, c, p) € tdp(d) }}

           注意:1⃣️ ch(Lq)中的元素可以来自不同的时间线。  

            2⃣️ 确定ch中最大AND最小元素,来决定timeline的粒度。例如:一篇文章中出现了1974作为min,另一篇户县了2007作为max,这时候的时间粒度选择为:Ty for Lq. 

    --------------------

    5.2  文档集群

      T-cluster 的second step,就是时间线去normalize ch(Lq)中的时间单位。这里我们将这个函数/功能记做 norm_g(c). 例如: norm_y(15/4/1966) = 1996,norm_m(15/4/1966) =4/1966. 

    然后,labels时间粒度g 被下面的集合所决定: 

       ch_g(Lq)  := { norm_g(c) | d  € Lq  AND (e, c, p) € tdp(d)}.  

    假定 l 个集群标签 y1,y2, y3....yl € Ty,并且有已经排好了先后顺序。 那么在y_j 标签里的文档记做cluster(y_j):

        cluster(yi) := { d | d  € Lq, ∃c: (e, c, p) € tdp(d) such that norm_y(c) = yi }.

         由这个式子,很直观的能知道,当一个文档中含有多个时间表达式的时候,它可以属于多个时间线集群。那么问题来了,对于这样的一个文档,是否有一个主集群(main cluster)呢?

    这样的一个集群可以很容易的被 tdp(d) 得到相对于 Lq的时间分布所决定。 例如:对于一个文档d,有n个years,那么主集群c_main(d)  就是包含时间单元最多的那一年。

       最后,每个集群之间数量都可以有很大的差异。一些集群可能只有很少的文档数,而集群很多的那一年,可能代表着某种 hot spot(热点). 在Section 6,我们将会阐述如何在用户界面展现文档聚类的属性。

    --------------------

    5.3 排序集群中的文档

        到目前为止,仅仅确定了时间线 Ty的文档聚类。然而聚类的文档很明显需要排序,来反应与时间标签yi的匹配度和查询q的匹配度。因为原始的hit list仅仅是与q的匹配度的排序,而现在集群中的文档排序则是兼顾时间和查询。 这样的一个排序的KEY就是查询q与时间表达式之间的距离。 命名一个 match_e(d, yi) ,表示 查询q 与时间表达式e同时出现在同一个句子的次数。

    比如:在lable为“2019”的集群里,查询是“特朗普”,文档d1 里面句子是:

      (其实这个说法是隐式表达,并非显示,但是为了方便理解,我还是这么写了)

          “去年圣诞节(指的是2018年12月25日),特朗普买了一个表。” ,  //   (e,c,p) = (去年圣诞, 25/12/2018,1) 

      “今年圣诞节(指的是2019年12月25日),特朗普又买了一个表”,  //    (e,c,p) = (今年圣诞,25/12/2019, 2)

       “今年圣诞节(指的是2020年12月25日),yogi也买了一个表”。   //    (e,c,p) = (今年圣诞,  25/12/2019, 3) 

       所以, tdp(d1) = { (去年圣诞, 25/12/2018,1) , (今年圣诞,25/12/2019, 2), (明年圣诞,  25/12/2020, 3) } , 而根据 norm_y(c) 可以看出,d1属于两个集群cluster(2018), cluster(2019)。

      那么match_e(d1, 2019) = # 与“特朗普”同时出现的句子里,并且含有显式表达(e,c,p) ,并且norm_y(c) 属于2019的文档数量。 很明显,在这个例子里,match(d1,2019) = 1。由此我们可以看出,一个文档中当 q与时间e同时出现的次数越多,说明这个文档应该排在这个时间集群的前面。 此外,有很多可选择的方法用于排序文档d结合match function。作者给出了一个算法:

      rank(d, yj) : = match_e(d, yj) + δi match_i(d, yj) + δr match_r(d, yj)    , δi,δr € [0,1]

       NOTE: 1⃣️这个排名还有很多值得未来改进的地方。比如不仅仅考虑q与e同时出现在同一个句子,还可以相邻

           2⃣️ δi 几乎很接近1 

           3⃣️ δr 取值 depends on 时间实体提取方法的能力。 

    基于以上讨论的,我们将使用以下的排序方法在TCluster算法中,给定两个d1, d2, d1 is ranked higher than d2只要满足下面任何一个:

        条件1: rank(d1, yj) >  rank(d2, yj)

        条件2: rank(d1,yj) = rank(d2,yj)  AND d1 is ranked higher in than d2

     请记住,因为我们是基于时间线的排序,所以d1有可能排序比d2高即使原有排序d2更靠前。考虑下:原有情况下,d2排序的更靠前仅仅是因为d2中出现查询的次数多,而文中并没有同时出现时间+查询,而d1中却出现了。

    --------------------

    5.4 集群探索

         任务构建时间的大纲和基于时间的集群可以被调用经过一个标准的文档检索和排序后,在一个探索性的搜索界面(见Section 6.2 )。

         就像Section4.1里面介绍的,时间粒度的组成导致了时间线上的lattice 结构(我理解并翻译的就是“格子”)。这种格子结构允许用户在一个确定的时间集群里继续探索。假定在集群cluster(2018)里,用户想用探寻 2018_m的内容。 T-cluster算法是首先在这个时间集群里,按照month的粒度再重新划分然后排序。算法一致。

    --------------------

    5.5 时间碎片(temporal snippet)

       在得到文档中的有效的时间信息后,我们现在的任务是利用这个信息然后提供给用户文档的相关性提示和探索性任务。为了完成这个,我们引入了一个时间碎片的概念,"temporal snippet",旨在衡量这个时间信息。

      与传统碎片类似,时间碎片可以被想像成一个文档预览,但是这个预览通过使用时间表达来描绘了文档中的主要事件。在构建这个时间碎片时,一个文档中,包含了时间表达式的最相关的句子,需要被被确定并适当“组合”。这个特征的效用是我们想呈现时间片段来显示这个文档出现在集群中的原因,换句话说,就是这个时间碎片,应该同时包含 查询 AND 集群时间标签。Tnippet算法包含了句子候选项选择和句子排序技术。关于时间碎片的描述和用户评估在另一篇论文中。(参考 “Effectiveness of Temporal Snippets”. O. Alonso. WWW 2009)


    Section 6 原型 

       接下来,作者将展示如何实现时间线的构建和基于时间的文档聚类方法。在作者的原型中,将结合到现有的技术来阐述方法的可行性。原型包含了两个组件:

        (1) 一个支持语料库处理和存储,以及创建索引的后端,

          (2)  一个处理单元,来实现查询的处理时间线的构建以及展现用户界面 。

            对于语料库处理,涉及到 提取文档集(从搜索应用中得到hit-list), 然后处理文档使用Alembic("http://www.mitre.org/tech/alembic-workbench/")词性标注器. 然后,使用GUTime(http://complingone.georgetown.edu/~linguist)时间标签器,来识别时间表达式的范围和标准化的值,然后生成xml文档。我们使用Oracle10g 数据库来存储已经标记好的XML文档。也就是说,时间文档简介已经被嵌入到文件中作为XML标记语言。

            对于查询处理,查询作为输入,然后默认排序。接着,执行我们的TCluster算法,然后以基于网页的用户界面来展示。 下一节我们将着重讲解实际文档标注处理实现原型。

    --------------------

    6.1   文档标注管道(pipeline)

       我们将提供时间表达式的鉴定以更详细的步骤来展现:

      假定有一个文档集, step 1 :提取时间相关的元数据,也就是,文档的创建时间/上一次修改时间/网页服务器提供的时间戳。

                step 2:  执行POST标注器在每一个文档上。

                step 3:  执行时间表达式标注器在原有的POST基础上,基于TimeML标准(参考"TimeML: Robust Specification of Event and Temporal Expressions in Text." J.Pustejovsky. AAAI. 2003).  这一步将会产生包含时间文档简介信息的XML标记。

        在平行步骤,传统的实体提取组件提取命名实体并扩展到文档索引上。索引被创建到用于高效搜索文本和时间表达式。

    --------------------

    6.2   探索用户界面

     


    Section 8.未来工作

        1. 探索集群下的文档排序工作

        2. 请更多的外包工人 

    参考:Clustering and Exploring Search Results using Timeline Constructions, Omar A.  el. 

    下一篇: Connecting Dots Between Articles

  • 相关阅读:
    天气预报APP(2)
    天气预报APP(1)
    android ——网络编程
    android ——Intent
    android ——可折叠式标题栏
    5.1 类,实例,实现,方法
    5.0 面向对象
    python 基础
    模拟实现一个ATM + 购物商城程序
    python 基础
  • 原文地址:https://www.cnblogs.com/yyagrt/p/11507377.html
Copyright © 2020-2023  润新知