文章目录

  • 任务
  • 语料分析
  • 思路分析
  • 一、任务详解+代码
    • 抽取词表+统计词频
      • 1.删除多余文本
      • 2.统计词频
  • 二、形成原始文本

任务

针对人民日报语料,编写程序:
(1)抽取词表
(2)统计总词数、不同的词及其次数。
输出文件格式:
第一行是语料库中的总词数,之后每行一个词及其次
数,按照词频从小到大排序。如:
总词数:10000
#韩国:169
#民族:571
……
(3)去除语料中的分词和词性标记,形成未加工的语料(原始文本)

语料分析

人民日报语料

1.语料已经被分词,并且做了词性标记,需要注意几种特殊的:

  • /w:标点符号
  • /m:数字
  • /t:日期
  • [ ]nt:代表大词。如:[中央/n 人民/n 广播/vn 电台/n]nt

2.文本比较大,要考虑运行时间问题

思路分析

  1. 任务1,2可以一起做。就是要考虑两个问题:

    • 怎么将词不重复地提取出来?
    • 什么标记的词不统计?
  2. 任务3要考虑怎么将词性标记和空格去掉
  3. 注意任务1,2的重点放在统计上,不用考虑词性标记的去留,而任务3则只要考虑词性标记的删除

一、任务详解+代码

文本仅不同的词就超过50000个,所以有能力的情况下,尽量不要采用遍历,否则会导致运行时间太长,所以多采用

抽取词表+统计词频

1.删除多余文本

在语料分析里提到的,将标点符号(/w) 数字(/m) 日期(/t)等先删除

def delete(file_name='人民日报语料.txt', save_file='word.txt'):"""此函数删除不属于汉字词的标点、数字等参数:file_name - 带有标注的人民日报语料save_file - 保存处理好的文本(只含有带有标注的中文词)"""with open(file_name, 'r') as f:f = f.read()index = 0# 删除/w标注的词while (f.find('w', index) != -1):index = f.find('w')f = f[:index - 4] + f[index + 1:]f = f.replace("[","").replace("]","")fire = open(save_file, 'w')fire.write(f)fire.close()print("Successfully delete!")print("The save file is " + save_file)

2.统计词频

def toWordSet(file_name='word.txt', save_file='wordSet.txt'):"""此函数统计词频和总词数参数:file_name - 只含有中文词的带标注的语料save_file - 保存统计的词频"""word_dict = defaultdict(int)with open(file_name, 'rb') as f:for line in f:# 将unicode字符转换成gdk编码字符,split按空字符分割content = line.decode('gbk').strip().split()# 去掉第一个词“19980101-01-001-001/m”for word in content[1:]:word_dict[word.split(u'/')[0]] += 1print("The total number of words is:{0}".format(len(word_dict.keys())))# 保存词频到文件keys = list(word_dict.keys())values = list(word_dict.values())fw = open(save_file, "w")for i in keys:fw.write(i + ": " + str(dict[i]) + "\n")# print(i + ": " + str(word_dict[i]))fw.close()print("Successfully get word dictionary!")print("The save file is " + save_file)

二、形成原始文本

为了减少运行时间,所以使用replace函数来删除,但是因为replace只能删除1个字符,所以比较麻烦的是要把所有删除的字符手动输进代码

def toWordRestore(file_name='人民日报语料.txt', save_file='wordRestore.txt'):"""此函数去除语料中的分词和词性标记,形成原始文本参数:file_name - 带有分词和词性标记的语料save_file - 保存原始文本"""with open(file_name, 'r') as f:f = f.read()# 删除标注字符str = ( f.replace(" ","").replace("]","").replace("[","").replace("/","").replace("v","").replace("n","").replace("u","").replace("t","").replace("m","").replace("w","").replace("a","").replace("r","").replace("q","").replace("p","").replace("c","").replace("d","").replace("f","").replace("Ng","").replace("z","").replace("i","").replace("s","").replace("Tg","").replace("k","").replace("j","").replace("b","").replace("l","").replace("Vg","").replace("y","").replace("Dg","").replace("Ag","").replace("Bg","").replace("e","").replace("Rg","").replace("h","").replace("Mg","").replace("o","").replace("x","") )# print(str)fire = open(save_file, 'w')fire.write(str)fire.close()print("Successfully get restore word!")

