分享

干货 | Sentence Vector 的一些进展

 openlog 2016-03-17

干货 | Sentence Vector 的一些进展

Vector

程序媛的日常(小S) · 2015-11-06 13:40

干货 | Sentence Vector 的一些进展



相信大家对于 word embedding,word vector 的表达、模型、相关应用等已经不陌生了(可以回复代码:GH018GH019 查看相关的一些文章),然而从 word 向 phrase, sentence, document 的发展,却还远未达到成熟的地步。今天,小S 来和大家分享一些 sentence vector 研究的进展,困惑,相关任务。主要基于的分享框架是 Macro Baroni 教授9月在 CAS Meaning in Context Symposium 的分享《What's in a Sentence Vector》。





关于 sentence vector 的表达


首先,我们最关注的就是,如何求解一个 sentence vector 的表达。过去,我们常见的就是从 word vector 得到 sentence vector,小S 在这里把这种从小 unit 到大一级 unit 的方法,统一称为“composition”(并不准确,只是暂时用来描述方便)。这方面的工作,大家都不陌生,比如有:

  1. PVDM, PVDBOW 这两个 phrase vector 模型




    Quoc Le 的《Distributed Representations of Sentences and Documents》大家都不陌生,是第一个几乎完全把 word2vec idea apply 到 document/phrase embedding 上的工作。

  2. DAN,deep averaging network 模型

    来自 Mohit Iyyer, Varun Manjunatha, Jordan Boyd-Graber, Hal Daumé III《Deep Unordered Composition Rivals Syntactic Methods for Text Classification》,ACL 2015.



    idea 很简单很简单很简单(有点像 SIGIR'15 的 HRM 的架构),就是deep averaging network——DAN。那用这个 DAN 做啥捏——他们是说,你们 ReNN(RecNN,作者是这么叫,但我记得我好像看到的 Socher 是叫 ReNN),就是 recursive NN,可以 handle 特别复杂的 syntactic + ordered 的 composition 关系——negation 啊 那些句法特征都可以 handle 进来。然并卵呀,你太复杂啦,你为了能提高准确性,在 ReNN 的每个 node 都要加个 classifier 来监督,每个 node 还都有不同的计算——你训练太慢啦。有没有可能你就是杀鸡焉用宰牛刀啊?

    于是乎作者就搞了这么个 simple but useful 的架构。每个 sentence input 的时候,都是按词为单位,并且 input unit 是每个词的 word embedding。然后直接 average——作者表示,在以前的工作中大部分人认为 average 比 sum 效果好。这是简单的 neural bag of words——NBOW。然后再变 deep——反正 deep FFNN 的思想就是我每 deep 一层,就更 abstract 嘛。然后实验证明,这样的 deep averaging (DAN)真的几乎和 ReNN 无差别噢,训练速度和 单层 NBOW 几乎无差别呢。虽然任务很简单,是 text classification。但是实验后面的分析很不错。有兴趣的就直接看看那个 Figure 架构和 Section 5 就好了。

  3. CNN for sentence modeling,各种基于 CNN 的模型


    Kalchbrenner ACL'14 的论文《A Convolutional Neural Network for Modelling Sentences》,大家都非常熟悉了。这篇论文算是把 CNN 用到 NLP 中的开山之作(这句话也许不严谨,但是他的知名度可以配的上这句话)。所以这篇文章中的很多开创性工作,都和 CV 中 CNN 在 object detection 上的模型去做对比和做改进。

    这篇论文的行文也很不错。论文开门见山说我就是要做 sentence modeling,并且设计了一个 DCNN 的模型。DCNN 中 D 代表 dynamic,也是这个论文的重要贡献之一——结合他们设计的 k-max pooling——dynamic k-max pooling 解决了 how to handle variable-length of input for Convolutional layers, and especially for stacked deep CNN architectures to combine features from different levels. 这种 dynamic 的 concept,其实有两个,一个是为了解决 max-pooling 中 single-active 的 Kalchbrenner 在这篇论文中的改进,并匹配他们的 stacked CNN;另一个其实是 Socher'11 年的一个 dynamic pool 的问题,只是为了解决 last layer input 的问题。这里不细说。另一点关于他们的 k-max pooling 要说的是,他们认为这是 position-sensitive 的,因为他们在提取 k-max active feature 的时候,是保留了 original position 的,这样使得原先 feature 在 input(words in sentence)的顺序是 keep 住的。

    另外一个贡献应该是他们的 stacked architecture combined with folding layer。这两者都是为了去 handle high-order information and interaction information between features. 对于 folding 层的意义后面的论文中会有人有改进,但是不得不说,这种交替架构思想确实非常符合 NLP 人 hierarchical composition 的理念,每一个 layer 代表一种更 large range 的 input unit。



其实除了以上这些 “composition” 的方法,还有一种基于 distributed 的思想。就像 word2vec 一样,一个 word 的表达,由它周围的 contexts 来展现;那么我们也可以把一个 sentence 就当成一个 “word”,即一个 unit,用 sentence 上下文的前后 sentence 作为它的 context 求得。这样的思想下的工作也有一些:

  1. skip-thought vectors 模型

    就是已经被接收为 NIPS'15 的论文,来自 Ryan Kiros 等人。



    模型上,具体使用是 RNN-RNN 的 encoder-decoder 模型;其中两个 RNN 都用了 GRU 去“模拟” LSTM 的更优表现。在 encoder 阶段,只是一个 RNN;在 decoder 阶段,则是两个(分别对应前一个句子和后一个句子——也就是说不能预测多个前面的句子和后面的句子)。

    这样的模型可以保留一个 encoding for each sentence,这个 encoding 会很有用,就被称为 skip-thoughts vector,用来作为特征提取器,进行后续 task。注意是 Figure 1 中所谓的 unattached arrows,对应在 decoder 阶段,是有一个 words conditioned on previous word + previous hidden state 的 probability 束缚。同时,因为 decoder 也是 RNN,所以可用于 generation(在论文结尾处也给出了一些例子)。

    本文的另一个贡献是 vocabulary mapping。因为 RNN 的复杂性,但作者又不希望不能同时 learn word embedding,所以只好取舍一下——我们 learn 一部分 word embedding(words in training vocabulary);对于没出现的部分,我们做一个 mapping from word embedding pre-trained from word2vec。这里的思想就是 Mikolov'13 年那篇 word similarity for MT 的,用一个没有正则的 L2 学好 mapping。

    在实验中,他们用此方法将 20K 的 vocabulary 扩充到了 930K。

    In our experiments we consider 8 tasks: semantic-relatedness, paraphrase detection, image-sentence ranking and 5 standard classification benchmarks. In these experiments, we extract skip-thought vectors and train linear models to evaluate the representations directly, without any additional fine-tuning. As it turns out, skip-thoughts yield generic representations that perform robustly across all tasks considered.

    首先是他们有三种 feature vectors,uni-skip/bi-skip/combine-skip。分别对应 encoder 是 unbidirectional,bidirectional,和 combine 的。分别都是 4800 dimensions。

    对于不同的 task,可能用不同的 feature indicator,比如把两个 skip-thoughts-vectors u 和 v,点乘或者相减,作为两个 feature,再用 linear classifier(logistic)。

  2. discourse-based sentence 模型,最新,EMNLP 2015


    来自 EMNLP'15 最新的工作,《An Exploration of Discourse-Based Sentence Spaces for Compositional Distributional Semantics》。这篇工作的出发点非常明确,就是去探究 compositional vs. distributional 两类方法的 basic setting 有多大差别,是否有优劣之分。文章分别用基于 compositional 的思想,和 distributed 的思想(所谓 discourse-based)构造了一些 feature,进行 sentence 表达,最后用实验来展现两者之间是否存在 gap。结论是,几乎不存在 gap。


关于 sentence vector composition rule


说完了 sentence vector 表达的两类方法,接下来的一个很自然的问题是,compositional 的方法,直接用 average 表现还凑合,那是否有必要进行其他 composition rule 的探究呢?就像大家做了那么久句法分析,能不能很好地把句法分析的结果,“自动”转换成 composition rule 从而指导 sentence vector 的表达呢?这方面的研究也已经有一些:

  1. 从 raw corpus 中自动学习 composition rule

    这个工作也是之前介绍过,ACL 2015 的《Jointly optimizing word representations for lexical and sentential tasks with the C-PHRASE model》,来自 Nghia The Pham, Germán Kruszewski, Angeliki Lazaridou, Marco Baroni 等人。


    基于 CBOW 的改造模型,作者的出发点是——既然 CBOW 可以基于 contexts 中的 words combination(ngram)来预测中心词,我们应该可以找出一种方法,使得 contexts 不再是简单的自然 combination,而是符合 linguistic rule 符合 syntax 的 combination。

  2. 用 RNN 和 reconstruction error (监督)建模

    这个工作大家就更不陌生了,来自 Stanford Socher 的工作,《Semi-Supervised Recursive Autoencoders for Predicting Sentiment Distributions》 EMNLP 2011。



  3. 利用 multi media/ multi corpus / multi task 等 parallel 的信息进行学习

    比如用 multi media,可以是利用大家已经比较熟悉的 image-caption 来学习 sentence 的 composition,这方面的工作可以参阅《"Framing Image Description as a Ranking Task: Data, Models and Evaluation Metrics》




关于 sentence vector 的任务


和表达学习密不可分,同时进行的另一方面的工作,自然是对表达的应用——一个表达到底好不好,对于 sentence meaning 建模如何,拉出来溜溜,直接上任务。从现在的研究来看,基于 sentence 的 vector 表达,非常依赖于任务——不同的任务,需要的 core sentence meaning 完全不同。这方面的任务、评价有:

  1. Question Answering

    来自 UMD 的 Mohit 的 QANTA 模型,工作发表于《A Neural Network for Factoid Question Answering over Paragraphs》EMNLP 2014,也是上面提过的 DAN 模型的作者噢。



  2. 探究 sentence 之间的 coherence(和 summarization 等问题息息相关)


    工作来自 Jiwei Li 和 Eduard Hovy《A Model of Coherence Based on Distributed Sentence Representation》,EMNLP 2014。

  3. 当然还有大家都很熟悉的 sentiment analysis

    这方面工作就太多啦,列不全,比如 NAACL 2015《Effective Use of Word Order for Text Categorization with Convolutional Neural Networks》。论文提出了两个 model,分别是a) seq-CNN,直接把 one-hot for each word 的 vector concatenate 起来,这样是一种全序保留 word order;b) bow-CNN,把 one-hot 的结果进行一种“压缩”,局部摒弃了 word order(类似的压缩方法在 MSR 系列 DSSM 中,把 subword 表示到 word 层次,也有使用)。这样做的好处是可以减少 parameter)。这两个 model 有一个非常显著的性质就是,different size of region(input unit),并且细节上他们的 model 中 配合了 different type of pooling。而且他们在 conclusion 部分的分析也着重强调: a) 两个任务在很多性质上非常相反,尽管 seq-CNN 和 bow-CNN 都表现最好,但 seq-CNN 和 bow-CNN 在两个任务上表现相反(归结到 different size of region 和 different type of pooling 对于性质的体现);b)parallel-CNN 有一些 trick,且效果更好。



