赞
踩
1、理解文本素材预处理的主要任务;
2、掌握文本素材预处理的主要方法;
3、掌握并实现中文分词、词性标注、关键词提取、句法分析等智能预处理。
操作系统:window10
软件开发环境:anacoda、jupyterLab、python3.7+
环境变量配置等:anacoda全局变量
(1)分词初步处理
主要看到对于俄罗斯报以及阿特里奇的人名,jieba的精准模式分词是存在问题的,为解决这一问题进行以下分析。
不难发现,以上运行结果跟我们的预期与想表达的意思是不一致的。
为了使分词结果与预期一致,我们可以采用如下方法:
开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率。
词典格式和dict.txt一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
使用 jieba.load_userdict(file_name) 即可载入词典。
可以看到,虽然文本分词准确率有了提高,但是俄罗斯报以及阿特里奇的人名还是仍有问题。
使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典,这是对“添加自定义词典”功能的补充。
从结果上看,将阿特里奇的人名加入自定义的词典,并且这个字典可以动态的加入到其中。
使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来,这个功能不是基于词典的。
最后将相对准确的结果导出。
(2)基于jieba词性标注结果分析
可以看到,jieba词性标注对数字的分组是尤为敏感的,在这里为进一步找到更好的词性标注方法,我们选择了基于hanlp的词性标注。
pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式
第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分词器,而现在默认的就是第一种维特比分词器
1)NLP分词器
2)维特比分词器
3)条件随机场 (crf)分词
4)结果分析
分析结果可以看到条件随机场 (crf)分词对于四机以及人名有着较为良好的词性标注能力。
(1)TF-IDF
期间使用百度的停用词表
(2)TextRank算法
extract_tags() 将频繁词作为关键词;textrank() 是利用局部词汇之间关系对后续关键词进行排序,其模型一般表示为一个有向有权图,计算过程中要迭代,较为耗时。
(3)基于hanlp的TextRank算法
结果:
(4)词云绘制
在文本摘要以及依存句法分析中选用的是基于hanlp的自然语言处理。
(2)依存句法分析
结果:
(1)由于格式符号问题代码报错
在进行实验操作:7.txt中,我的代码出现了报错如图所示:
为分析其原因,我进行了回溯,发现jupyter针对文本内容识别报错。对此,有以下几个原因:
第25行:
(2)分词以及词性标注后,出现空格太多的问题。
如图是科大讯飞语言处理结果,其对于多余的空格以及由于符号的分词效果相当良好,而我们出来的结果相差一些,尤其是词性标注。
txt导读中间的空格会直接被我们的算法识别成两个词,而其他平台中却没有出现这个问题。
实验数据、代码会在后续上传,
本文仅供交流,转载请标明来处,谢谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。