精华内容
下载资源
问答
  • 前言 这里就当作一个小案例进行介绍,案例需求 环境:win10系统; 编译软件:TexLive2018。 选择XeLaTeX进行编译的,如果第一次编译报错,再进行一次编译即可。...1.为文章添加标题、作者、时间 \maketitle这一...

    前言

    这里就当作一个小案例进行介绍,案例需求
    环境:win10系统;
    编译软件:TexLive2018。
    选择XeLaTeX进行编译的,如果第一次编译报错,再进行一次编译即可。程序的源文件及材料已放在百度云中:在我的订阅号(Name:AIAS编程有道; ID:pipizongITR ;左侧二维码)中回复:“latex”即可,或者网盘直下:latex_example

    编辑过程

    1.为文章添加标题、作者、时间

    \maketitle这一行一定要在\begin{document}的下面,否则LaTeX会判定为语法错误。

    \documentclass{article} %article 文档
    \usepackage{ctex}  %使用宏包(为了能够显示汉字)
    \title{文章的标题}  %文章标题
    \author{作者名称}   %作者的名称
    \date{\today}       %日期
    % 设置页面的环境,a4纸张大小,左右上下边距信息
    \usepackage[a4paper,left=10mm,right=10mm,top=15mm,bottom=15mm]{geometry}  
    \begin{document}
    \maketitle          %添加这一句才能够显示标题等信息
    
    \end{document}
    

    编译结果:
    在这里插入图片描述

    2.摘要的书写

    在\maketitle下添加内容,如下

    \maketitle          %添加这一句才能够显示标题等信息
    %摘要开始部分
    \begin{abstract}
    该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。
    \end{abstract}
    

    编译结果如下
    在这里插入图片描述
    如果不希望摘要与正文在一页的话,在摘要结束后添加\newpage即可。

    3.标题、段落、目录

    正文的标题设置:一级标题\section{},耳机标题\subsection{},三级标题\subsubsection{};
    正文的段落设置:在一段的最后添加\par代表一段的结束;
    正文的目录设置:在\begin{document} 内容中添加:\tableofcontents

    \documentclass{article} %article 文档
    \usepackage{ctex}  %使用宏包(为了能够显示汉字)
    
    \title{一笑清寒书写的文章}  %文章标题
    \author{一笑清寒}   %作者的名称
    \date{\today}       %日期
    % 设置页面的环境,a4纸张大小,左右上下边距信息
    \usepackage[a4paper,left=10mm,right=10mm,top=15mm,bottom=15mm]{geometry}
    \begin{document}
    \maketitle          %添加这一句才能够显示标题等信息
    %生成目录设置
    \renewcommand{\contentsname}{目录} %将content转为目录
    \tableofcontents
    %摘要开始部分
    \begin{abstract}
    该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。
    \end{abstract}
    %标题开始
    \section{一级标题1}
    第一段一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容。。\par
    第二段一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容。。
    \subsection{二级标题1.1}
    二级标题下的内容。。。
    \subsubsection{三级标题下的内容1.1.1}
    三级标题下的内容。。。
    \section{一级标题2}
    一级标题2中的内容
    \end{document}
    
    

    在这里插入图片描述

    4.文本字体的改变、添加引用环境、脚注

    脚注的使用:在需要添加脚注的文字后添加\footnote{脚注内容}即可;
    引用的使用:\begin{quote}即可
    字体的改变:使用{\fangsong } ,{}中的内容即为仿宋字体等。

    \documentclass{article} %article 文档
    \usepackage{ctex}  %使用宏包(为了能够显示汉字)
    
    \title{一笑清寒书写的文章}  %文章标题
    \author{一笑清寒}   %作者的名称
    \date{\today}       %日期
    % 设置页面的环境,a4纸张大小,左右上下边距信息
    \usepackage[a4paper,left=10mm,right=10mm,top=15mm,bottom=15mm]{geometry}
    \begin{document}
    \maketitle          %添加这一句才能够显示标题等信息
    %生成目录设置
    \tableofcontents
    %摘要开始部分
    \begin{abstract}
    该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。该部分内容是放置摘要信息的。
    \end{abstract}
    %标题开始
    \section{一级标题1}
    第一段一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容。。\par
    第二段一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容,一级标题下的内容。。
    \subsection{二级标题1.1}
    二级标题下的内容。。。
    \subsubsection{三级标题下的内容1.1.1}
    三级标题下的内容。。。
    \section{一级标题2}
    一级标题2中的内容。\par
    西游记\footnote{中国古典四大名著之一}小说开头写道:
    \begin{quote}
    {\kaishu 东胜神洲有一花果山,山顶一石,受日月精华,生出一石猴。之后因为成功闯入水帘洞,被花果山诸猴拜为“美猴王”。}
    \end{quote}
    \end{document}
    

    编译结果:
    在这里插入图片描述

    5.图片的插入

    需要使用宏包\usepackage{graphicx} %图片控制宏包;使用\caption{} 为图片添加名称。本图片已经放置在当前文件下。

    %开始插入图片
    \begin{figure}[htbp] %htbp 代表图片插入位置的设置
    \centering %图片居中
    \includegraphics[width=5cm]{xyj.jpg} %[]中可选参数,可以设置图片的宽高
    %添加图体
    \caption{六小龄童}
    
    \end{figure}
    

    编译结果:
    在这里插入图片描述

    6.表格插入

    \begin{table}[htbp] %htbp代表表格浮动位置
    %表格居中
    \centering
    %添加表头
    \caption{西游记四人身份表}
    %创建table环境
    \begin{tabular}{cccc} %4个c代表4列都居中,也可以设置l,r
    %表格的输入
    \hline  %一条水平线
    唐僧 & 孙悟空 &猪悟能 &沙悟净\\ %\\为换行符
    \hline
    唐玄奘 &美猴王 &天蓬元帅&卷帘大将\\
    \hline
    \end{tabular}
    \end{table}
    

    编译结果:
    在这里插入图片描述

    7.数学符号的使用

    行内公式用两个$包裹就行。行之间的公式,列表公式,使用\begin{equation}进行编写。(注意:在书写公示的时候,不应有空白行)

    \section{函数,公式}
    $\sin(x)$在数学中是三角函数中的一种,即为正弦函数.
    \begin{equation}
    y=\sin(x)
    \end{equation}
    

    编译结果为:
    在这里插入图片描述

    8.交叉引用

    例如引用图片,在图片的名称(caption)后添加label{}标签,需要引用的部分使用\ref{} ,{}中填写label{}中的内容即可:

    \section{交叉引用}
    从图\ref{师徒四人}中,可以看到师徒四人。
    \begin{figure}[htbp]
    \centering
    \includegraphics[height=10cm]{xyj2.jpg}
    \caption{师徒四人}\label{师徒四人}
    \end{figure}
    

    编译结果为:
    在这里插入图片描述

    总结

    总效果展示:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    LaTeX是一个非常强大的排版工具,以上只是小小的入门介绍,在实际编辑过程中,可能会出现很多bug,也是需要我们去慢慢调试的。
    在这里插入图片描述

    展开全文
  • 微信小程序动态修改页面标题setNavigationBarTitle

    万次阅读 多人点赞 2017-12-22 14:27:22
    微信小程序是可以动态修改页面标题的。 首先我们来看看静态是怎么实现的 在对应页面的json文件里面加入下面代码就可以实现了{ "navigationBarTitleText": "素材图库" }效果图如下: 其他动态的也是十分简单...

    微信小程序是可以动态修改页面标题的。
    首先我们来看看静态是怎么实现的
    这里写图片描述
    在对应页面的json文件里面加入下面代码就可以实现了

    {
      "navigationBarTitleText": "素材图库"
    }
    

    效果图如下:
    这里写图片描述
    其他动态的也是十分简单,毕竟是提供好了的接口,我们调用一下就行了。接口嘛,那就要操作对应的js文件咯。参考地址

      quwei: function () {
        wx.setNavigationBarTitle({
          title: '趣味表情' 
        })
      }
    

    点击的时候触发quwei这个函数就可以了。
    这里写图片描述
    好的,这样就实现了。冬至快乐喔!

    展开全文
  • 在`matplotlib`中常用的标题主要三种:窗口标题、图像标题和子图标题。设置窗口标题可以用两种方法:一种是调用`figure.canvas`对象的`set_window_title`方法,一种是`figure.canvas.manager.window`对象的`set...

    matplotlib中常用的标题主要三种:窗口标题、图像标题和子图标题。
    先通过三个案例简要说明这三类标题的实现。

    窗口标题、图像标题,子图标题(仅1个子图)

    在这里插入图片描述

    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = 'SimHei'
    
    fig = plt.figure()
    plt.plot([1, 2])
    # 设置图像标题
    plt.suptitle("这是图像标题")
    # 设置子图标题
    plt.title("这是子图标题")
    # 获取默认窗口标题
    current_title = fig.canvas.manager.window.windowTitle()
    print("默认窗口:",current_title)
    # 设置窗口标题方式一
    fig.canvas.set_window_title("这是窗口标题")
    # 设置窗口标题方式二
    fig.canvas.manager.window.setWindowTitle("这是窗口标题")
    
    plt.show()
    

    窗口标题、图像标题、子图标题(多子图)

    使用subplot函数实现子图

    在这里插入图片描述

    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = 'SimHei'
    
    fig = plt.figure()
    plt.subplot(1, 2, 1)
    plt.plot([1,2,3,4], [1,4,9,16], "go") 
    # 设置子图1标题
    plt.title("子图1标题")
    
    plt.subplot(122)
    plt.plot([1,2,3,4], [1,4,9,16], "r^") # r^ 表示 红色(red)三角
    # 设置子图2标题
    plt.title("子图2标题")
    # 设置图像标题
    plt.suptitle("图像标题")
    # 设置窗口标题
    #fig.canvas.set_window_title("这是窗口标题")
    fig.canvas.manager.window.setWindowTitle("这是窗口标题")
    
    plt.show()
    

    使用subplots函数subplots实现子图

    在这里插入图片描述

    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = 'SimHei'
    
    fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6,6))
    ax[0].plot([1,2,3,4], [1,4,9,16], "go") 
    # 设置子图1标题
    ax[0].set_title("子图1标题") 
    ax[1].plot([1,2,3,4], [1,4,9,16], "r^") 
    # 设置子图2标题
    ax[1].set_title("子图2标题") 
    # 设置图像标题
    plt.suptitle("图像标题")
    # 设置窗口标题
    fig.canvas.manager.window.setWindowTitle("这是窗口标题")
    
    plt.show()
    

    原理分析

    通过前面三个案例可知:

    窗口标题

    设置窗口标题可以用两种方法:
    一种是调用figure.canvas对象的set_window_title方法,一种是figure.canvas.manager.window对象的setWindowTitle方法。通过下面源码可知,这两种方法其实是等价的。
    因此在日常实现过程中,关键是获取当前图像对象(figure),即案例中的fig。该方法只有一个参数,类型为字符串。
    可以通过
    通过figure.canvas.manager.window对象的windowTitle方法可以获取窗口标题。

    class FigureManagerQT(FigureManagerBase):
        def set_window_title(self, title):
            self.window.setWindowTitle(title)
    

    图像标题

    调用plt.suptitle函数即可。根据源码可知,plt.suptitle函数其实是调用了当前figure对象的suptitle方法。

    suptitle函数参数

        def suptitle(self, t, **kwargs):
            """
            Add a centered title to the figure.
    
            Parameters
            ----------
            t : str
                The title text.
    
            x : float, default 0.5
                The x location of the text in figure coordinates.
    
            y : float, default 0.98
                The y location of the text in figure coordinates.
    
            horizontalalignment, ha : {'center', 'left', right'}, default: 'center'
                The horizontal alignment of the text relative to (*x*, *y*).
    
            verticalalignment, va : {'top', 'center', 'bottom', 'baseline'}, \
    default: 'top'
                The vertical alignment of the text relative to (*x*, *y*).
    
            fontsize, size : default: :rc:`figure.titlesize`
                The font size of the text. See `.Text.set_size` for possible
                values.
    
            fontweight, weight : default: :rc:`figure.titleweight`
                The font weight of the text. See `.Text.set_weight` for possible
                values.
    
            Returns
            -------
            text
                The `.Text` instance of the title.
    
            Other Parameters
            ----------------
            fontproperties : None or dict, optional
                A dict of font properties. If *fontproperties* is given the
                default values for font size and weight are taken from the
                `.FontProperties` defaults. :rc:`figure.titlesize` and
                :rc:`figure.titleweight` are ignored in this case.
    
            **kwargs
                Additional kwargs are `matplotlib.text.Text` properties.
    
            Examples
            --------
            >>> fig.suptitle('This is the figure title', fontsize=12)
            """
    

    子图标题

    • 使用subplot函数:在所在子图中,使用plt.title函数。
    • 使用subplots函数:使用子图对象调用set_title方法。
      plt.title函数和axes.set_title方法的参数相同。

    注意,在使用subplots函数创建子图时,为什么不能使用plt.title函数设置子图标题呢?
    根据title函数的源码可知,title函数其实是通过gca()函数获取子图,然后再调用set_title方法设置标题的。根据实验,在使用subplots函数函数创建多个子图时,plt.gca()只能得到最后一个子图的标题,因此,在某些情况下使用plt.title函数可设置最后一个子图的标题。

    plt.title函数和axes.set_title方法源码

    def title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs):
        return gca().set_title(
            label, fontdict=fontdict, loc=loc, pad=pad, y=y, **kwargs)
    
    Axes.set_title(self, label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs):
        """
        Set a title for the axes.
    
        Set one of the three available axes titles. The available titles
        are positioned above the axes in the center, flush with the left
        edge, and flush with the right edge.
    
        Parameters
        ----------
        label : str
            Text to use for the title
    
        fontdict : dict
            A dictionary controlling the appearance of the title text,
            the default *fontdict* is::
    
                {'fontsize': rcParams['axes.titlesize'],
                'fontweight': rcParams['axes.titleweight'],
                'color': rcParams['axes.titlecolor'],
                'verticalalignment': 'baseline',
                'horizontalalignment': loc}
    
        loc : {'center', 'left', 'right'}, default: :rc:`axes.titlelocation`
            Which title to set.
    
        y : float, default: :rc:`axes.titley`
            Vertical axes loation for the title (1.0 is the top).  If
            None (the default), y is determined automatically to avoid
            decorators on the axes.
    
        pad : float, default: :rc:`axes.titlepad`
            The offset of the title from the top of the axes, in points.
    
        Returns
        -------
        `.Text`
            The matplotlib text instance representing the title
    
        Other Parameters
        ----------------
        **kwargs : `.Text` properties
            Other keyword arguments are text properties, see `.Text` for a list
            of valid text properties.
        """
    
    

    plt.gca()实验

    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = 'SimHei'
    
    fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6,6))
    ax[0].plot([1,2,3,4], [1,4,9,16], "go") 
    ax[1].plot([1,2,3,4], [1,4,9,16], "r^") 
    
    print(plt.gca())
    print(ax[0],ax[1])
    

    结果为

    AxesSubplot(0.547727,0.11;0.352273x0.77)
    AxesSubplot(0.125,0.11;0.352273x0.77) AxesSubplot(0.547727,0.11;0.352273x0.77)
    
    展开全文
  • 主要解决商品标题过长、如何推荐与展示的问题,很硬的一篇干货。 背景 图1. 猜你喜欢推荐结果展示图以及商品详情页截图(目前猜你喜欢同时存在一行以及两行标题情况)。商品原始标题往往过长(平均长度30字...

    本文来自阿里丹丰、荐轩等的分享。主要解决商品标题过长、如何推荐与展示的问题,很硬的一篇干货。

     

    背景

     

    图1. 猜你喜欢推荐结果展示图以及商品详情页截图(目前猜你喜欢同时存在一行以及两行标题情况)。商品原始标题往往过长(平均长度30字左右),在结果页中无法完整显示,只能点击进入商品详情页才能看到商品完整标题。

     

    当前淘系商品(C2C)标题主要由商家撰写,而商家为了SEO,往往会在标题中堆砌大量冗余词汇,甚至许多与商品并不直接相关的词汇,以提高被搜索召回的概率,以及吸引用户点击。这引起两方面的问题:

    1. 这些标题往往过长,以往pc时代这并不是一个严重问题。但现在已经全面进入移动互联网时代,手淘用户也几乎都是移动端用户,这些冗长的商品标题由于屏幕尺寸限制,往往显示不全,只能截断处理,严重影响用户体验。如图1所示,在推荐的展示页中,标题往往显示不全,影响体验。用户若想获取完整标题,还需进一步点击进入商品详情页。

    2. 另一方面,这些原始长标题是为了搜索做的SEO,对于推荐的match阶段,其实并无帮助。甚至,其中许多无关冗余词汇还会起到噪声作用,并且也会对用户的浏览决策起到干扰作用。

     

    因此,使用尽可能短的文本体现商品的核心属性,引起用户的点击和浏览兴趣,提高转化率,是值得深入研究的问题。

     

    问题形式化

     

    商品短标题的生成或者压缩,可以看作一种特殊的文本摘要任务。类似于Alexander Rush等人提出的sentence summarization任务[1,2]。但相比普通的sentence summarization任务,作为特定电商领域且跟用户消费密切相关的一个任务,商品短标题的生成具有一些更显式且严格的限制。此工作中,我们主要将其抽象为两点:

    1. 不能引入无关信息。商品的短标题尽量保留原始标题中的用词,避免引入其他信息。一方面这是因为原始标题中的词语往往都是卖家为了点击率等考虑精挑细选的,已经足够优秀;另一方面,引入其他信息虽然能够带来更多的变化,但也增加了犯错的可能。如为Nike的鞋子标题生成了Adidas关键字,这类事实性的错误在wiki style类的文本摘要中经常发生,已引起研究人员的重视[3],但在新闻之类的摘要中,人们往往还能忍受。对于电商平台来说,这类错误是不能容忍的。

    2. 需要保留商品的关键信息(如,品牌,品类词)。商品的短标题如果丢失了品牌或者品类词,一方面对用户来说非常费解,影响体验;另一方面也容易引起卖家的不满投诉。

     

    这两个约束,在普通的句子摘要任务中,同样也成立,但他们并没有电商领域中如此严格。

     

    针对这些问题,我们基于Pointer Netowrk [4],提出Multi-Source Pointer Network (MS-Pointer)来显式建模这两个约束,生成商品短标题。

    首先,对于约束1,我们使用Pointer Network框架将商品短标题摘要建模成一个extractive summarization(抽取式摘要)问题(Pointer Network是一种特殊的Seq2Seq模型结构,具体下一小节介绍)。对于约束2,我们尝试在原有的标题encoder之外,引入关于商品背景知识信息的另一个encoder (knowledge encoder),这个encoder编码了关于商品的品牌以及品类词信息,其作用一方面在于告诉模型商品的品牌和品类词信息,另一方面在于pointer mechanism可以直接从这个encoder中提取商品的品牌等信息。

    最终,MS-Pointer可以使用data-driven的方式学习从这多个encoder中提取相应的信息来生成商品的短标题,比如从knowledge encoder中选择品牌信息,而从title encoder中选择丰富的描述信息。

     

    这里需要说明两个问题。

    1. 对于抽取式摘要,基于删除的方法(Deletion Based)一样可以使用。比如Filippova等人[5]便基于seq2seq提出了在decode端输出原始title每个词保留与否的label,这是一个特殊的seq2seq模型,与普通的seq2seq模型decoder输入是summarization不同,这个模型的decoder的输入还是原始标题,输出并不是生成词,而是输入词保留与否二分类的label。然而,为了让摘要结果更加通顺易读,摘要中经常存在word reordering现象[6],Deletion Based方法并不能很好地处理这问题。在我们收集的训练数据中,就发现有超过50%的数据有word reordering现象。

    2. 另一个问题在于title中品牌、品类词信息的处理使用。显然,我们可以引入NER模型,构建一个end2end的模型,从title中自动识别商品的品牌和品类词等信息,来完成这个任务。但是,首先NER模块本身就尤其精度限制,会有错误累积问题,且需要额外的entity标注数据。另外,许多标题中存在多个品牌,多个品类词,这种情况下,正确识别错商品自身的品牌和品类词信息,对NER模块来说是个更大的挑战。而商品的品牌和品类信息,可以轻易地从数据库中商品meta信息中获取,直接给模型输入这些背景知识,显然是更加简单直接的选择。

       

    模型

    Pointer Network

    Pointer Network框架图

     

    与普通的seq2seq从一个预先定义好的vocabulary中选择词语生成摘要不同,pointer network使用attention机制,从encoder中选择词语来生成摘要。如图2所示,在decode的每一步t,使用decoder的隐状态dtdt去attention encoder的隐状态[h1,…,hi,…,hn][h1,…,hi,…,hn],然而以此attention的权重作为分布,去选择对应位置上的词来生成摘要。

     

    相比传统的seq2seq,Pointer Network能够更好地处理NLP中常遇到的OOV问题。这是因为它能够动态地从输入中选择单词,而不是从一个预定义好的vocabulary中选择,这使得它可以生成vocabulary中没有的单词。这对于商品短标题生成是一个非常好的特性,因为商品标题中存在大量的型号类的词语,都可能未出现在训练语料中。当然最重要的是,Pointer Network提供了一种extractive地摘要生成建模思路。短标题中所有的单词都是从输入的原始标题中获取的,这样可以大大降低普通seq2seq的abstractive摘要那样出错的概率。但是Pointer Network并没有机制保障decoder保留原标题中的品牌与品类信息,而这对电商平台而言是至关重要的。

     

    Multi-Sources Pointer Network

    使用两个encoder的Multi-Sources Pointer Network框架图

     

    最显著的区别在于,MS-Pointer可以从多个encoders中选择单词。在decode的每一步t,首先计算一个soft gating weight λ,这个概率权衡着decoder从两个encoder中选择单词的概率。最终生成单词的概率为两个encoder上的attention分布的加权和。这里为了简单处理,使用了sigmoid函数,根据decoder当前输入、状态以及encoder的状态来计算选择不同encoder的概率。更一般地,可以使用softmax函数来建模大于两个encoder的情况。这里λ所起的作用类似于一个分类器,如根据当前状态,去选择是否从background knowledge encoder中选择品牌信息。

     

    最终,模型的loss可定义为为:

     

    实验效果

    数据集构造

     

     

    对于本文的模型,我们除了常见的训练seq2seq模型需要的输入输出seq pair 样本,还需要商品的品牌、品类背景知识信息。对于品牌等信息,可以容易地从odps数据库中获取。对于商品原始标题与短标题对,我们从手淘有好货栏目中收集了这样的数据。有好货是手淘首页一个推荐场景,其中包含了大量达人生产的优质内容数据。这其中,就包含了商品的短标题。如下图所示,有好货中推荐结果的展示页面包含了达人所写的商品短标题。

     

     

    但是这些短标题并不适合所有都拿来训练模型。其中一部分标题类似于创意文案,已经与商品本书关联较弱,属于噪声数据需要去掉;另一部分虽然也是商品短标题,但是由达人重新延伸重写了,这可以认为是abstractive的短标题,也需要去除,原因见上文说明,因我们的模型是一个extractive模型;还有一些虽然是extractive的短标题,但是存在品牌缺失类的情况,也需要清除。所以,最终我们严格使用extractive,短标题长度(10个字,推荐页一行能显示的长度),以及必须保留品牌信息,来过滤了有好货的训练数据。在第一期论文研究阶段,共收集了超过40w训练数据,统计信息见下表:

     

     

    后期,我们扩充了数据源,包括有好货以及从其他信息源手机的数据,最终构成了一个超过500万样本的训练语料。

     

    数据处理

     

    在此工作中,我们尽量减少了对于数据的预处理操作:

     

    • 大部分标点符号均做了保留。许多品牌,型号等信息包含标点,如Coca-Cola, J.crew.

    • 凡是出现在品牌等关键信息中的数字,都保留。这是因为许多品牌、型号中会带有数据,如 7 for all mankind, 360,PS4等。数字在NLP中是比较难处理的一类问题,首先数字是无穷的,难以学习可靠的表示,且生成时候很容易会生成一个新的错误的数字出来。因此凡是每次短标题中出现过的数字,都被过滤掉了。当然还有很多50ml、100%这样的处理细节,这里不做过细描述(前面的两个case,在此工作中不做切分,作为一个整体处理)。

    • 不分词,按字处理。seq2seq很多时候性能已经足够强,可以学出如何组合出合适的词语,这样也可以规避分词错误引起的问题。另外,词的长度不定,也难以控制生成的短标题长度。

     

    数据按照80%,10%,10%,以类目层次地随机划分为训练集、验证集以及测试集。

     

    Baseline & 模型设置

     

    这个工作中,简单起见,我们使用了基于LSTM的encoder和decoder,模型以及优化超参数设置如下:

     

     

    baseline包括:

    • Truncation (Trunc.) 阿里、Amazon.com以及eBay等网站线上所使用的方案,直接截断,保留前n个词。

    • TextRank [7] 一种类似于pagerank的关键词提取算法,可以用于生成摘要。

    • Seq2Seq-Del [5] 如上文介绍,基于seq2seq的deletion based的抽取式摘要算法。

    • LSTM-Del 与Seq2Seq-Del的不同在于直接在encoder的输出预测单词保留与否。

    • Pointer network (Ptr-Net) [4] 见模型部分介绍。

    • Ptr-Concat 将background knowledge与title拼接后,使用Ptr-Net。

    • Vanilla sequence-to-sequence (Seq2Seq-Gen) 传统的seq2seq普通,abstractive的方法。

    • Pointer-Generator(Ptr-Gen) Ptr-Net与Seq2Seq-Gen的结合。

       

    评价标准

     

    跟大多数文本生成任务一样,文本摘要评测一直是一个困难的任务,常见评测方法包括人工评测和自动评测。对于自动评测方法,我们使用了BLUE、ROUGE和METEOR三个指标。我们使用nlg-eval包计算 BLEU [8]和METEOR [10];pythonrouge计算ROUGE F1 [9]。此外,我们也人工评测了模型生成的短标题的质量。

     

    自动评测

     

    可以发现直接截断和TextRank的结果最差,因为这两个方法都没有考虑标题中单词的语义信息。同时,基于seq2seq框架的模型均取得了很高的得分,这说明seq2seq这个框架强大的拟合能力,在这个简单任务上优异性能。相比abstractive模型,extractive模型在各项指标上表现的更加优异。相比Ptr-Net和Ptr-Concat,MS-Pointer在各项指标上均有明显提升。

     

    品牌保留实验

    如前文所述,对于电商领域的商品短标题生成,品牌、品类词这类关键信息的保留是一个至关重要的指标。但由于品类词是一个比较笼统的概念,很多时候类似于类目,他在商品的标题中未必原封不动地出现,所以难以自动地评价。所幸,我们可以很容易地自动化测试模型是否完整地保留下了商品的品牌信息。错误率结果如下表:

     

     

    容易看出MS-Pointer显著优于其他模型,在测试集上的错误率降低到了接近千分之一。这里online数据集指的是从线上随机采样的140166个商品标题。值得说明的是在线上的online数据集中存在大量训练语料中没有出现过的品牌,当输入标题中存在多个oov单词时,模型难以从这些相同的oov embedding中选择出正确的词。针对这个问题,我们尝试在这些oov赋以不同的embedding加以区分,在此情况下online数据集上的错误率可以降低到0.56%.

     

    人工评测

    此外,我们随机采样了300条短标题进行了人工评测,主要考虑了四个维度, 核心产品词识别准确率Accuracy(0/1),品类词完整性Comm. (0/1),可读性 Readability(1~5)以及信息完整性 Info.(1~5),结果如下:

     

    人工评测结果同样说明了MS-Pointer方法相对其他方法的优势,并且可以发现与人工写的短标题得分非常相近。

     

    线上实验

    除了前文的离线实验,我们同样进行了线上实验对比。两个分桶的差异只有结果展示标题不同:一个分桶是线上原油方案截断的两行标题;另一个是模型产生的8~10个字的短标题。因此展示标题的不同,直接影响用户点击与否,因此这里选用CTR作为实验指标。试验持续了一周时间,结果如下图:

     

    这里统计的是分桶内部,pv>20以上商品的平均CTR。可以发现,使用生成的短标题可以明显提升。更进一步地分析发现,不同类目下商品的CTR变化非常不一样。如电子产品类商品的CTR提升甚至可以达到10%;而女性用户更加关注的类目如女装、化妆品类目CTR提升则较小。这是因为女性用户在浏览这些类目的推荐结果时,对于修饰形容词汇(如衣服的款式、材质,化妆品的功效等)会比较关注,而10个字以内的短标题毕竟有损,往往难以包含所有这些信息。而电子产品这些类目,往往品牌型号加上品类词就已足够包含所有信息,过多的冗余信息反而带来干扰。这也说明个性化的短标题生成以及如何引入CTR指标,是一个值得探索的方向。当然更加复杂的knowledge的引入,也是一个值得探索的方向。

     


    =>更多文章请参考《中国互联网业务研发体系架构指南》

    https://blog.csdn.net/Ture010Love/article/details/104381157

    =>更多行业权威架构案例、领域标准及技术趋势请关注微信公众号 '软件真理与光':

    公众号:关注更多实时动态
    更多权威内容关注公众号:软件真理与光
    展开全文
  • poi3.13生成多级标题

    万次阅读 2020-08-11 11:40:26
    自定义标题的层级关系 /** * 增加自定义标题样式。这里用的是stackoverflow的源码 * * @param docxDocument 目标文档 * @param strStyleId 样式名称 * @param headingLevel 样式级别 */ private static void ...
  • redis 批量删除指定前缀的key写自定义目录标题登录Linux控制台 登录Linux控制台 redis-cli -a 密码 -p 端口好 -n 库号 KEYS “指定key前缀_*” | xargs redis-cli -a 密码 -p 端口号 -n 库号 del
  • 前言:在前两篇文章中,我们讲解了滑动页面的的实现方法与四大函数的意义,但有时,仅仅实现页面滑动是不够的,还要有标题栏才会显得更友好。所以在这篇文章中,我将会向大家展示在android.support.v4包中的两个控件...
  • Word 二级标题不跟随一级标题变化

    千次阅读 2020-04-17 00:00:00
    最新写文档总是遇到二级标题无法跟随一级标题变化,而三级及以后却是正确的。百度谷歌了各种办法都无法彻底解决。今天无意间终于悟出来了其中的奥妙之处,特此记录一下,以防后面又忘记了怎么设置。 先看一下不正常...
  • 前言有时候,我们可能在一台...修改标题设置控制台窗口标题:在%CATALINA_HOME%/bin/catalina.bat文件中找到:doStart这一段代码把set TITLE=Tomcat修改为set TITLE=你想要的标题(这里填写的是测试)出现问题当点...
  • 向上滑动listview隐藏标题,向下滑动显示标题,完美解决滑动出现的空白问题。
  • 有些时候,我们想要自定义标题栏,比如在标题栏上放个 搜索 的SearchView。 当然就是隐藏原本自带的标题栏咯,先在style.xml定义一下样式: 然后在要自定义标题栏的activity里来使用这个主题,在manifest.xml中...
  • Typora设置标题居中

    千次阅读 2020-05-26 22:20:12
    由于markdown不直接...⚠️注意根据标题的等级要相应修改该代码,此处的h1对等markdown中的一级标题 ⚠️在Typora中最多支持6级标题,故根据自己的需要将其修改为h1…h6即可 ⚠️直接将该代码复制到Typora中即可,而
  • 我们平常开发Android程序时,编辑器总会自动给我们创建一个标题栏,但有时候为了美观我们并不想要界面上有个标题栏,所以我们需要隐藏默认的这个标题栏。首先我们先要区分状态栏/标题栏/导航栏状态栏(Status Bar) ...
  • 短视频标题自动生成工具,助你打造爆款标题,短视频标题自动生成工具的重要性在自媒体这个行业不言而喻,好的标题能够带来更好的流量,就算是相同的内容,取得不一样的两个标题,也会带来不同的效果。 很多自媒体人...
  • wps设置子标题编号继承上级标题

    千次阅读 2019-03-18 14:31:25
    标题2的子标题是2.1 2.2 而不是 1.1 1.2,做法是直接右键,点项目符号和编号,选多级编号,选择一个格式,就行了. 在格式里,把"①."的点去掉,可以从 1.1. 变成1.1 ...
  • Android ListView标题置顶效果

    千次下载 热门讨论 2012-09-23 23:04:43
    Android ListView标题置顶效果
  • Word WPS 标题二编号未跟随一级标题

    千次阅读 2019-04-17 12:22:36
    效果是这样的: 1 1.1 1.2 2 1.3 其中应该出现2.1的位置出现了1.3 解决: 选择 格式----项目符号与编号: ...依次选择级别1到级别5,设置“级别连接到样式”为标题1到标题5。 设置完成即可达到效果。 ...
  • 标题决胜武器:标题常用的14个套路

    千次阅读 2015-06-25 16:25:13
    无论是哪种传播载体的软文,读者接触的第一眼都是标题。因此标题基本上决定了读者是否阅读这篇软文。据广告学方面的资料统计,好标题激发的广告阅读率在50%~90%,差标题广告阅读率在5%~20%,一般性的广告标题阅读...
  • H5 添加标题

    千次阅读 2017-02-20 13:01:48
    添加标题 这是标题 1 这是标题 2 这是标题 3 这是标题 4 这是标题 5 这是标题 6 这是标题 7
  • word下级标题与上级标题不关联

    万次阅读 2016-11-16 20:34:38
    一级标题二级标题之间没有关联,出现如下情况: 可以看到在一级标题2下的二级标题并没有重新开始编号,可以做如下操作: 1、点击“多级列表”、选择列表库中想要选择的列表; 2、在此点击 多级列表、点击下方 ...
  • word中二级标题随一级标题自动编号

    千次阅读 2019-10-10 22:53:02
    如果我的一级标题为:“第一章,第二章,第三章…" 我的二级标题设为”1.1,1.2,1.3; 2.1,2.2,2.3; 3.1,3.2,3.3; 怎么才能使我的二级标题的小数点前面随着以及标题1、2、3变动? 例如 我把第二章删除了,这是“第...
  • PPT如何制作一级标题、二级标题

    万次阅读 2017-05-24 11:19:36
    左边的按钮是没编号的分点标题,右边的是有编号的分点标题点了之后选择其中一个样式,就可以制作一级标题了如果想插入二级标题,回车之后按tab键即可想从二级标题回到一级标题,按 shift+tab键即可
  • 小程序动态更改标题标题的颜色

    千次阅读 2018-11-16 12:50:15
    1,动态更改标题 json文件: {  "navigationBarTitleText": "标题" } js文件 onLoad: function (options) {  wx.setNavigationBarTitle({  title: this.data._title  })  } ...
  • subplot画图添加总标题

    万次阅读 多人点赞 2017-08-25 17:14:43
    本文总结了两种在matlab中用subplot添加总图例时遇到的尴尬问题。1. 控制子图之一的位置 先看效果 代码 data = randn(4,100);...hand_t=title('虚总图(子图)标题'); v=get(hand_t,'Position'); v(1)=120; set
  • 一级标题居中,二级标题固定缩进

    千次阅读 2017-07-27 11:25:02
    一级、二级标题为自定义长度,且一级标题居中,二级标题在一级标题的基础上缩进3个汉字的距离。
  • markdown 标题语法

    千次阅读 2018-04-10 18:42:49
    标题是每篇文章都需要也是最常用的格式,在Markdown中,如果一段文字被定义为标题,只要在这段文字前加 # 号即可。 一级标题 二级标题 三级标题 以此类推,总共六级标题,建议在井号后加一个空格,这是...
  • html之标题

    千次阅读 2018-02-23 17:48:43
    HTML 标题在 HTML 文档中,标题很重要。HTML 标题标题(Heading)是通过 <h1> - <h6> 标签进行定义的.<h1> 定义最大的标题。 <h6> 定义最小的标题。实例&...
  • 以WORD2013为例,目录标题的格式可以在引用-目录-自定义目录里面修改 如下图 在弹出的对话框中点修改,又出现一个小对话框如下图 小对话框中的目录1,2,3.....即对应标题1,2,3.... 以标题3为例,选中目录三点...
  • Qt 之 自定义窗口标题

    万次阅读 多人点赞 2016-12-06 23:20:44
    今天晚上就如何用Qt自定义窗口标题栏,写了一个小例子,比较基础,实用。在此分享一下。 首先Qt是跨平台的,所以在不同的平台上窗口的外观是不一样的。比如在windows平台上,用Qt显示的一个窗口就跟一般windows程序...
  • [field:title/] 全标题 [field:shorttitle/] 简短标题 [field:picname/] 缩略图图片地址 一、简略标题调用标签:  1.{dede:field.shorttitle/}  不可以在{dede:arclist}标签中套用,一般放在网页...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 305,145
精华内容 122,058
关键字:

标题