1.摘要的提取方法
文本摘要是一种从一个或多个信息源中抽取关键信息的方法,它帮助用户节省了大量时间,用户可以从摘要获取到文本的所有关键信息点而无需阅读整个文档。文本摘要按照输入类型可分为单文档摘要和多文档摘要。单文档摘要方法是指针对单个文档,对其内容进行抽取总结生成摘要;多文档摘要方法是指从包含多份文档的文档集合中生成一份能够概括这些文档中心内容的摘要。
基于图排序的文本摘要生成的主要方法是通过把文章分成若干个段落或句子的集合,每个集合对应一个图的顶点,集合之间的关系对应边,最后通过图排序的算法。其中Text rank排序算法以其简洁、高效的特点被工业界广泛运用。大体思想就是先去除文章中的一些停用词,之后对句子的相似度进行度量,计算每一句相对另一句的相似度得分,迭代传播,直到误差小于0.0001,再对上述方法得到的关键语句进行排序,即可获得摘要。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。
优点在于:它具有简单、语言弱相关及同时适合单文本和多文本等众多优点,无需手动标注数据集,相比有监督或半监督的深度学习的文本摘要方法,节省了一定的时间和人力。缺点是:由于无监督学习方法还没有充分挖掘和利用数据之间的关系,所以虽然文本摘要的效果和质量有所提升,但是对数据利用不够充分,存在局限性,之后的基于有监督、半监督学习的文本摘要方法对数据进行了合理利用,相比无监督方法有显著的性能提升。
TF-IDF是一种统计方法,用以评估字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
词频(Term Frequency)表示单词在该文章中出现的频率。通常归一化处理,以防止它偏向长的文件。词频(TF) = 单词在该文章出现次数/当前文章总单词数。
反问档频率(Inverse Document Frequency)表示某一个特定单词IDF可以由总文章数除以包含该单词的文章数,再将得到的商取对数得到。如果包含该单词的章越少,则IDF越大,则表明该单词具有很好的文章区分能力。反问档频率(IDF) = log(语料库中文章总数/(包含该单词的文章数+1))
TF-IDF算法的优点:简单快速,结果比较符合实际情况。缺点:单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。
2.实验的主要过程(遇到问题及解决过程)
- 使用JIEBA库进行分词
①输入代码
图2.1.1
代码思路:首先将要提取的新闻内容放入一个字符串sentence中,通过JIEBA分词的全模式进行切分,将切分的内容存放在seg_list的列表中通过i不断去遍历列表中的元素进而将分词结果进行输出,接着通过jieba.analyse.extract_tags 提取关键字:
1)第一个参数:待提取关键词的文本,在我们的代码中指的是sentence的字符串。
2)第二个参数:通过topK返回关键词的数量,重要性从高到低排序,在我们的代码中用topK中选择返回20个关键字。
3)第三个参数:withWeight参数决定是否同时返回每个关键词的权重。
4)第四个参数:词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词,我们选择n名词,nr人名,ns代表地名。
注意:在分词中cut和lcut是有区别的:
jieba.cut生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词。
jieba.lcut 直接生成的就是一个list。
②然后遇到下面的问题
正在上传…重新上传取消正在上传…重新上传取消
图2.1.2
③分析遇到的问题
是由于在python文件的第一行(不能有空行)加入,在代码中加入
图2.1.3
添加代码后便可以解决问题了。
④运行结果
图2.1.4
- 使用SnowNLP库进行分词
①首先通过cmd导入snownlp库
通过命令pip install snownlp安装成功
②但是运行的时候发下安装的库没有导入成功,后来通过anaconda的图像界面发现我的虚拟环境中并没有顺利导入snownlp,然后顺利安装成功。
图2.2.1
③接着又出现下面的问题
图2.2.2
去搜索解决办法后发现
图2.2.3
当snownlp包和新建的snownlp.py文件重名了
④输入代码
图2.2.4
代码说明:首先导入SnowNLP,然后将内容存放到字符串sentence中,然后调用SnowNLP中words对内容进行切分,再通过调用keyword()进行提取关键字。
⑤代码运行截图
图2.2.5
3.实验感想
通过本次实验对于提取文本关键字有了更加深刻的理解,通过JIEBA和SnowNLP关键词提取的实践操作,我们可以发现两种库提取的结果并不相同,同时也理解老师为什么要找最新的新闻了,因为新闻内容中存在的词语可能在之前的语料库中并不存在,所以提取结果中的奥密克戎病毒会拆分成很多的部分,通过了解后知道了jieba分词首先基于统计词典,构造一个前缀词典进行词图扫描,然后利用前缀词典对输入句子进行切分,得到所有的切分可能,根据切分的位置,构造一个有向无环图,最后根据动态规划算法,计算得到最大概率路径,也就得到了最终切分形式。对于未登录词,jieba使用了基于汉字成词的HMM模型,采用了Viterbi算法进行推导。因此在结果中会产生出入。与此同时,还了解到SnowNLP还擅长情感分析,可以判断出句子中的情感是正向还是负向,通过本次实验我感觉到很有意思,虽然有时候会碰到很多问题,但是每一个问题的解决都会增加很多快乐,不畏惧问题,兴趣是最好的老师,如果从事的工作是感兴趣的,我想这是一个人的幸福了吧!初学者刚刚接触,有不好的地方欢迎大家批评指正!
更多推荐