项目实训记录系列博客
一马当先,争做国家栋梁。
博客说明
本博客初衷是用于学校项目实训知识梳理、工作内容、收获感悟的记录。
若能在您的学习之路上有所帮助,不胜荣幸。但若需转载,也请注明出处。
博客包含以下内容(也是开篇提到的),但不意味着每一篇都会囊括所有;同时,也并非意味着博客的目录结构就是如此。每篇博客内容请看后文中具体的目录。
知识梳理:为了完成目标算法,将会广泛地查阅有关文献资料。将所学知识、资料进行整理。会加入个人理解,一起进行分享。
工作内容:作为项目参与者,在整个项目中所担任的角色、完成的任务。包括个人任务,团队沟通与合作。
收获感悟:您可以简单理解为鸡汤。不过,不同于空洞的话语,在这里所记录的感悟和总结都是结合自身实际、结合项目实际的,相信您能看到博主是怎样的人,也愿您能从中获得启发和前进的动力。
项目实训系列博客目录
1-关键词提取-任务理解&工作分配
2-关键词提取-代码运行云平台colab的使用
3-关键词提取-论文研读-RaKUn算法(1)
4-关键词提取-论文研读-RaKUn算法(2)
5-关键词提取-论文研读-betweenness centrality相关算法(1)
6-关键词提取-论文研读-betweenness centrality相关算法(2)
7-关键词提取-论文研读-load centrality的合理性探讨
8-在IDEA或Pycharm中解决编码问题
9-python:sort()和sorted()使用及对比
10-python:set的使用
11-python:most_common()函数
12-python:enumerate()函数
13-networkx的基础使用
14-收尾工作-答辩内容整理
15-收尾工作-组织协调
本博客目录
Transforming texts to graphs
Representing text
1.使用有向图(directed graph): G = ( V , E ) G= (V,E) G=(V,E)
2. D D D代表一份文档,由 t o k e n s { t 1 , . . . , t n } tokens\{t_1,...,t_n\} tokens{t1,...,tn}组成。(token, 语言学上指标记,标志) 因为tokens在文章中出现的顺序是确定的,所以D是一个有序集(ordered set)。
3.边:一种考虑隐含信息的做法是考虑单词的共同出现(co-occurrences, 以下简称co-occur),用一条边来表示。但是这意味着丢失了单词的顺序性质,也就是丢失了order.而这正是本文尝试做到的。
4.考虑order:遍历给定语料,将其中出现的 t i t_i ti以及之后的 t i + 1 t_{i+1} ti+1,通过给定的元素(目前看来主要就是这两点确定下来,读完全文发现后面还有权重的问题)形成一条边E.边的权重是出现的次数。最后连接起来形成一个完整的图,这样全局的文本信息通过权重,也隐式地完整保存了下来。当然,这些信息需要通过网络分析来找出,下文会接着介绍。
Improving graph quality by meta vertex construction
上文中所提到的最简单的实现方式,会生成有噪声的图,导致学习任务更困难。如何减少时间复杂度和空间复杂度,同时提高图的质量变成了接下来的重点内容。
1.考虑一些有可能的方案:
(1)限制token的长度,只有超过指定长度的token才纳入考虑范围(**但是对于中文来说这种方式并不可行,**中文多是两字词语,再比如“我很爽”这一句话,“爽”一个字也是关键词,长度限制很可能没有意义。甚至对于英语原文来说,也可能会遗漏到一些关键信息)
(2)Lemmatization, 词形还原。也就是将单词还原成最初的形式,如单复数,时态语态问题(**同样不适用中文,**毕竟中文少有这种变化。不过若将lemmatization看做是一种必要的预处理的话,中文不需要可以算是语言的天然优势吧)
以上两种方式都可以减少顶点数,降低空间复杂度。
2.更深层次的做法:meta vertex construction. 合并类似的顶点,事实依据是具有相同词根的话可以映射成相同的关键词。这里除了常见的“名词–>形容词”这种同词根变化,论文中甚至举出了normal和abnormal这种例子,也就是说否定意味/形式的词语也可以归类在一起。在中文里,个人认为是”不开心“可以归类到”开心“,这种做法的合理性如何看待?个人理解是,虽然词义是完全相反的,但都反映了一个共同的领域,比如刚刚提到的开心或者不开心,其实也都在“开心”这个领域内,就像很久之前流传的段子:“再慢也叫速度”,只要还在这个领域,就算是两个极端也能划分到一起。
此外还有其他的情况:拼写错误、一词多形(如英式和美式)、不规范拼写(包括缩写)等,都需要考虑。
3.Keyword identification: 类比于betweenness centrality的思想,在这里使用Load centrality。关键是需要弄清楚load的定义。论文中提到跟betweenness centrality确实是有所区别的,并且简单地提到了区别在哪里,但是阅读原文中的描述并不能让我理解。可能是因为英语对我而言确实还不像中文那样好理解,让我感到可能会有多义性,也就是我的理解可能跟作者原本想表达的不一致;另一方面也可能是因为我对于这个概念知之甚少,确实还需要这方面的知识,因此接下来的计划是前往论文中所给的引用链接,找到详细的介绍和说明。
小结
收获感谢
第一次了解了lemmatization等基础的NLP处理相关知识,感觉对于NLP有了新的认知。之前接触的只有深度学习RNN提到过,有一个最初的印象。最近阅读这篇论文,查阅相关的名词解释、文档文献才发现原来NLP还有这么多子领域和基础名词知识,关键词提取只是其中的一种。可以说是极大地拓展了眼界。
待解决的问题
1.上文中提到的load的概念。
解决:需要阅读相关论文查证补充。
2.论文中提到了很多概念和方法都是对于英语语料的(或者说,拉丁语系?),而我们项目的任务是使用中文语料,从语言语系上大有不同,因此很多基础操作在中文里是无法使用的。
解决:完全阅读之后就要考虑根据论文的思想来自己实现代码了。