关于 sentence vector,从上面的分析可以看出,还有非常多的工作(keng)值(ke)得(yi)做(tian)。大家一起干巴爹哟!




 微信原文  分享到微信  文章为作者独立观点,不代表微头条立场

程序媛的日常的最新文章
悦己 | 那些赶论文的日子...

各位好,好久不见啦!大小S因为最近都在赶论文,脑子都不转了= =不知道最近能跟大家分享什么。 结果大S刚刚突然想到,不如就跟大家分享一下在苦逼赶论文的日子里,大S喜欢采用的一些简单放松心情缓解压力的事情吧~~

程序媛的日常·03月14日 10:57

干货 | Generative Adversarial Networks(GAN)的现有工作

今天想与大家分享的是图像生成中一些工作。这些工作都基于一大类模型,Generative Adversarial Networks(GAN)。

程序媛的日常·02月29日 10:07

日常 | 来跟我们分享你身边的程序媛

亲爱的各位小伙伴们,好久不见啦!今天大小S为大家带来我们的第一次线上互动活动,希望大家积极参与,多多支持我们,也有机会获得我们的精美礼品哟!

程序媛的日常·02月22日 10:23

干货 | 你真的了解 Convolutional Neural Networks 么

你真的了解 CNN 么,了解每个 component 的用处么,你会改进它们么?快来一起看看最新的相关工作们。