中文信息处理—已分词标注语料的抽取词表和文本还原相关推荐

  1. 中文信息处理(二)—— 分词

    文章目录 中文信息处理核心技术 中文分词 NLP任务层次 一.为什么分词? 二.分词为什么难? 三.常见的分词系统 四.几种分词方法 1. 基于词表的分词 1.1 主要思想 1.2 最大匹配分词法关键 ...

  2. 中文信息处理实验2——基于词表的分词

    目录 实验目的: 实验要求: 参考代码: 实验结果: 实验目的: 加深对汉语文本信息处理基础理论及方法的认识和了解,锻炼和提高分析问题.解决问题的能力.通过对具体项目的任务分析.数据准备.算法设计和编 ...

  3. 中文信息处理的主流技术是什么?

    中文信息处理的主流技术是什么? 从20世纪50年代初机器翻译课题被提出算起,自然语言处理(NLP)的研发历史至少也有50年了.90年代初,NLP的研究目标开始从小规模受限语言处理走向大规模真实文本处理 ...

  4. 中文开源汉语分词工具

    本文转载自:http://www.scholat.com/vpost.html?pid=4477 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些中文 ...

  5. 中文NLP的分词真有必要吗?李纪为团队四项任务评测一探究竟 | ACL 2019

    作者| Yuxian Meng.Xiaoya Li.Xiaofei Sun.Qinghong Han.Arianna Yuan. Jiwei Li 译者 | Rachel 责编 | Jane 出品 | ...

  6. 介绍几个专门面向中文的命名实体识别和关系抽取工具

    知识图谱已经在人工智能的各个领域发挥越来越重要的作用,例如视觉问答.对话系统.推荐系统等.知识图谱构建是应用这些知识图谱的基础,而面对生活和企业中数据的爆发式增长,自动化知识图谱构建显得越来越重要.从 ...

  7. 自然语言处理NLP中文分词,词性标注,关键词提取和文本摘要

    NLP相关工具包的介绍 1.1 jieba "结巴"中文分词,理念是做最好的 Python 中文分词组件. 支持三种分词模式: (1)精确模式,试图将句子最精确地切开,适合文本分析 ...

  8. 中文信息处理——纵览与建议

    中文信息处理--纵览与建议 (2007-04-11 22:25:49) 转载▼ 分类: 技术视野 2004年10月写的一个材料. ----------------------------------- ...

  9. 计算机信息处理技术的发展历程,中文信息处理技术发展简史.docx

    中文信息处理技术发展简史 张华平 (中国科学院计算技术研究所软件实验室北京100080) E-mail: zhanghp@sof[ware? Homepage: ; hMp://pipy_ 摘要:真正 ...

最新文章

  1. 从源码分析DEARGUI之add_tree_node
  2. 0X000000该内存不能read的解决方法
  3. python写程序求1-3+5-7+...-99+101的值-16-Python3-高价函数-提升效率必备
  4. 散射理论方程_非弹性中子磁散射方法简介之自旋波激发
  5. InfluxData【环境搭建 02】时序数据库客户端 InfluxCLI 最新版本安装启动验证(在线安装+离线安装及各版本下载地址)
  6. Python实训day07am【爬取数据接口、webdriver、自动化测试工具selenium】
  7. sed 中如何替换换行符
  8. 对话鲁直:蚂蚁金服中间件的开源头羊 | 穿山甲专访
  9. 武汉大学计算机系学哪些专业,武汉大学最好的专业是什么(10大热门专业排名)...
  10. SQL Server2005探索之---正确使用索引
  11. 如何通过百度翻译实现整站网页翻译
  12. 锂电池充电芯片,30款设计免费开源
  13. 翼支付门户架构之搭建SpringMvc环境
  14. 记一次失败的面试经历
  15. 【小y设计】二维码条形码打印编辑器
  16. 一支口红用了5年_一支口红多久该扔掉?保质期过了还能用吗?
  17. 基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
  18. Loki 收集Nginx日志以 grafana 可视化展示
  19. 【Celery】Celery的简易部署和应用
  20. 双系统平板刷linux系统下载软件,台电官方论坛 - Windows平板加装Ubuntu实现双系统的尝试,有图有真相 - 平板笔记本...

热门文章

  1. python学习笔记(对象)
  2. 转 Androidpn里的Xmpp的理解(消息推送)
  3. 《Image Effects 》第一章学习笔记(2)
  4. SQL查询字段约束名的语句
  5. 说说“数据库的自动安装、升级” [转]
  6. 计算机缺考学校知道吗,计算机二级机考缺考成绩单会不会显示缺考啊
  7. javascript---DOM---事件
  8. 洛谷 P4220 UOJ #347 通道 —— 随机化
  9. Eclipse 的控制台console乱码
  10. IOS端与Java端MD5加密方法