177******85,您在“百度快速问医生生”上的医疗提问已有医生回复。您

春雨诊所App
扫描二维码
安装春雨诊所App
微信公众号
扫描二维码
关注春雨医生公众号
小程序 春雨医生+
扫描二维码
无需下载快速问诊
小程序 企业版
扫描小程序码
无须下载,直接使用
孕18周:今天在百度上搜怀孕肚子里有血块...
提示:疾病因人而异,他人的咨询记录仅供参考,擅自治疗存在风险。
孕18周:今天在百度上搜怀孕肚子里有血块
有一个回答让我寝食难安说怀孕有血块长时间会病变会变癌
还会影响小宝宝发育,
我不知道怎么办
也不知道是真是假
我没有听过这个说法,问你看明白你的血块是在哪里。你可以把彩超单给我看看
照片拍不清怎么办
血块彩超单上说在孕囊旁
我是前置胎盘
血块可以慢慢吸收的,减少活动吧
哦哦, 谢谢,
血块不会影响小孩的吧,
我再问一个问题,
我血块之前是6公分的
现在小了点但是吸收的很慢
那现在流产的几率大不大
是不是还是要躺床上不能下床活动呀
卧床休息吧,慢慢吸收
孕18周:今天在百度上搜怀孕肚子里有血块
有一个回答让我寝食难安说怀孕有血块长时间会病变会变癌
还会影响小宝宝发育,
我不知道怎么办
也不知道是真是假
分析及建议:
我没有听过这个说法,问你看明白你的血块是在哪里。你可以把彩超单给我看看,卧床休息吧。
猜你感兴趣
产科 主治医师
吉林市妇产医院
扫码关注医生,
方便随时咨询人工智能辅助看病 你和医生敢用吗?部分场景已有应用 还面临诸多挑战
  不用担心看不懂病历上的字了  捂着疼了一晚上的牙到口腔科就诊,你费劲地向医生一一告知病史、症状。医生一边拿着工具替你检查,一边跟你说话。等到诊疗结束,他们还要根据记忆填写你的病历,这就难免出现个别遗漏。如果再遇上一位爱好手写狂草的医生,拿回病历卡的你恐怕瞬间崩溃——你可能完全看不懂病历上那些究竟是什么字,但你又不好意思问得太多,更拉不下脸来让医生给你朗读一遍。于是,你可能根本无法获知医生对自己的准确诊断。  这样的场景,在以往的看牙经历中并不罕见。因为口腔科的特殊性,医生尤其不方便在问诊的同时停下手中的工具写病历,于是,能不能在工作的时候解放牙医的双手,这个问题亟待解决。  以语音识别为众人所熟知的(),从2016年开始试验“语音电子病历系统”,以期提高医生诊疗的效率。目前,它已经成为较为成熟的医疗领域应用,受到医生和患者的欢迎。  口腔医院使用语音电子病历系统  这个系统有什么用?记者了解到,在科大讯飞为北大口腔医院设计的门诊语音电子病历系统上,医生在与患者沟通、检查、处置的过程中,可以使用专门定制的医学麦克风设备全程录音,只要以口述的方式记录电子病历内容,经过后台语音识别和自然语言理解处理,一张结构化的电子病历就可以自动生成了。由于目前技术识别准确率超过95%,医生经过简单确认,可以立即打印,既提供给患者,也能同时完成电子档保存。  辅助“读片”,让医生节省人力   除了“听懂”,医学对于人工智能的要求还有“理解”。  排很长的队拍完CT,再排队候诊,你一定希望接待你的医生是个读片高手。  过去,医生要从10000个病人中找到真正有问题的、需要随访的病人,就必须翻阅全部10000张片子。如今,成像分辨率越来越高,医生要看的影像也越来越多,但是医生需要的不是数据,而是信息,怎样把这些有效信息更好地呈现给医生?这正是智能影像需要解决的问题。它需要自动图像分析工具做更精准的判断,很多技术仅凭眼睛是很难做到的。  利用人工智能做病灶检出和分析,可以大大提高读片效率,前面说的10000个病人,可能只需要看1000张片子,甚至不是去翻这1000张平片,而是从三维图像里快速找到医生要的信息。据科大讯飞医疗执行总裁鹿晓亮介绍,人工智能未来要承担的,就是医生的工具辅助任务,大多数重复性、事务性工作交给人工智能,医生就能节省人力,投入到更专业的医疗服务中去。  讯飞医学影像辅助诊断系统涉及的技术,于2017年8月刷新LUNA医学影像国际权威评测世界记录,以平均召回率94.1%的检测效果获得该项评测的第一名,这个成绩保持到了今天。  科大讯飞医学影像辅助诊断系统  慢性病管理,拒绝孤军奋战  作为人工智能在医疗领域应用的实验者之一,科大讯飞除了与全国上百家大小医院展开合作,最近又在上海与互联网医疗健康社区丁香园达成战略合作,引入如医药企业、设备、专家、医生等第三方合作伙伴,以期让整个链条产生可运行的商业模式。后者用18年时间,打造了国内知名医疗学术论坛及一系列移动产品。  这会擦出怎样的火花?  假如你是一名糖尿病患者,只是因为忍不住偷食了一小块月饼,也许接下来你的血糖就会发生波动。作为慢性病的典型代表,治疗糖尿病患者不能单纯注重降糖,日常更要以长期稳定控制血糖、预防糖尿病并发症为目标。  需要长时间疗养、长期预防和控制,是慢性病的一大特点。如果一年按365天计算,有8760小时。据测算,在现有的医疗条件下,你一年与护士、医生、营养师或者其他健康工作者接触的时间,多不过6小时,那么剩下的8754小时,只凭你一个人自觉,想来也过于艰难孤独了。  两者合作,有望用机器语言代替人工干预,引入糖尿病患者的日常管理。丁香园副总裁张伟表示,“人工智能技术在慢性病管理中会发挥越来越重要的作用。在常见问题、常见交流中用人工智能语言代替人类语言,我认为特定疾病领域下完全可以实现。”在不久的将来,你可以自己测量完血压后,上传到云平台,在那里对数据进行分析,而你的专属AI助理,立刻就能用智能语音交互系统对你进行督促了。  医疗人机耦合,尚面临诸多挑战  两者叠加的野心不止于此。科大讯飞医疗执行总裁鹿晓亮表示,希望能够构建一个人工智能+医生的人机耦合新模式,“让60分的医生能够做80分的事情,提高服务效率,提升服务质量,同时让90分的医生不再去做简单重复60分医生的工作”。  事实上,这种模式已经有不少应用的案例,主要使用在虚拟助理、辅助疾病诊断、健康管理、医学影像、临床决策支持、医院管理、疾病风险管理等场景。而疾病风险管理和医学影像,是眼下较为热门的两大应用场景,相关产品也相对成熟。  据公开资料显示,国外互联网巨头在人工智能+医疗领域都有或多或少的布局,其中IBM布局最早也相对深入,谷歌、微软均有部分参与。而在我国,2016年起人工智能+ 医疗逐渐形成投资风口,不过,因为医疗领域的专业门槛和技术发展的不确定性,商业化进程依然比较缓慢、投资风险也较高,因此目前并未形成大规模的投资形势。  尽管AI在医疗领域的应用能产生巨大的潜在价值,我国在人工智能技术开发市场也具备大数据的优势,但是现实中,除了一些技术发展还处于实验室阶段以外,“AI+医疗”在数据质量、标注准确性、市场认可等方面,都面临挑战;此外,在政府监管、法律伦理和隐私安全等领域,也面临一系列风险。这是与广阔的商业空间并存的。AI技术如何落地成靠谱的产品,如何让医生和消费者敢用、愿意用?将成为接下来国内外相关行业摸索的重点。