程序媛的日常·01月11日 09:06

悦己 | 年末了,快来关爱和奖励程序员

带上些关爱健康的小物品,整装出发,更好地迎接即将到来的2016吧!

程序媛的日常·2015-12-28 08:57

悦己 | 年末了,快来关爱和奖励程序员

带上些关爱健康的小物品,整装出发,更好地迎接即将到来的2016吧!

程序媛的日常·2015-12-28 08:57

干货 | NIPS 2015 中有趣又看得懂的工作

今天会跟大家分享一些 NIPS 2015 中,我觉得还挺有趣的 general 工作,有优化相关的,有新鲜任务的,也有基于一些经典模型改进的,甚至还有一些系统工程上的经验。

程序媛的日常·2015-12-23 08:34

心态 | 马克.维瑟奖首位女性获奖者周源源教授交流会感想

12月17日下午,马克.威瑟奖首位女性获奖者周源源教授首次回归北大开讲,师姐XL参加了这次周源源教授的交流会,感触挺多的,下面会摘几个片段分享下。

程序媛的日常·2015-12-21 08:56

干货 | ICCV 2015 揭开152层神经网络的面纱

开创了152层 deep network,成功摘取 ILSVRC2015 全(主要)类别第一名的工作,来自 MSRA 的 Deep Residual Network 的技术细节是什么?ICCV 2015 上还有什么有趣的工作?

程序媛的日常·2015-12-18 08:29

干货 | Graph Signal Processing for Image Denoising

大S拿到了新鲜出炉今天刚刚在APSIPA2015上分享的Tutorial"Graph Signal Processing for Image Compression & Restoration",在这里跟大家分享。

程序媛的日常·2015-12-16 17:57

干货 | NIPS 2015 Reasoning, Attention, Memory Workshop

NIPS 2015 RAM workshop 中有几个看点,一个是请来了非 DL 的研究者,比如 cognitive science 方向的,带来了生物学角度的 memory 研究;二来是有很多开创性工作。

程序媛的日常·2015-12-14 07:59

干货 | NIPS 2015 Deep Learning Symposium(二)

继续把 NIPS 2015 Deep Learning Symposium 的论文笔记写完,这次的论文个人感觉有很多有联系,让我隐隐感到 Bayes 圣战已经再度打响……

程序媛的日常·2015-12-11 08:58

干货 | NIPS 2015 Deep Learning Symposium(一)

今天分享的是 NIPS 2015 Deep Learning Symposium 中一些 references

程序媛的日常·2015-12-09 14:16

干货 | 如果只推荐一本英文写作书,那必须是它!

在英文写作中,可能大家感同身受的几个困惑都会是:什么时候用被动语态?学术写作是不是句子越复杂越好?我的语法都没错,为什么还是总被 reviewer 说应该找 native speaker 改改?别人总是 get 不到我想说的点怎么回事?

程序媛的日常·2015-12-07 11:50

悦己 | LEGO乐高Wall-E测评

大S一直有一个乐高梦,原先每次跟小S一起逛街经过乐高专卖店的时候都会跟小S念叨说”以后我要是有钱了,我一定要买一套大大的乐高来圆梦!”终于,虽然大S仍然没有钱,但是看到Wall-E上线的时候忍不住入手了一套,现在就来跟大家分享一下。

程序媛的日常·2015-12-04 09:12

干货 | ICLR 2016 Submission Highlights

今天这篇内容叫 ICLR 2016 Submission Highlights,包含我个人推荐一看的工作。包括:之前没接的(不太好分类的,或者分类出来就一两篇的内容)和之前总结过的精选。

程序媛的日常·2015-11-30 09:08

干货 | Improving Information Flow in Seq2Seq Learning

LSTM 作为现在极其火爆的 Neural Networks,其本身依然具有一定的神秘性。今天分享最近一年致力于解密 LSTM 和 改进 LSTM 的工作。

程序媛的日常·2015-11-25 08:16

干货 | Multi-modal Deep Learning 初窥

前两天 ACML 在 HK 举办,请来了 Ruslan Salakhutdinov 教授。他给的 talk 就是 《Multi-modal Deep Learning》。今天小S 就趁热,稍微分享一下我对这边工作的了解。

程序媛的日常·2015-11-23 08:17

干货 | Sentence Vector 的一些进展

今天,小S 来和大家分享一些 sentence vector 研究的进展,困惑,相关任务。