责任编辑:lishenjian
禁止发表不文明、攻击性、及法律禁止言语
请发表您的意见(游客无法发送评论,请
还可以输入 140 个字符
热门评论网友评论只代表同花顺网友的个人观点,不代表同花顺金融服务网观点。
以下为热门自选股
代码|股票名称
同花顺财经官方微信号
手机同花顺财经
专业炒股利器
同花顺爱基金贫血3项,其中铁蛋白177.4要做什么检查?
ask_016237
贫血3项,其中铁蛋白177.4,正常范围是13-150请问医生要做什么检查
最新热门推荐
因不能面诊,医生的建议仅供参考共1条医生回复
内科-普通内科
内科疾病,尤其是心血管疾病的诊治,高血压,冠心病,心力衰竭
病情分析:发上来看看
贫血3项,其中铁蛋白177.4,正常范围是13-150请问医生要做什么检查
李云鹏医生
发上来看看
就这一项别的正常,铁蛋白178.4ng/ml正常范围
就问问是否影响
李云鹏医生
这个高点,不影响
李云鹏医生
不客气,还有问题吗
李云鹏医生
抱歉,由于您长时间未回复,对话将给予关闭,如有什么疑问请***咨询我。欢迎您再次咨询
最新热门文章
贫血 相关药品
功能主治:本品用于缺铁性贫血。...
参考价格:¥15
功能主治:1.适用用于维生素B6缺乏(维生素B...
参考价格:¥19
最新相关问题&figure&&img src=&https://pic3.zhimg.com/v2-6a4cc7c029cd668a44086d_b.jpg& data-rawwidth=&1024& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic3.zhimg.com/v2-6a4cc7c029cd668a44086d_r.jpg&&&/figure&&p&本文是译文,原文&a href=&https://link.zhihu.com/?target=http%3A//mccormickml.com//word2vec-tutorial-the-skip-gram-model/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&戳这里.&/a&&/p&&p&本教程将介绍Word2Vec的skip-gram神经网络模型。本教程的目的是忽略Word2Vec的一般介绍性和抽象概念,深入了解skip-gram的更多的细节。&/p&&h2&&b&模型概述&/b&&/h2&&p&skip-gram神经网络模型其最基本的形式实际上惊人的简单; 我认为是所有的细节和技巧使其难以解释。&/p&&p&我们先从高层次了解该模型。Word2Vec使用了一个在机器学习中经常用到的技巧。我们将训练一个带有单个隐藏层的简单的神经网络来完成某个任务,但是实际上我们并没有使用这个神经网络用于训练我们的任务。相反,我们的目标实际上只是学习隐藏层的权重——我们将看到这些权重实际上是我们试图学习的“词向量”。&/p&&p&另一个使用这个技巧的地方是在无监督的特征学习中,训练一个自动编码器来压缩隐藏层中的输入向量,并在输出层将其解压缩回原始数据。在训练完成后,你可以去掉输出层(解压缩步骤)仅使用隐藏层——这是学习无标签数据的图像特征的一个技巧。&/p&&h2&&b&假设任务&/b&&/h2&&p&现在我们先聊聊这个“假“任务,我们要打造一个神经网络来解决它,然后我们会回过头来理解这个过程是如何间接地得到我们真正想要的词向量。&/p&&p&我们要训练神经网络做以下事情。给定一个句子中的特定单词(输入单词),查看附近的单词并随机选择一个。神经网络将告诉我们词汇表中每个词是这个”附近单词“的概率。&/p&&p&当我说“附近”时,算法实际上有一个“窗口大小”参数。典型的窗口大小是5,即输入单词前5个单词和后5个单词(共10个单词)。&/p&&p&输出概率表示词汇表中每个单词是输入单词的”附近单词“的可能性。例如,如果你给训练后的网络输入单词“Soviet”,输出”Union”和“Russia”的概率将比输出“watermelon”和“kangaroo”这样无关的单词高得多。&/p&&p&我们把训练文档中得到的单词对输入神经网络,以此来进行训练。下面的例子显示了一些训练样本(单词对),我们将从“The quick brown fox jumps over the lazy dog.”这个句子中得到单词对。使用一个窗口大小为2的小窗口为例。以蓝色突出显示的单词是输入单词。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ca21f9bdc1f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&886& data-rawheight=&529& class=&origin_image zh-lightbox-thumb& width=&886& data-original=&https://pic3.zhimg.com/v2-ca21f9bdc1f_r.jpg&&&/figure&&p&&br&&/p&&p&网络将从每个单词对出现的数量中学得统计数据。例如,相较于单词对(“Soviet”, “Sasquatch”),网络可能会获得更多的(“Soviet”, “Union”)训练样本。训练结束后,如果输入“Soviet”一词,则“Union”或“Russia”比“Sasquatch”输出的概率将高得多。&/p&&h2&&b&更多细节&/b&&/h2&&p&所有这些如何表示?&/p&&p&首先,你不能把一个单词作为一个文本字符串输入到一个神经网络中,所以我们需要一种单词的表示方法。为了做到这一点,我们首先要从训练文档中建立一个单词词汇表,假设我们有一个有10,000个唯一单词的词汇表。&/p&&p&我们将把一个像“ants”这样的输入词表示成一个one-hot向量。这个向量的维度是10,000(每个维度表示词汇表中的一个单词),我们将one-hot中“ants”对应的维度置为“1”,所有其他维度置为“0”。&/p&&p&网络的输出是一个向量(维度也是10,000),每一个维度包含该维度对应的词汇表中的单词是“附近单词”的概率。&/p&&p&一下是我们的神经网络的架构。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-5c16aa8eaacbcd68e4b8b41_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1569& data-rawheight=&980& class=&origin_image zh-lightbox-thumb& width=&1569& data-original=&https://pic2.zhimg.com/v2-5c16aa8eaacbcd68e4b8b41_r.jpg&&&/figure&&p&&br&&/p&&p&隐藏层的神经元没有激活函数,输出神经元使用softmax函数。 我们稍后会回来细说。&/p&&p&当使用单词对训练这个网络时,输入是表示输入单词的one-hot向量,输出也是表示输出词的one-hot向量。但是当你使用输入词评估训练好的网络时,输出向量实际上是一个概率分布(即一堆浮点数的组合,而不是一个one-hot向量)。&/p&&h2&&b&隐藏层&/b&&/h2&&p&对于我们的例子来说,我们想要学习有300个特征值的词向量。所以我们隐藏层的权重矩阵是10000行(每行代表词汇表中的一个词)和300列(一列代表一个隐藏神经元)。&/p&&p&300个特征是Google在他们发表的用Google news数据(下载&a href=&https://link.zhihu.com/?target=https%3A//code.google.com/archive/p/word2vec/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&链接&/a&)训练的模型使用的数字。特征值的数量是一个“超参数”,你可以在实际应用时调整该参数(尝试不同的数字,看什么数字能得到最好的结果)。&/p&&p&观察权重矩阵的行,他们就是我们实际想要的词向量。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-cd627ce7ca84_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&782& data-rawheight=&671& class=&origin_image zh-lightbox-thumb& width=&782& data-original=&https://pic1.zhimg.com/v2-cd627ce7ca84_r.jpg&&&/figure&&p&&br&&/p&&p&所以我们的最终目的就是学习隐藏层的权重矩阵——当完成训练输出层就可以“扔掉”了。&/p&&p&让我们回过头来梳理一下我们将要训练的模型的定义。&/p&&p&你可能会问:“one-hot向量几乎全是0…有什么用呢?”如果你用一个1 x 10,000的one-hot向量乘以一个10,000 x 300的矩阵,它将高效的提取矩阵中与”1”对应的那一行。下图是一个简单的例子。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9de68e5c46e9ea1ea480e295b0cc0b87_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&621& data-rawheight=&139& class=&origin_image zh-lightbox-thumb& width=&621& data-original=&https://pic2.zhimg.com/v2-9de68e5c46e9ea1ea480e295b0cc0b87_r.jpg&&&/figure&&p&&br&&/p&&p&也就是说隐藏层就是一个查询表,隐藏层的输出就是输入单词的”词向量“。&/p&&h2&&b&输出层&/b&&/h2&&p&单词“ants”的1 x 300的词向量输入给输出层。输出层是一个softmax回归分类器(softmax regression classifier)。关于softmax回归的教程可以点击&a href=&https://link.zhihu.com/?target=http%3A//unsupervised%2520feature%2520learning%2520and%2520deep%2520learning%2520tutorial/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&/a&,但是要点是每个输出神经元(每个神经元代表词汇表中的一个单词)将产出一个[0,1]之间的数字,所有这些输出值的和为1.&/p&&p&具体来说, 每一个输出神经元都有一个权重向量用于与隐藏层输出的词向量相乘。然后对结果求指数exp(x)。最后,为了使所有输出相加为1,每个输出除以全部10000个输出的和。&/p&&p&下图展示了输出神经元的输出为单词“car”的计算过程。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4bfcb484da7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1131& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&1131& data-original=&https://pic2.zhimg.com/v2-4bfcb484da7_r.jpg&&&/figure&&p&&br&&/p&&p&请注意,神经网络不知道输出词相对于输入词的偏差(offset)。它并没有为输入之前的单词与之后的单词学习不同的概率。为了理解这个含义,假设在我们的训练语料库中,每一个单词’York’的前面都有单词’New’。也就是说,至少根据训练数据,’New’在’York’附近的概率是100%。然而,如果我们把’York’附近的10个单词随机选取其中的一个,那么’New’的概率不是100%。你可能选择了附近的其他单词之一。&/p&&h2&&b&直观理解&/b&&/h2&&p&好了,你准备好开始对这个网络开展令人兴奋的洞察了吗?&/p&&p&如果两个不同的单词有非常相似的“上下文”(也就是说,在它们周围可能出现什么词),那么我们的模型将对这两个单词输出非常相似的结果。网络预测类似的上下文的一种方法是,使词向量相似。因此,如果两个词有相似的上下文,那么我们的网络就会主动学习这两个词相似的词向量!呀呼!&/p&&p&这两个词有相似的上下文意味着什么?我想你可以期望像“intelligent”和“smart”这样的同义词会有非常相似的上下文。或者像“engine”和“transmission”这样相关的词也可能有相似的上下文。&/p&&p&这也能处理分词的问题——对于“ant”和 “ants”网络很可能会学习相似的词向量,因为它们应该有相似的上下文。&/p&&h2&&b&后续工作&/b&&/h2&&p&你可能已经注意到,skip-gram神经网络包含大量的权重…例如300个特征值和10000词汇量,相当于隐藏层和输出层有300万个权重!所有在一个很大的数据集训练是非常难的,所以Word2vec作者介绍了一些技巧,使训练可行。本教程&a href=&https://link.zhihu.com/?target=http%3A//word2vec%2520tutorial%2520part%-%2520negative%2520sampling/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第2部分&/a&介绍了这些内容。&/p&&h2&&b&其他资源&/b&&/h2&&p&我还创建了一个&a href=&https://link.zhihu.com/?target=http%3A//word2vec%2520resources/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&博文&/a&有其他关于Word2vec的教程、论文、实现的链接。&/p&&p&&/p&
本文是译文,原文本教程将介绍Word2Vec的skip-gram神经网络模型。本教程的目的是忽略Word2Vec的一般介绍性和抽象概念,深入了解skip-gram的更多的细节。模型概述skip-gram神经网络模型其最基本的形式实际上惊人的简单; 我认为是所有的细节和技巧使其…
&figure&&img src=&https://pic1.zhimg.com/v2-0c0ace75bf5871abe6e45ea48da3e55b_b.jpg& data-rawwidth=&667& data-rawheight=&411& class=&origin_image zh-lightbox-thumb& width=&667& data-original=&https://pic1.zhimg.com/v2-0c0ace75bf5871abe6e45ea48da3e55b_r.jpg&&&/figure&&p&&b&前言&/b&:本文是对CMU CS 11-747(&a href=&https://link.zhihu.com/?target=http%3A//phontron.com/class/nn4nlp2017/schedule.html%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Networks for NLP&/a&)课程中Using/Evaluating Sentence Representations章节内容的一个梳理。本文第一部分将对前几次课程中提到的文本表示方法进行一个概括。第二部分介绍五种文本表示的应用,分别是句子分类、释义识别、语义相似度、文本蕴涵和信息检索。本文将分别介绍这五种应用的任务及评价指标、常见数据集及其产生的方法、以及使用的模型。第三部分将做一个简要总结并分享一些相关问答。&/p&&p&&br&&/p&&p&&b&本文作者&/b&:李思晴,2014级本科生,目前研究方向为深度学习、推荐系统,来自中国人民大学大数据管理与分析方法研究北京市重点实验室。&/p&&p&&br&&/p&&p&&b&一、文本表示方法的简要概括&/b&&/p&&p&本文大致介绍两类文本表示方法。一类是将一个句子表示为一个向量,例如向量空间模型(VSM),也称词袋模型(BOW)。定义一个与字典长度相同的向量,向量中每个位置对应字典中相应位置的单词,句子中出现的单词,就在向量的对应位置填入相应权值,这样就可以用一个向量来表示一个句子。另一类是将一个句子表示为多个向量的序列,例如利用word embedding,将句子中每个单词都转化为一个向量,这样,一个具有n个单词的句子就可以表示为n个向量的序列。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-5af21c3d96c9e18b0a2f776aa2d6ca6a_b.jpg& data-caption=&& data-rawwidth=&546& data-rawheight=&187& class=&origin_image zh-lightbox-thumb& width=&546& data-original=&https://pic1.zhimg.com/v2-5af21c3d96c9e18b0a2f776aa2d6ca6a_r.jpg&&&/figure&&p&&br&&/p&&p&&b&二、文本表示的应用与评价方法&/b&&/p&&p&&b&1、句子分类(Sentence Classification)&/b&&/p&&p&1.1 任务:根据主题或者情感语义等特性对句子进行分类。&/p&&p&&br&&/p&&p&1.2 模型:CNN在NLP中的一大应用就是句子分类。&/p&&p&传统的句子分类是使用SVM和Naive Bayes,它们选择的文本表示方法大多是词袋模型,会忽略词序信息。CNN用的是word-embedding来表示句子,可以保留词的序列特征。模型如下图所示:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-baf2fffd75eb_b.jpg& data-caption=&& data-rawwidth=&823& data-rawheight=&508& class=&origin_image zh-lightbox-thumb& width=&823& data-original=&https://pic4.zhimg.com/v2-baf2fffd75eb_r.jpg&&&/figure&&p&首先将句子中的单词向量化作为输入,然后用CNN抽取句子的特征,可以得到对应的一个分数,再通过softmax函数将分数映射成概率。本专栏上一篇文章《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&从CNN视角看在自然语言处理上的应用&/a&》中有对CNN更详细的介绍,在此就不过多赘述了。&/p&&p&&br&&/p&&p&1.3 数据集:Stanford Sentiment Treebank (Socher et al. 2013)&/p&&p&下图为一个例子:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ced28d54fdc7c_b.jpg& data-caption=&& data-rawwidth=&1096& data-rawheight=&548& class=&origin_image zh-lightbox-thumb& width=&1096& data-original=&https://pic2.zhimg.com/v2-ced28d54fdc7c_r.jpg&&&/figure&&p&此数据集特殊的地方在于,句子中的每个单词都标有一个情感值,介于1到25之间,1表示最负面,25表示最正面。可以用此数据集来进行句子的情感分类。&/p&&p&&br&&/p&&p&&b&2、释义识别(Paraphrase Identification)&/b&&/p&&p&2.1 任务:识别两个句子意思是否相同。&/p&&p&&br&&/p&&p&2.2 数据集:Microsoft Research Paraphrase Corpus (Dolan and Brockett 2005)&/p&&p&生成步骤:&/p&&p&(1)爬取大量新闻语料&/p&&p&(2)用启发式方法或分类器自动判别语句是否意思相同&/p&&p&(3)由评价者来判定两个句子是否真的相似&/p&&p&由于该数据集需要人工评测,所以数据量比较小但十分高质量。&/p&&p&&br&&/p&&p&2.3 模型:将两个句子的向量表示输入分类器,输出意思是否相同。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-0feb481b8bca219a884ed9a18013cad8_b.jpg& data-caption=&& data-rawwidth=&755& data-rawheight=&169& class=&origin_image zh-lightbox-thumb& width=&755& data-original=&https://pic1.zhimg.com/v2-0feb481b8bca219a884ed9a18013cad8_r.jpg&&&/figure&&p&这里介绍一个可以用来做释义识别的句子表示模型:Skip-thought Vectors(Kiros et al. 2015) NIPS&/p&&p&这个模型训练时的输入是文档中的第i个句子,输出是第i-1个句子和第i+1个句子,例如下图:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a6f41d09cb3a7f39f3bca780_b.jpg& data-caption=&& data-rawwidth=&960& data-rawheight=&164& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&https://pic2.zhimg.com/v2-a6f41d09cb3a7f39f3bca780_r.jpg&&&/figure&&p&这三句话的顺序是,I got back home. I could see the cat on the steps. This was strange.从训练的文本中取出类似这样的连续的三个句子,将中间的句子作为输入,前一个和后一个句子作为正确的输出来训练模型。模型使用的是encoder-decoder框架,并且用了RNN中的GRU来作为encoder和decoder。&/p&&p&Encoder的输入是第i个句子中单词的向量序列 &img src=&https://www.zhihu.com/equation?tex=w_%7Bi%7D%5E%7B1%7D%2C...%2Cw_%7Bi%7D%5E%7BN%7D& alt=&w_{i}^{1},...,w_{i}^{N}& eeimg=&1&& ,GRU的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bcf73f7c9ed4db9a849e8884ecee7321_b.jpg& data-caption=&& data-rawwidth=&421& data-rawheight=&172& class=&origin_image zh-lightbox-thumb& width=&421& data-original=&https://pic2.zhimg.com/v2-bcf73f7c9ed4db9a849e8884ecee7321_r.jpg&&&/figure&&p&最后时刻输出的隐藏层 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%7D& alt=&h_{i}& eeimg=&1&& 将作为encoder的输出,也是第i个句子的单一向量表示,同时将其作为decoder的输入,decoder的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d543bafdf153e1d11fca0b528b53d6e9_b.jpg& data-caption=&& data-rawwidth=&587& data-rawheight=&169& class=&origin_image zh-lightbox-thumb& width=&587& data-original=&https://pic2.zhimg.com/v2-d543bafdf153e1d11fca0b528b53d6e9_r.jpg&&&/figure&&p&与encoder的公式类似,不同的是多了 &img src=&https://www.zhihu.com/equation?tex=C_%7Br%7D& alt=&C_{r}& eeimg=&1&& , &img src=&https://www.zhihu.com/equation?tex=C_%7Bz%7D& alt=&C_{z}& eeimg=&1&& 和 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& ,分别用来分离出 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%7D& alt=&h_{i}& eeimg=&1&& 中重置门、遗忘门、候选隐藏层的部分。每一时刻t的隐藏层 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%2B1%7D%5E%7Bt%7D& alt=&h_{i+1}^{t}& eeimg=&1&& 将作为decoder的输出。第i+1个句子的概率模型由以下公式给出:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e2dfc8be_b.jpg& data-caption=&& data-rawwidth=&426& data-rawheight=&71& class=&origin_image zh-lightbox-thumb& width=&426& data-original=&https://pic1.zhimg.com/v2-e2dfc8be_r.jpg&&&/figure&&p&其中 &img src=&https://www.zhihu.com/equation?tex=v_%7Bw_%7Bi%2B1%7D%5E%7Bt%7D%7D& alt=&v_{w_{i+1}^{t}}& eeimg=&1&& 是单词矩阵V中 &img src=&https://www.zhihu.com/equation?tex=w_%7Bi%2B1%7D%5E%7Bt%7D& alt=&w_{i+1}^{t}& eeimg=&1&& 所对应的行,由这条公式即可生成第i+1个句子。生成第i-1个句子的方法同理。&/p&&p&目标函数是第i+1个句子和第i-1个句子概率模型的对数似然的和:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-bd9aa08b4d2a11a206e4e1c_b.jpg& data-caption=&& data-rawwidth=&598& data-rawheight=&82& class=&origin_image zh-lightbox-thumb& width=&598& data-original=&https://pic1.zhimg.com/v2-bd9aa08b4d2a11a206e4e1c_r.jpg&&&/figure&&p&&br&&/p&&p&&b&3、语义相似度(Semantic Similarity)&/b&&/p&&p&3.1 任务:衡量两个句子的语义相似/相关程度。&/p&&p&&br&&/p&&p&3.2 数据集:SICK Dataset (Marelli et al. 2014)&/p&&p&生成句子的过程:&/p&&p&(1)收集短的视频描述句子&/p&&p&(2)将句子进行主动态与被动态的转化、同义词替换等变化方式,生成新的句子&/p&&p&(3)将句子加入否定词或者进行反义词替换,生成反义句子&/p&&p&(4)打乱单词顺序生成新句子&/p&&p&最后人工测量这些句子的语义相关性,并用1-5进行打分。&/p&&p&&br&&/p&&p&3.3 评价过程:将两个句子输入模型计算相关度,并测量其与人工评测分数的相关性(例如Pearson相关系数)。&/p&&p&&br&&/p&&p&3.4 模型:ManhattanLSTM Model (Mueller and Thyagarajan 2016)&/p&&p&该模型将两个句子a和b的单词向量序列分别输入两个LSTM模型,输出分别是他们最后时刻的隐藏状态 &img src=&https://www.zhihu.com/equation?tex=h_%7Bn%7D%5E%7Ba%7D& alt=&h_{n}^{a}& eeimg=&1&& 和 &img src=&https://www.zhihu.com/equation?tex=h_%7Bm%7D%5E%7Bb%7D& alt=&h_{m}^{b}& eeimg=&1&& ,n和m分别是两个句子的长度,作差后取e^-L1作为相似度指标,如下图所示:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-05bd26fd03b2_b.jpg& data-caption=&& data-rawwidth=&534& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&534& data-original=&https://pic1.zhimg.com/v2-05bd26fd03b2_r.jpg&&&/figure&&p&由于向量的L1范数是大于等于零的,所以该模型的相似度指标范围是0到1&/p&&figure&&img src=&https://pic3.zhimg.com/v2-590f7a6a886c272a61c9de_b.jpg& data-caption=&& data-rawwidth=&481& data-rawheight=&63& class=&origin_image zh-lightbox-thumb& width=&481& data-original=&https://pic3.zhimg.com/v2-590f7a6a886c272a61c9de_r.jpg&&&/figure&&p&&b&4、文本蕴涵(Textual Entailment)&/b&&/p&&p&4.1 任务:文本蕴涵指的是两个文本之间有指向关系,关系分为以下三种:&/p&&p&Entailment:文本A为真,能推出文本B也为真&/p&&p&Contradiction:文本A为真,能推出文本B为假&/p&&p&Neutral:文本A为真不能推出文本B的真假&/p&&p&&br&&/p&&p&4.2 数据集:Stanford Natural Language Inference Dataset (Bowman et al. 2015)&/p&&p&生成数据步骤:&/p&&p&
(1)取Flickr的标题作为初始数据&/p&&p&
(2)对每个标题都分别创建它的entailed, neutral, contradicted标题&/p&&p&
(3)人工对两两标题进行关系的评判&/p&&p&&br&&/p&&p&&b&5、信息检索(Retrieval)&/b&&/p&&p&5.1 任务:给定一个输入句子,从大量数据中找出与之匹配的信息。&/p&&p&主要思想是,先将目标数据库中的文本编码成向量,然后将query也编码成向量,寻找数据库中与query距离最近的向量。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-bb84a80b39515bcca9ed_b.jpg& data-caption=&& data-rawwidth=&541& data-rawheight=&281& class=&origin_image zh-lightbox-thumb& width=&541& data-original=&https://pic4.zhimg.com/v2-bb84a80b39515bcca9ed_r.jpg&&&/figure&&p&信息检索经常遇到的一个问题是数据库中数据量太大,导致训练太慢,所以可以只选取数据库中很小的一部分作为负样来进行负采样。&/p&&p&损失函数:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4b9b4cd07a0b4f373ad00_b.jpg& data-caption=&& data-rawwidth=&1123& data-rawheight=&180& class=&origin_image zh-lightbox-thumb& width=&1123& data-original=&https://pic2.zhimg.com/v2-4b9b4cd07a0b4f373ad00_r.jpg&&&/figure&&p&其中 &img src=&https://www.zhihu.com/equation?tex=x%5E%7B%2A%7D& alt=&x^{*}& eeimg=&1&& 是正例的输入, &img src=&https://www.zhihu.com/equation?tex=y%5E%7B%2A%7D& alt=&y^{*}& eeimg=&1&& 是正例的输出,S是负例样本。 &img src=&https://www.zhihu.com/equation?tex=s%28x%2Cy%5E%7B%2A%7D%29& alt=&s(x,y^{*})& eeimg=&1&& 是负例所得的分数, &img src=&https://www.zhihu.com/equation?tex=s%28x%5E%7B%2A%7D%2Cy%5E%7B%2A%7D%29& alt=&s(x^{*},y^{*})& eeimg=&1&& 是正例所得的分数,意思是若正例的分数比负例大于1则损失函数为0,否则会产生损失。&/p&&p&&br&&/p&&p&5.2 评价指标:&/p&&p&常用的评价指标有召回率和精确率。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-7363aec5cfbccea2402bd10_b.jpg& data-caption=&& data-rawwidth=&463& data-rawheight=&180& class=&origin_image zh-lightbox-thumb& width=&463& data-original=&https://pic1.zhimg.com/v2-7363aec5cfbccea2402bd10_r.jpg&&&/figure&&p&召回率(Recall): &img src=&https://www.zhihu.com/equation?tex=R%3D%5Cfrac%7BTP%7D%7BTP%2BFN%7D& alt=&R=\frac{TP}{TP+FN}& eeimg=&1&&&/p&&p&精确率(Precision): &img src=&https://www.zhihu.com/equation?tex=R%3D%5Cfrac%7BTP%7D%7BTP%2BFP%7D& alt=&R=\frac{TP}{TP+FP}& eeimg=&1&&&/p&&p&由此衍生的评价指标还有:&/p&&p&recall@X:检索的前X个结果中是否有正确答案&/p&&p&MAP(mean average precision):所有queries的平均精确率&/p&&p&&br&&/p&&p&&b&三、总结与Q&A&/b&&/p&&p&本文首先简要介绍了文本表示的两类方法,一类是将一个句子表示为一个向量,另一类是将一个句子表示为多个向量的序列。然后介绍了五个文本表示的应用,分别是句子分类、释义识别、语义相似度、文本蕴涵和信息检索。&/p&&p&&br&&/p&&p&下面与大家分享几个相关问答。&/p&&p&&br&&/p&&p&1、与传统句子分类方法相比,CNN的优势是什么?&/p&&p&答:传统的句子分类是使用SVM和Naive Bayes,它们选择的文本表示方法大多是词袋模型,会忽略词序信息。CNN用的是word-embedding来表示句子,可以保留词的序列特征。&/p&&p&&br&&/p&&p&2、本文介绍的用于Paraphrase Identification的模型skip-thought vectors的框架是什么?&/p&&p&答:框架是encoder-decoder模型,其中encoder和decoder都用RNN中的GRU来实现。&/p&&p&&br&&/p&&p&3、skip-thought vectors中encoder和decoder的输入输出分别是什么?&/p&&p&答:encoder的输入是第i个句子中单词的向量序列 &img src=&https://www.zhihu.com/equation?tex=w_%7Bi%7D%5E%7B1%7D%2C...%2Cw_%7Bi%7D%5E%7BN%7D& alt=&w_{i}^{1},...,w_{i}^{N}& eeimg=&1&& ,输出是最后时刻的隐藏状态 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%7D& alt=&h_{i}& eeimg=&1&& 。decoder的输入是encoder的输出 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%7D& alt=&h_{i}& eeimg=&1&& ,输出是每一时刻t的隐藏状态 &img src=&https://www.zhihu.com/equation?tex=h_%7Bi%2B1%7D%5E%7Bt%7D& alt=&h_{i+1}^{t}& eeimg=&1&& ,用来生成句子的概率模型。&/p&&p&&br&&/p&&p&4、Manhattan LSTM Model的相似函数是什么?&/p&&p&答:e^-L1,即&/p&&figure&&img src=&https://pic1.zhimg.com/v2-241b02ce027a65e5cd73e77da5f1bba8_b.jpg& data-caption=&& data-rawwidth=&303& data-rawheight=&52& class=&content_image& width=&303&&&/figure&&p&&br&&/p&&p&5、本文介绍的检索评价指标有哪些?&/p&&p&答:召回率(Recall): &img src=&https://www.zhihu.com/equation?tex=R%3D%5Cfrac%7BTP%7D%7BTP%2BFN%7D& alt=&R=\frac{TP}{TP+FN}& eeimg=&1&&&/p&&p&精确率(Precision): &img src=&https://www.zhihu.com/equation?tex=R%3D%5Cfrac%7BTP%7D%7BTP%2BFP%7D& alt=&R=\frac{TP}{TP+FP}& eeimg=&1&&&/p&&p&recall@X和MAP(mean average precision)&/p&&p&&br&&/p&&p&&b&四、参考文献&/b&&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//phontron.com/class/nn4nlp2017/schedule.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Networks for NLP&/a&&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//papers.nips.cc/paper/5950-skip-thought-vectors.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&papers.nips.cc/paper/59&/span&&span class=&invisible&&50-skip-thought-vectors.pdf&/span&&span class=&ellipsis&&&/span&&/a& (Skip-thought Vectors)&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//nlp.stanford.edu/sentiment/treebank.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&nlp.stanford.edu/sentim&/span&&span class=&invisible&&ent/treebank.html&/span&&span class=&ellipsis&&&/span&&/a& (Sentiment Treebank)&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/download/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&aaai.org/ocs/index.php/&/span&&span class=&invisible&&AAAI/AAAI16/paper/download/&/span&&span class=&ellipsis&&&/span&&/a& (Manhattan LSTM)&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//nlp.stanford.edu/pubs/snli_paper.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&nlp.stanford.edu/pubs/s&/span&&span class=&invisible&&nli_paper.pdf&/span&&span class=&ellipsis&&&/span&&/a& (Stanford Natural Language Inference Corpus)&/p&&p&&/p&
前言:本文是对CMU CS 11-747()课程中Using/Evaluating Sentence Representations章节内容的一个梳理。本文第一部分将对前几次课程中提到的文本表示方法进行一个概括。第二部分介绍五种文本表示的应用,分别是句子分类、释义识别…
&figure&&img src=&https://pic2.zhimg.com/v2-5bea0f8a3c15b5b1d64109b9bfe681a1_b.jpg& data-rawwidth=&694& data-rawheight=&534& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&https://pic2.zhimg.com/v2-5bea0f8a3c15b5b1d64109b9bfe681a1_r.jpg&&&/figure&&p&更新:&/p&&p&有读者对模型生成的'诗'有疑问,笔者在这里解释下。&/p&&p&这一期的文章着重在生成自然语言的实现,较少花精力去优化结果的优劣,但并不是结果仅仅只能到这个程度。&/p&&ol&&li&韵律问题,有兴趣的朋友可以看看本期使用的&a href=&https://link.zhihu.com/?target=https%3A//github.com/ne7ermore/torch_light/blob/master/ch-poetry-nlg/data/poetry& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&训练数据&/a&,并没有精心筛选,所以造成了毫无韵律可言,笔者在这里抱歉&/li&&li&同样的,'诗'初级这个问题也可以使用(1)中得到优化;如果更进一步,可以使用词向量预训练、优化超参数,生成首字使用合理的字&i&&b&Set&/b&&/i&替换掉随机选取等等方式&/li&&li&其中一位朋友&a href=&https://www.zhihu.com/people/BYJR-K& class=&internal&&马孟凯&/a&提到了约束条件不够,确实如此。&a href=&https://link.zhihu.com/?target=https%3A//github.com/ne7ermore/torch_light/blob/master/ch-poetry-nlg/generate.py%23L24& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&诗生成&/a&仅仅使用贪心选取概率最大的字,而&a href=&https://link.zhihu.com/?target=https%3A//github.com/ne7ermore/torch_light/blob/master/ch-poetry-nlg/model.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&模型&/a&中也没有使用&b&&i&checklist&/i&&/b&之类的方式记录已经使用的高频字或者attention来缓解NLG总是生成相同字的问题。&/li&&/ol&&p&&a href=&https://link.zhihu.com/?target=https%3A//homes.cs.washington.edu/%7Eyejin/Papers/emnlp16_neuralchecklist.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Globally Coherent Text Generation with Neural Checklist Models&/a&&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.aclweb.org/anthology/P16-1008& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Modeling Coverage for Neural Machine Translation&/a&&/p&&p&上面两篇文章有优化方法,可以以此参考&/p&&hr&&p&本期讲Natural Language Generation(NLG)实现生成中国唐诗&/p&&hr&&h2&&b&原理&/b&&/h2&&p&一首诗是由多个字组成,假如最简单的五言绝句,就是由20个字组成,可以表示为唐诗&b&&i&S&/i&&/b&由20个&b&&i&W&/i&&/b&组成:S=(w_1,w_2,...,w_20),而w_1到w_20不是随机出现,可以使用链式法则得:p(S)=p(w_1,w_2,...,w_20)=p(w_1)?p(w_2|w_1)?p(w_3|w_2,w_1)???p(w_20|w_19,w_18,...,w_1),其中w_t的概率是由w_t-1...w_1决定。&/p&&p&举个具体例子:中国首都是 __ ,如果是一个自然人很容易能填入“北京”,由此可见人能通过一句话中已出现的信息推断出下一个字或者词,换句话说,人推断一个词或者字是根据句子已有的序列信息。而我们正好可以使用Recurrent neural network(RNN)能保留样本的时间序列信息这一特点实现自动生成唐诗。&/p&&h2&&b&代码实现&/b&&/h2&&p&&i&&b&全部代码链接在文章最后面&/b&&/i&&/p&&p&model实现&/p&&p&本期模型中 embedding和linear层都使用-0.1~0.1的平均分布,lstm层的hidden使用0初始化并跟随模型一起训练。&/p&&p&第44行加入dropout,如果看过pytorch源码的朋友应该知道,lstm最后一层没有做dropout处理,所以在lstm只定义了一层的模型中要留意。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-45ac57db4aa4c76fe9a150a0d57d5ef6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1408& data-rawheight=&1508& class=&origin_image zh-lightbox-thumb& width=&1408& data-original=&https://pic1.zhimg.com/v2-45ac57db4aa4c76fe9a150a0d57d5ef6_r.jpg&&&/figure&&p&数据提取&/p&&p&训练数据和label都来自同一批数据,不过需要错开, &img src=&https://www.zhihu.com/equation?tex=%5Ctilde%7Bw_t%7D+%3D+%5Cvartheta%5Cleft%28+w_%5Cleft%28+t-1+%5Cright%29+%5Cright%29& alt=&\tilde{w_t} = \vartheta\left( w_\left( t-1 \right) \right)& eeimg=&1&& ,行20和21&/p&&figure&&img src=&https://pic3.zhimg.com/v2-a639adfabccdc21b35a42c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&804& data-rawheight=&204& class=&origin_image zh-lightbox-thumb& width=&804& data-original=&https://pic3.zhimg.com/v2-a639adfabccdc21b35a42c_r.jpg&&&/figure&&p&训练数据&/p&&p&hidden参数在每一个epoch之前初始化一次,训练中持续更新权重&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d2d5d0dbabe7c2f326f0c6f08b961409_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1204& data-rawheight=&592& class=&origin_image zh-lightbox-thumb& width=&1204& data-original=&https://pic4.zhimg.com/v2-d2d5d0dbabe7c2f326f0c6f08b961409_r.jpg&&&/figure&&p&解码&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6f106e030a51c8f8af4adf8da3403586_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1046& data-rawheight=&1038& class=&origin_image zh-lightbox-thumb& width=&1046& data-original=&https://pic4.zhimg.com/v2-6f106e030a51c8f8af4adf8da3403586_r.jpg&&&/figure&&h2&&b&结果&/b&&/h2&&p&本期封面,也可以点&a href=&https://link.zhihu.com/?target=https%3A//github.com/ne7ermore/torch_light/blob/master/ch-poetry-nlg/README.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&查看结果&/a&&/p&&h2&&b&全部代码&/b&&/h2&&p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ne7ermore/torch_light/tree/master/ch-poetry-nlg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&查看github全部代码&/a&&/p&
更新:有读者对模型生成的'诗'有疑问,笔者在这里解释下。这一期的文章着重在生成自然语言的实现,较少花精力去优化结果的优劣,但并不是结果仅仅只能到这个程度。韵律问题,有兴趣的朋友可以看看本期使用的,并没有精心筛选,所以造成了…
&p&完整代码见我的&/p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/wangle1218/nlp-demo/blob/master/text-summarization/summary.py& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub&/a&&p&互联网时代信息爆炸式增长,人们面对越来越多的信息无法一一阅读,而文本自动摘要技术可以一定程度上缓解这个问题。摘要就是一篇文章的核心部分信息,文本自动摘要技术分抽取式摘要和生成式摘要,前者是在原文中挑选一定比例的句子拼凑成一个摘要,后者更接近人为的总结式简写一篇文章。目前越来越多的研究者使用深度神经网络来研究生成式摘要技术,但是难度也挺大,效果有限。&/p&&p&本文的方法是使用基于启发式规则的算法实现了一个抽取式摘要算法,大体思路参考了这篇&a href=&https://link.zhihu.com/?target=https%3A//www.researchgate.net/publication/_Weibo-Oriented_Chinese_News_Summarization_via_Multi-feature_Combination& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&论文&/a&,但是也做了一些改进和修改。&/p&&p&我们知道一篇文章如果要用里面几个句子来代表,那么肯定选择那些拥有更多个与文章信息相关的关键词的那些句子;另外根据从小语文课上讲的中心句概念,文章首位和每个段落首位的句子基本也是中心句;更进一步,我们通过分析,如果文章中某个句子和文章中大部分句子表达的意思都相近,那么这个句子也能很好的作为摘要句子。因此本文使用关键词信息量、句子位置、句子相似度三个参数来构建一个句子权重的函数,计算所有句子的权重之后按照降序排序,去前面固定比例的句子,然后依据它们在原文中的先后顺序再次进行排序输出,这样就得到我们要的摘要了。&/p&&h2&1、文本切分和文本表示&/h2&&p&为了抽取一些重要句子,首先我们需要将所有句子划分开来;另外使用计算机来做计算就得把句子用向量表示出来,这里选用tfidf权重矩阵来表示一篇文章,tfidf矩阵每一行就是文章中的一个句子,tfidf的概念和实现参考我之前的一篇&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&文章&/a&。本文使用机器学习库sklearn里的函数来实现tfidf矩阵。&/p&&p&&b&切分句子函数:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&split_sentence&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&,&/span& &span class=&n&&punctuation_list&/span&&span class=&o&&=&/span&&span class=&s1&&'!?。!?'&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
将文本段安装标点符号列表里的符号切分成句子,将所有句子保存在列表里。&/span&
&span class=&sd&&
&&&&/span&
&span class=&n&&sentence_set&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&n&&inx_position&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&c1&&#索引标点符号的位置&/span&
&span class=&n&&char_position&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&c1&&#移动字符指针位置&/span&
&span class=&k&&for&/span& &span class=&n&&char&/span& &span class=&ow&&in&/span& &span class=&n&&text&/span&&span class=&p&&:&/span&
&span class=&n&&char_position&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&k&&if&/span& &span class=&n&&char&/span& &span class=&ow&&in&/span& &span class=&n&&punctuation_list&/span&&span class=&p&&:&/span&
&span class=&n&&next_char&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&[&/span&&span class=&n&&inx_position&/span&&span class=&p&&:&/span&&span class=&n&&char_position&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&])&/span&&span class=&o&&.&/span&&span class=&n&&pop&/span&&span class=&p&&()&/span&
&span class=&k&&if&/span& &span class=&n&&next_char&/span& &span class=&ow&&not&/span& &span class=&ow&&in&/span& &span class=&n&&punctuation_list&/span&&span class=&p&&:&/span&
&span class=&n&&sentence_set&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&[&/span&&span class=&n&&inx_position&/span&&span class=&p&&:&/span&&span class=&n&&char_position&/span&&span class=&p&&])&/span&
&span class=&n&&inx_position&/span& &span class=&o&&=&/span& &span class=&n&&char_position&/span&
&span class=&k&&if&/span& &span class=&n&&inx_position&/span& &span class=&o&&&&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&):&/span&
&span class=&n&&sentence_set&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&[&/span&&span class=&n&&inx_position&/span&&span class=&p&&:])&/span&
&span class=&n&&sentence_with_index&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&n&&i&/span&&span class=&p&&:&/span&&span class=&n&&sent&/span& &span class=&k&&for&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&sent&/span& &span class=&ow&&in&/span& &span class=&nb&&enumerate&/span&&span class=&p&&(&/span&&span class=&n&&sentence_set&/span&&span class=&p&&)}&/span&
&span class=&k&&return&/span& &span class=&n&&sentence_set&/span&&span class=&p&&,&/span&&span class=&n&&sentence_with_index&/span&
&/code&&/pre&&/div&&p&使用“。”,“?” 和“!”来做切分句子的标点符号。&/p&&p&&b&构建TFIDF矩阵函数:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&get_tfidf_matrix&/span&&span class=&p&&(&/span&&span class=&n&&sentence_set&/span&&span class=&p&&,&/span&&span class=&n&&stop_word&/span&&span class=&p&&):&/span&
&span class=&n&&corpus&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&sent&/span& &span class=&ow&&in&/span& &span class=&n&&sentence_set&/span&&span class=&p&&:&/span&
&span class=&n&&sent_cut&/span& &span class=&o&&=&/span& &span class=&n&&jieba&/span&&span class=&o&&.&/span&&span class=&n&&cut&/span&&span class=&p&&(&/span&&span class=&n&&sent&/span&&span class=&p&&)&/span&
&span class=&n&&sent_list&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&n&&word&/span& &span class=&k&&for&/span& &span class=&n&&word&/span& &span class=&ow&&in&/span& &span class=&n&&sent_cut&/span& &span class=&k&&if&/span& &span class=&n&&word&/span& &span class=&ow&&not&/span& &span class=&ow&&in&/span& &span class=&n&&stop_word&/span&&span class=&p&&]&/span&
&span class=&n&&sent_str&/span& &span class=&o&&=&/span& &span class=&s1&&' '&/span&&span class=&o&&.&/span&&span class=&n&&join&/span&&span class=&p&&(&/span&&span class=&n&&sent_list&/span&&span class=&p&&)&/span&
&span class=&n&&corpus&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&sent_str&/span&&span class=&p&&)&/span&
&span class=&n&&vectorizer&/span&&span class=&o&&=&/span&&span class=&n&&CountVectorizer&/span&&span class=&p&&()&/span&
&span class=&n&&transformer&/span&&span class=&o&&=&/span&&span class=&n&&TfidfTransformer&/span&&span class=&p&&()&/span&
&span class=&n&&tfidf&/span&&span class=&o&&=&/span&&span class=&n&&transformer&/span&&span class=&o&&.&/span&&span class=&n&&fit_transform&/span&&span class=&p&&(&/span&&span class=&n&&vectorizer&/span&&span class=&o&&.&/span&&span class=&n&&fit_transform&/span&&span class=&p&&(&/span&&span class=&n&&corpus&/span&&span class=&p&&))&/span&
&span class=&c1&&# word=vectorizer.get_feature_names()&/span&
&span class=&n&&tfidf_matrix&/span&&span class=&o&&=&/span&&span class=&n&&tfidf&/span&&span class=&o&&.&/span&&span class=&n&&toarray&/span&&span class=&p&&()&/span&
&span class=&k&&return&/span& &span class=&n&&tfidf_matrix&/span&
&/code&&/pre&&/div&&h2&2、计算句子权重&/h2&&p&有三个权重指数需要计算,分别是关键词信息量、句子位置和句子相似度信息量;下面分别使用三个函数实现&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&get_sentence_with_words_weight&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&):&/span&
&span class=&n&&sentence_with_words_weight&/span& &span class=&o&&=&/span& &span class=&p&&{}&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&)):&/span&
&span class=&n&&sentence_with_words_weight&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&])&/span&
&span class=&n&&max_weight&/span& &span class=&o&&=&/span& &span class=&nb&&max&/span&&span class=&p&&(&/span&&span class=&n&&sentence_with_words_weight&/span&&span class=&o&&.&/span&&span class=&n&&values&/span&&span class=&p&&())&/span& &span class=&c1&&#归一化&/span&
&span class=&n&&min_weight&/span& &span class=&o&&=&/span& &span class=&nb&&min&/span&&span class=&p&&(&/span&&span class=&n&&sentence_with_words_weight&/span&&span class=&o&&.&/span&&span class=&n&&values&/span&&span class=&p&&())&/span&
&span class=&k&&for&/span& &span class=&n&&key&/span& &span class=&ow&&in&/span& &span class=&n&&sentence_with_words_weight&/span&&span class=&o&&.&/span&&span class=&n&&keys&/span&&span class=&p&&():&/span&
&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&sentence_with_words_weight&/span&&span class=&p&&[&/span&&span class=&n&&key&/span&&span class=&p&&]&/span&
&span class=&n&&sentence_with_words_weight&/span&&span class=&p&&[&/span&&span class=&n&&key&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&o&&-&/span&&span class=&n&&min_weight&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&max_weight&/span&&span class=&o&&-&/span&&span class=&n&&min_weight&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&sentence_with_words_weight&/span&
&/code&&/pre&&/div&&p&&b&计算位置权重:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&get_sentence_with_position_weight&/span&&span class=&p&&(&/span&&span class=&n&&sentence_set&/span&&span class=&p&&):&/span&
&span class=&n&&sentence_with_position_weight&/span& &span class=&o&&=&/span& &span class=&p&&{}&/span&
&span class=&n&&total_sent&/span& &span class=&o&&=&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&sentence_set&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&total_sent&/span&&span class=&p&&):&/span&
&span class=&n&&sentence_with_position_weight&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&total_sent&/span& &span class=&o&&-&/span& &span class=&n&&i&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&n&&total_sent&/span&
&span class=&k&&return&/span& &span class=&n&&sentence_with_position_weight&/span&
&/code&&/pre&&/div&&p&&b&计算相似度权重:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&similarity&/span&&span class=&p&&(&/span&&span class=&n&&sent1&/span&&span class=&p&&,&/span&&span class=&n&&sent2&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
计算余弦相似度&/span&
&span class=&sd&&
&&&&/span&
&span class=&k&&return&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&sent1&/span& &span class=&o&&*&/span& &span class=&n&&sent2&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&n&&e&/span&&span class=&o&&-&/span&&span class=&mi&&6&/span&&span class=&o&&+&/span&&span class=&p&&(&/span&&span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sqrt&/span&&span class=&p&&(&/span&&span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&sent1&/span& &span class=&o&&*&/span& &span class=&n&&sent1&/span&&span class=&p&&))&/span& &span class=&o&&*&/span&\
&span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sqrt&/span&&span class=&p&&(&/span&&span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&sent2&/span& &span class=&o&&*&/span& &span class=&n&&sent2&/span&&span class=&p&&))))&/span&
&span class=&k&&def&/span& &span class=&nf&&get_similarity_weight&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&):&/span&
&span class=&n&&sentence_score&/span& &span class=&o&&=&/span& &span class=&n&&collections&/span&&span class=&o&&.&/span&&span class=&n&&defaultdict&/span&&span class=&p&&(&/span&&span class=&k&&lambda&/span& &span class=&p&&:&/span&&span class=&mf&&0.&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&)):&/span&
&span class=&n&&score_i&/span& &span class=&o&&=&/span& &span class=&mf&&0.&/span&
&span class=&k&&for&/span& &span class=&n&&j&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&)):&/span&
&span class=&n&&score_i&/span& &span class=&o&&+=&/span& &span class=&n&&similarity&/span&&span class=&p&&(&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&],&/span&&span class=&n&&tfidf_matrix&/span&&span class=&p&&[&/span&&span class=&n&&j&/span&&span class=&p&&])&/span&
&span class=&n&&sentence_score&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&score_i&/span&
&span class=&n&&max_score&/span& &span class=&o&&=&/span& &span class=&nb&&max&/span&&span class=&p&&(&/span&&span class=&n&&sentence_score&/span&&span class=&o&&.&/span&&span class=&n&&values&/span&&span class=&p&&())&/span& &span class=&c1&&#归一化&/span&
&span class=&n&&min_score&/span& &span class=&o&&=&/span& &span class=&nb&&min&/span&&span class=&p&&(&/span&&span class=&n&&sentence_score&/span&&span class=&o&&.&/span&&span class=&n&&values&/span&&span class=&p&&())&/span&
&span class=&k&&for&/span& &span class=&n&&key&/span& &span class=&ow&&in&/span& &span class=&n&&sentence_score&/span&&span class=&o&&.&/span&&span class=&n&&keys&/span&&span class=&p&&():&/span&
&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&sentence_score&/span&&span class=&p&&[&/span&&span class=&n&&key&/span&&span class=&p&&]&/span&
&span class=&n&&sentence_score&/span&&span class=&p&&[&/span&&span class=&n&&key&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&o&&-&/span&&span class=&n&&min_score&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&max_score&/span&&span class=&o&&-&/span&&span class=&n&&min_score&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&sentence_score&/span&
&/code&&/pre&&/div&&p&句子之间的相似度使用余弦相似度计算,这里的句子相似度得分sentence_score以该句子和所有句子的相似度的累加和作为权重,最后将所有权重归一化。&/p&&h2&3、抽取句子权重最高的句子作为摘要&/h2&&p&首先将三个权重指数按照一定的系数相加,对所有句子按照权重值进行降序排序:&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&ranking_base_on_weigth&/span&&span class=&p&&(&/span&&span class=&n&&sentence_with_words_weight&/span&&span class=&p&&,&/span&
&span class=&n&&sentence_with_position_weight&/span&&span class=&p&&,&/span&
&span class=&n&&sentence_score&/span&&span class=&p&&,&/span& &span class=&n&&feature_weight&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&]):&/span&
&span class=&n&&sentence_weight&/span& &span class=&o&&=&/span& &span class=&n&&collections&/span&&span class=&o&&.&/span&&span class=&n&&defaultdict&/span&&span class=&p&&(&/span&&span class=&k&&lambda&/span& &span class=&p&&:&/span&&span class=&mf&&0.&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&sent&/span& &span class=&ow&&in&/span& &span class=&n&&sentence_score&/span&&span class=&o&&.&/span&&span class=&n&&keys&/span&&span class=&p&&():&/span&
&span class=&n&&sentence_weight&/span&&span class=&p&&[&/span&&span class=&n&&sent&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&feature_weight&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&&span class=&o&&*&/span&&span class=&n&&sentence_with_words_weight&/span&&span class=&p&&[&/span&&span class=&n&&sent&/span&&span class=&p&&]&/span& &span class=&o&&+&/span&\
&span class=&n&&feature_weight&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&&span class=&o&&*&/span&&span class=&n&&sentence_with_position_weight&/span&&span class=&p&&[&/span&&span class=&n&&sent&/span&&span class=&p&&]&/span& &span class=&o&&+&/span&\
&span class=&n&&feature_weight&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&o&&*&/span&&span class=&n&&sentence_score&/span&&span class=&p&&[&/span&&span class=&n&&sent&/span&&span class=&p&&]&/span&
&span class=&n&&sort_sent_weight&/span& &span class=&o&&=&/span& &span class=&nb&&sorted&/span&&span class=&p&&(&/span&&span class=&n&&sentence_weight&/span&&span class=&o&&.&/span&&span class=&n&&items&/span&&span class=&p&&(),&/span&&span class=&n&&key&/span&&span class=&o&&=&/span&&span class=&k&&lambda&/span& &span class=&n&&d&/span&&span class=&p&&:&/span& &span class=&n&&d&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span& &span class=&n&&reverse&/span&&span class=&o&&=&/span&&span class=&kc&&True&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&sort_sent_weight&/span&
&/code&&/pre&&/div&&p&feature_weight是可调整的权重指数参数,我这里默认都是1,也就是将上述三个指标同等对待。如果有评测数据集,我们可以根据ROUGE得分的高低来调整这个feature_weight的取值。&/p&&p&最后将抽取的句子重新排列作为摘要输出:&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&get_summarization&/span&&span class=&p&&(&/span&&span class=&n&&sentence_with_index&/span&&span class=&p&&,&/span&&span class=&n&&sort_sent_weight&/span&&span class=&p&&,&/span&&span class=&n&&topK_ratio&/span& &span class=&o&&=&/span&&span class=&mf&&0.3&/span&&span class=&p&&):&/span&
&span class=&n&&topK&/span& &span class=&o&&=&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&sort_sent_weight&/span&&span class=&p&&)&/span&&span class=&o&&*&/span&&span class=&n&&topK_ratio&/span&&span class=&p&&)&/span&
&span class=&n&&summarization_sent&/span& &span class=&o&&=&/span& &span class=&nb&&sorted&/span&&span class=&p&&([&/span&&span class=&n&&sent&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&k&&for&/span& &span class=&n&&sent&/span& &span class=&ow&&in&/span& &span class=&n&&sort_sent_weight&/span&&span class=&p&&[:&/span&&span class=&n&&topK&/span&&span class=&p&&]])&/span&
&span class=&n&&summarization&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&summarization_sent&/span&&span class=&p&&:&/span&
&span class=&n&&summarization&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&sentence_with_index&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&])&/span&
&span class=&n&&summary&/span& &span class=&o&&=&/span& &span class=&s1&&''&/span&&span class=&o&&.&/span&&span class=&n&&join&/span&&span class=&p&&(&/span&&span class=&n&&summarization&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&summary&/span&
&/code&&/pre&&/div&&p&&b&我们试一下将下面这篇新闻做一个自动摘要:&/b&&/p&&blockquote&男子母亲和妻子同时坠河 先救妻子再救母亲&br&&br&  肥东小伙先救了老婆后救妈,“当时没想那么多”;妈妈不怪儿子反而心疼他&br&  妈妈和老婆一起掉河里,你先救谁?这是一个考验男人的经典问题。虽然民间流传着千奇百怪的答案,却没有人真正回答得了。但就在7月22日下午,肥东县店埠河边圩埂村28岁的小伙郭某,遇到了活生生的现实。他的母亲和妻子一同落入深六米的水中,两人随时都可能丧命!先救谁?问题来了!&br&  三口打鱼一齐跌落河中&br&  7月22日,大暑,天气炎热。&br&  当天下午6时许,太阳已不那么毒了,肥东县撮镇镇店埠河边圩埂村的郭某和妻子小青(小名),一起去村子边的店埠河下网捕鱼。“小青以前没有打过鱼,她想和我一起去看看,觉得新鲜。”郭某今年28岁,之前他一直和小青在浙江打工,郭某是水电工,小青是油漆工,两人在打工过程中相识,2008年在肥东结婚。&br&  郭某父母农闲时会到河中下网打鱼,家中有两条小渔船。郭某好些年没打过鱼了,父母在河里下的网他不知道在哪,郭某的母亲孙某就提出,陪小夫妻俩一起到河里看看。&br&  傍晚6时10分左右,三人来到河边,坐上一条小渔船,郭某向河中划去。郭某的母亲孙某在船的一角下网。“小青比较好奇,就走到船尾去看我妈下网,结果船就发生倾斜了。”危险就在此时发生,郭某回忆,小青在船尾站着不稳,惊吓地大喊起来,身体向河一侧倒去,而郭某的母亲孙某准备上前抱住小青,一旁撑竿的郭某也急了,想过来拉两人。小船顷刻失衡,三人同时落水。&br&  儿子先救老婆再救妈妈&br&  “店埠河中间水深六米,平时许多轮船都是从撮镇码头开往巢湖的。”圩埂村的村民告诉记者,他们平时都不给小孩子到店埠河游泳,“水深,河里以前就淹死过人。”&br&  而落水的三人中,只有郭某会游泳,其他两人都不识水性。“当时也没有多想,只觉得小青离我近一点,所以我就向她游过去,她一把抱住我的腿,我拉住她的头发,掰开她的手,幸亏船就在旁边,我当时就拖着她游到了船边,然后让她拉住船边的环子。她还是害怕得大喊大叫,我就大声对她说,你要镇定,否则我们大家都会死!她就不再喊叫了。”&br&  随后郭某转身去救妈妈。“她在水里呛着了,一会儿浮上来一会儿沉下去,我就扎个猛子过去了,当时妈妈已经开始下沉了,我从水里托起了她。”郭某说,当他游到妈妈跟前时,妈妈几乎已经没有了气力,身体也没有反应了。“当时吓死了,以为妈妈出事了,我一边拉着船,一边拖着妈妈,大概游了五六分钟,然后到了岸边。”&br&  此时,郭某的妻子小青从水里爬上了岸,而郭某则在一旁拍着妈妈的背,希望将水控出来。“拍了几下后,妈妈咳嗽了一声,吐了许多水出来。不过一会妈妈又晕过去了。”&br&  医生:再迟两分钟就危险了&br&  看到妈妈晕厥后,郭某急忙背着妈妈回到家中,也没来得及换衣服,坐着邻居的车就将妈妈送到了肥东县人民医院。郭某的妻子小青在家换了衣服后,当天晚上也赶到了医院照顾婆婆。&br&  昨天,记者在肥东县人民医院见到了郭某一家人,媳妇和儿子俩正坐在病床前。据介绍,孙某今年52岁,“她的血压一直比较高,而且之前做过胆囊切除手术,身体一直不大好,这样掉水里受到惊吓,当然就生病了。”郭某的父亲说。老郭告诉记者,平时孩子不在家时都是他打鱼,有时候孩子母亲会陪着他一起下网,“船只要坐稳了,哪会掉到河里。年轻人没有坐船经验,结果事情就发生了。”&br&  医生告诉记者,由于病人有高血压,落水后又受到惊吓,刚开始有点昏迷,到了医院后呕吐、头昏,“不过挂了水后,目前并没有大碍,也可以回家休养了。”&br&  不过,医生也告诉记者,溺水者大概只有不到十分钟的安全救援时间,若是过了这个宝贵的时间段,生命就非常危险了。“从病人的病情来看,应该是呛水过多受惊吓。若是再迟一两分钟,就非常危险了。”&br&  妈妈不生气,爸爸挺不满&br&  在医院里,老郭有些责备孩子:“打鱼有什么好看的,看热闹好险把命都搭上了!年轻人就图个新鲜,也不顾你妈妈安全。”&br&  在老郭问明了事情前后,对儿子先救媳妇的事也有些不满,“他妈都要没气了,他还拖着船,就怕媳妇危险,媳妇都拉住船的铁环了,还有什么危险?!这时候当然应该先救他妈,等他妈安全了再去将船拉上来。”不过,这话老郭并没有当着儿子儿媳的面说。在病房里,老郭守在老婆身边,始终板着脸,儿子、儿媳也不敢和他多说话。&br&  郭某的母亲孙某醒来后,却没有责怪儿子:“要不是儿子,我这老命就丢在河里了,现在挂了水,身体舒服多了。”孙某告诉记者,她的记忆只停留在儿子游过来救她的时候,“后来怎么上了岸,怎么到了医院,都不太记得了!”&br&  毕竟她们都在我身边&br&  昨天,在医院里,郭某忙前忙后,一会儿拿药,一会儿照顾母亲。一旁的小青对郭某说道:“要不你先回家换洗下,妈妈这边我来照顾。”在走廊里,记者和小郭对上了话。&br&  记者:为什么先救老婆,后救妈妈?&br&  郭某:当时没想那么多,只是看到老婆离我稍微近一点,我就游过去先救她了,当安顿好老婆后,发现妈妈在水中非常危险,又去救妈妈。&br&  记者:知道那个让男人头疼的题目吗,“妈妈和老婆一起掉河里,你先救谁?”你老婆可问过你?&br&  郭某:我老婆没有问过我这个问题。&br&  但我听过这个题目,以前没有谈恋爱的时候也曾想过,觉得肯定是先救妈妈。&br&  记者:为什么妈妈都昏迷了,你还拖着船,是否心里仍惦记着老婆的安全?&br&  郭某:拉着船也是因为我没有力气游上岸了,所以是借着船一起游上了岸,也可以救老婆。&br&  记者:你觉得你先救老婆,会不会受到父母的责怪,会不会让亲友觉得你不孝顺?&br&  郭某:救人的时候没想过,(沉默一会儿)现在……(沉默)觉得可能会是个问题。&br&  记者:请不要见怪,问一个让你更不舒服的问题,如果这事情再发生一次,你还会不会那样救援?&br&  郭某:其实昨晚我想了一下,后来觉得,无论如何,这样的救人安排都是最合理的。所以我还是会这样选择,毕竟她们现在都还在我身边。&br&  他是我儿子,我不怪他&br&  昨天,在病床前,记者也和郭某的母亲孙某聊了起来。&br&  记者:你知道你儿子先救媳妇、后救你的过程了吧?&br&  孙某:知道呀。&br&  记者:你会不会在心里怪儿子,没有先救你?&br&  孙某:不怪,他是我儿子呀,他到现在忙得都没有回家换衣服,湿透的衣服就这样焐干了,我挺心疼他的。你们也不要再追问他了,这样让他感到难过。&br&  记者:好像你丈夫有点不高兴,觉得儿子做得不对。&br&  孙某:他就那脾气,回头我来劝劝他。&/blockquote&&p&&b&输出结果如下&/b&,我只抽取了其中30%的句子作为摘要,这个比例可以根据具体情况做调整:&/p&&blockquote&男子母亲和妻子同时坠河 先救妻子再救母亲&br&&br&  肥东小伙先救了老婆后救妈,“当时没想那么多”;妈妈不怪儿子反而心疼他&br&  妈妈和老婆一起掉河里,你先救谁?但就在7月22日下午,肥东县店埠河边圩埂村28岁的小伙郭某,遇到了活生生的现实。他的母亲和妻子一同落入深六米的水中,两人随时都可能丧命!先救谁?&br&  当天下午6时许,太阳已不那么毒了,肥东县撮镇镇店埠河边圩埂村的郭某和妻子小青(小名),一起去村子边的店埠河下网捕鱼。”郭某今年28岁,之前他一直和小青在浙江打工,郭某是水电工,小青是油漆工,两人在打工过程中相识,2008年在肥东结婚。&br&  郭某父母农闲时会到河中下网打鱼,家中有两条小渔船。郭某好些年没打过鱼了,父母在河里下的网他不知道在哪,郭某的母亲孙某就提出,陪小夫妻俩一起到河里看看。&br&  傍晚6时10分左右,三人来到河边,坐上一条小渔船,郭某向河中划去。郭某的母亲孙某在船的一角下网。”危险就在此时发生,郭某回忆,小青在船尾站着不稳,惊吓地大喊起来,身体向河一侧倒去,而郭某的母亲孙某准备上前抱住小青,一旁撑竿的郭某也急了,想过来拉两人。&br&  儿子先救老婆再救妈妈&br&  “店埠河中间水深六米,平时许多轮船都是从撮镇码头开往巢湖的。”圩埂村的村民告诉记者,他们平时都不给小孩子到店埠河游泳,“水深,河里以前就淹死过人。”郭某说,当他游到妈妈跟前时,妈妈几乎已经没有了气力,身体也没有反应了。”&br&  此时,郭某的妻子小青从水里爬上了岸,而郭某则在一旁拍着妈妈的背,希望将水控出来。”&br&  医生:再迟两分钟就危险了&br&  看到妈妈晕厥后,郭某急忙背着妈妈回到家中,也没来得及换衣服,坐着邻居的车就将妈妈送到了肥东县人民医院。郭某的妻子小青在家换了衣服后,当天晚上也赶到了医院照顾婆婆。&br&  昨天,记者在肥东县人民医院见到了郭某一家人,媳妇和儿子俩正坐在病床前。”&br&  医生告诉记者,由于病人有高血压,落水后又受到惊吓,刚开始有点昏迷,到了医院后呕吐、头昏,“不过挂了水后,目前并没有大碍,也可以回家休养了。&br&  郭某的母亲孙某醒来后,却没有责怪儿子:“要不是儿子,我这老命就丢在河里了,现在挂了水,身体舒服多了。&br&  记者:为什么先救老婆,后救妈妈?&br&  郭某:当时没想那么多,只是看到老婆离我稍微近一点,我就游过去先救她了,当安顿好老婆后,发现妈妈在水中非常危险,又去救妈妈。&/blockquote&&p&评论区欢迎任何交流。&/p&
完整代码见我的互联网时代信息爆炸式增长,人们面对越来越多的信息无法一一阅读,而文本自动摘要技术可以一定程度上缓解这个问题。摘要就是一篇文章的核心部分信息,文本自动摘要技术分抽取式摘要和生成式摘要,前者是在原文中挑选一定比例的句子拼凑…
&figure&&img src=&https://pic1.zhimg.com/v2-51cf5c2a3c2b5ae49f694bc_b.jpg& data-rawwidth=&500& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-51cf5c2a3c2b5ae49f694bc_r.jpg&&&/figure&&p&&b&前言&/b&:卷积神经网络(Convolutional Neural Network)最早是应用在计算机视觉当中,而如今CNN也早已应用于自然语言处理(Natural Language Processing)的各种任务。本文主要以CMU CS 11-747(&a href=&https://link.zhihu.com/?target=http%3A//phontron.com/class/nn4nlp2017/schedule.html%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Networks for NLP&/a&)课程中Convolutional Networks for Text这一章节的内容作为主线进行讲解。本文主要包括了对如下几块内容的讲解,第一部分是对于常见的语言模型在进行文本表示时遇到的问题以及引入卷积神经网络的意义,第二部分是对于卷积神经网络模块的介绍,第三部分主要是介绍一些卷积神经网络应用于自然语言处理中的论文,第四部分主要是对这一篇综述进行总结。&/p&&p&&b&本文作者&/b&:&a href=&https://www.zhihu.com/people/bian-shu-qing/activities& class=&internal&&卞书青&/a&,2017级研究生,目前研究方向为信息抽取、深度学习,来自中国人民大学大数据管理与分析方法研究北京市重点实验室。&/p&&p&&b&一、引例&/b&&/p&&p& 我们首先来看这么一个问题,假设我们需要对句子做情感上的分类。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c6a579e264fd8c03db4b591_b.jpg& data-caption=&& data-rawwidth=&608& data-rawheight=&337& class=&origin_image zh-lightbox-thumb& width=&608& data-original=&https://pic2.zhimg.com/v2-c6a579e264fd8c03db4b591_r.jpg&&&/figure&&p& 传统的词袋模型或者连续词袋模型

我要回帖

更多关于 百度问医生免费咨询 的文章

 

随机推荐