程序媛的日常·2015-11-06 13:40

干货 | 一个 trick 胜过三个 bound

“三个 bound 不如一个 heuristic,三个 heuristic 不如一个trick”。致力于炼(tiao)丹(can)的各路大神早就有了各种总结,今天小S 就来分享一下自己收集的 trick 大集合——让我们实战起来!

程序媛的日常·2015-11-02 09:53

女神 | 她被誉为“上帝赐给密码学的礼物”

她是第二个Berkeley今年新招的教授。从MIT一路本科读到博士毕业从事系统安全,是为数不多数学功底和系统功底都很强的人。博士课题设计了一个数据库系统CryptDB,可以直接在加密的数据上不解密进行数据分析。她被誉为上帝赐给密码学的礼物!

程序媛的日常·2015-10-26 09:58

日常 | 不算太闲的闲书·第三期

好久不见的备受欢迎的“不算太闲的闲书”系列第三期来报道了,本期推荐的有,计算语言学小品,如何科学进行学术,心智认知,茅盾文学奖,面试必备指南……

程序媛的日常·2015-10-23 09:50

干货 | 关于 Attention in Cognitive NeuroScience 你需要知道的7件事

attention 个机制,其出发点是模拟了人类认知中的 attention 过程。那么,是否有可能,现在我们计算机领域“移植”的 attention 只是冰山一角呢?

程序媛的日常·2015-10-19 12:50

漫步 | 回想在以色列的日子

满碗最是一枚懒人,难得出国一趟,照片都不曾主动拍过几张,回来自然写不了游记,更做不了攻略。加之前面有Naomi的游记做榜样,对答应大S的游记实在是压力山大,一拖再拖,终于赶在大S发怒前,来此胡言乱语。

程序媛的日常·2015-10-16 09:58

干货 | CCF虚拟现实发展趋势及应用报告会简要记录

最近各种沉浸式设备的报道中,虚拟现实这个词也经常出现,看着是要火的节奏。大S今天特别邀请到大牛师姐夏华木子来跟大家分享她去听CCF虚拟现实发展趋势及应用报告会的感受!

程序媛的日常·2015-10-12 12:10

悦己 | 梦中的姑娘依然长发迎空,那你呢

大多数程序媛/员会遇到的头发问题其实只有三个呢,第一,脱发,第二,头发爱出油,第三,头发干枯分叉。小S 今天就针对这三个问题来推荐一些使用过且有效果甚至疗效显著的护发产品和护发方法。

程序媛的日常·2015-10-05 15:49

日常 | Google Anita Borg教我的事儿

前阵子大S有幸在魔都上海参与了The Google Anita Borg Memorial Scholarship: Asia Pacific Retreat,今天大S就来跟大家分享在这繁忙的几天Retreat过程中的一些收获。

程序媛的日常·2015-10-02 10:38

干货 | Information Flow Mechanism in LSTMs and their Comparison

如果说 LSTM 的 input/forget gate 设计,是其中一种解决 gradient vanishing 的机制,那么还有一些 variants 提出了更多可能更多灵活的机制。

程序媛的日常·2015-09-28 08:59

干货 | 都是 Character-level/Aware Language Models 差距咋就这么大捏

四篇 character-level/aware 相关的论文,可是无论从 model 到结论到实现细节都非常不一样。为啥同为 character-level 模型,做 model 的差距咋就这么大捏?

程序媛的日常·2015-09-21 09:16

漫步 | Naomi的土耳其实用攻略

久违的Naomi又来啦!据说她要成为我们的第一位专栏作家了呢!今天她又来跟大家分享什么有趣的经历呢?

程序媛的日常·2015-09-18 10:06

漫步 | 洛杉矶独家小攻略

洛杉矶(Los Angeles),是一座位于美国西海岸的城市,又称为“天使之城”。它的面积为1214.9Km2 ……没错这是百度百科啦,yy 根据自己四天三夜的洛杉矶之旅,主要给大家推荐三个景点: 一号公路,环球影城, 迪士尼!

程序媛的日常·2015-09-14 09:50

日常 | 当我跑步时,我在听什么

香港即将迎来渣打20周年马拉松比赛。小S 准备报名半马噢。今天就来分享一下平时跑步的歌曲,从影视到动画到知名乐队代表作,包罗万象,不怕不燃!

程序媛的日常·2015-09-11 13:24

干货 | Applied Attention-Based Models (二)

今天再给大家带来三篇 Attention Mechanism 相关论文,但这次并不完全是 in NLP。选入非 NLP(非小S 擅长领域)的论文是有特别的考虑,因为它“超越”了 Attention!

程序媛的日常·2015-09-07 14:57

干货 | Applied Attention-based Models in NLP

这几天微博上有一类模型,“再次”引起了大家的注意——Attention-based Models。其实这个 model 已经出现两年多啦,今天小S 就总结一下几篇有关 Attention-based models 的论文。

程序媛的日常·2015-09-04 06:00

美食 | 边吃边逛798

好久不见的美食专栏又来啦!大S作为一个有点小文艺的程序媛,偶尔还是会跟朋友一起去那边看看展览啥的,培养一下情操~同时,大S作为一枚吃货,美食也是必不可少哒!今天就来为大家推荐798周围的一系列美食~

程序媛的日常·2015-08-31 14:17

干货 | 一个简洁优雅的 XeLaTeX 简历模板

今天由小S 在 GitHub 刷 LeetCode 上认识的好基友 Bill Ryan 给大家带来用 XeLaTeX 制作精美简历的经验。Bill Ryan 以后可能也会带来更多维护 GitHub repo 的经验,敬请期待。

程序媛的日常·2015-08-26 11:14

漫步 | Berkeley life

YY小盆友之前去了Berkeley上暑期学校,今天就来与大家分享她的Berkeley life!

程序媛的日常·2015-08-24 14:11

悦己 | 那些暖心的APP之三

久违的APP推荐又来啦!

程序媛的日常·2015-08-21 14:26

干货 | Pieces of Word Embedding

在百度凤巢的分享:关于 Distributed Representation 的七方面:model, properties, conclusions, theories, applications, drawbacks, hotspots。

程序媛的日常·2015-08-19 17:14

干货 | “后 Word Embedding 的”热点会在哪里?

今天会跟大家分享一下,小S 观察最近的 talks/publications 后,自己总结的 word embedding 的未来热点在哪里——就跟后现代一样,我姑且叫它“后 word embedding”时期。

程序媛的日常·2015-08-17 12:37

日常 | 韩国网上免税店购物攻略

公众号刚刚开放的时候大小S曾经跟大家宣传过关于程序媛买东西会省钱!不过一直也没找到机会跟大家分享一些tips,今天就特别邀请到了小L来跟大家分享她的韩国购物省钱攻略哟!

程序媛的日常·2015-08-14 12:03

干货 | 辨析计算机视觉、计算机图形学和数字图像处理

今天难得大S也来写一次干货!大S今天就根据自己粗浅的理解来写一个简单的科普帖,帮大家区分计算机视觉,计算机图形学和数字图像处理这三个领域。

程序媛的日常·2015-08-12 10:23

女神 | 另一位 CMU 女神 Fei Liu

在 ACL 大会期间,除了收获了不少干货知识,还有幸见到了许多女神的庐山真面目!除了上一篇 CMU 女神 V

程序媛的日常·2015-08-10 13:05

漫步 | 樱花满天的日本

大S的好闺蜜Murmur和三个好朋友一起去了日本,花了十三天玩遍了东京、富士山、京都、奈良和大阪。大S今天就特邀Murmur来跟大家分享她的日本游记。

程序媛的日常·2015-07-22 15:28

日常 | 不算太闲的闲书

平时虽然学习繁重,工作劳苦,但是偶尔还是可以换换脑子,多读些“闲书”——考虑到闲书又不能太闲,本期挑选了5本小S 读过,读起来认为不算烧脑费神又很有收获的好书!

程序媛的日常·2015-07-24 11:00

干货 | ACL 2015 Day 1 morning

推荐几篇 Day 1 上午 oral presentation 的论文。1. Text to 3D Scen

程序媛的日常·2015-07-29 23:01

干货 | ACL 2015 纪实 Day 0 & Day 1

过去三天,学术圈的一大盛事便是第53届国际计算语言协会年会(ACL 2015)正在北京如火如荼地进行着!小S 也很荣幸地亲历其中,感受这一盛会的情况。未来几天会将这次大会的见闻和学术感受与大家分享。

程序媛的日常·2015-07-29 23:01

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多