• Stars
    star
    256
  • Rank 158,450 (Top 4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

人民日报语料处理工具集 | Tools for Corpus of People's Daily

人民日报语料库处理工具集

包含人民日报语料相关的处理脚本。 输出的格式为类似 CoNLL-U 格式

处理流程

  • 文件编码格式转换

  • 解析并转化语料库

这里详细介绍一下 解析并转化语料库 这一部分

解析语料库

因为原始的人民日报语料库格式存在嵌套语法等,导致其难以用规则的方法解析,这里使用了基于 plylex + yacc 的语法解析方案。

转换语料库(仅应用于 NER 数据)

  1. 1998语料库标注人名时,将姓和名分开标注,因此需要合并姓名,比如 王/nrf 小明/nrg 应该合并成 王小明/nr

  2. 中括号括起来的几个词表示大粒度分词,表意能力更强,需要将括号内内容合并,比如 [中央/n 人民/n 广播/vn 电台/n]nt 应该合并成 中央人民广播电台/nt

  3. 时间合并,例如将”1997年/t 3月/t” 合并成”1997年3月/t”

  4. 全角字符统一转为半角字符,尤其是数字的表示,比如:1998年/t 应该转换成 1998年/t

使用

预料下载

人民日报语料库是版权材料,本仓库不提供原始的人民日报语料库,但是用户登录官方网站后可以自行下载(任何人都可以注册)。

请访问 现代汉语多级加工语料库, 注册用户后方可下载语料库。 请下载 5-199801基本标注语料库-2003年版规范-20170612.rar ,解压缩后将文件 1998-01-2003版-带音.txt 放置到 ./data 目录下。

运行脚本

环境要求:python >= 3.5

安装依赖

pip install -r ./requirements.txt

转换文件编码

原始文件采用的是 gbk,需要将其转换成 utf-8 编码

python ./convert_encoding.py
默认输入和输出
  • 默认输入文件:data/1998-01-2003版-带音.txt

  • 输出文件:data/raw_data.txt

解析并转化语料库

将原始的语料库格式解析并转换成类似 CoNLL-U 格式

python ./parse_data.py

运行结束后,将得到文件 ./data/xxx.conllu

默认情况下,运行此文件将得到两个文件:data_False-True-True-False-False-False-False.conlludata_False-True-True-True-True-True-False.conllu

文件名中的 True False 对应着选项 merge_sub_tokenremove_geta_symbolextract_first_token_as_document_idmerge_family_namemerge_timereplace_double_byte_punctuationoutput_doc_id 的启用或者关闭。

data_False-True-True-False-False-False-False.conllu 是为了后续分词任务而准备的,它关闭了某些合并操作。

data_False-True-True-True-True-True-False.conllu 是为了后续 ENR 任务而准备的,它应用了某些合并操作。

默认输入和输出
  • 输入文件:data/raw_data.txt

  • 输出文件:data/conllu/data_False-True-True-False-False-False-False.conlludata/conllu/data_False-True-True-True-True-True-False.conllu

CoNLL-U 格式介绍

分割 train / dev / test

python ./split_data.py

默认按照 train 90% / dev 0% / test 10% 做的分割,所得到的文件分别为 train.conllu dev.conllu test.conllu ,位于 ./data/split_data 目录中。

默认输入和输出
  • 输入文件:data/conllu/data_False-True-True-True-True-True-False.conllu

  • 输出文件:data/split_data/train.conlludata/split_data/dev.conlludata/split_data/test.conllu

命名实体识别

原始的人民日报语料库中不包含实体信息,但是有 POS 信息,根据人民日报语料库的标注标准,特定类别的名词被标记成了特殊的 POS, 因此可以利用这些信息来完成提取实体的工作。 根据1998语料库的词性标记说明,词性标记:tnrnsnt 依次对应的实体是时间(DATE)、人名(PERSON)、地名(GPE)、组织机构名(ORG, organization)。

本项目的 NER 标记系统支持:

默认使用的 BIO 系统。

CRF++ 格式

CRF 系统所需的格式与 CoNLL-U 格式不太一致(CoNLL-U 格式比 CRF 格式多第一列的 index),需要经过转换。

基于词(word)的 NER

python ./conll_to_word_crfpp.py

所得到的文件位于 ./data/split_crfpp 目录中。

默认输入和输出
  • 输入文件:data/split_data/train.conlludata/split_data/dev.conlludata/split_data/test.conllu

  • 输出文件:data/split_crfpp/train.txtdata/split_crfpp/dev.txtdata/split_crfpp/test.txt

所得文件样例如下:

1997年  B-DATE
的  O
最后  O
一  O
天  O
,  O
得克萨斯州  B-GPE
联邦  O
地方  O
法官  O
肯代尔  B-PERSON
的  O

基于字(char)的 NER

python ./conll_to_char_crfpp.py

所得到的文件位于 ./data/split_char_crfpp 目录中。

默认输入和输出
  • 输入文件:data/split_data/train.conlludata/split_data/dev.conlludata/split_data/test.conllu

  • 输出文件:data/split_char_crfpp/train.txtdata/split_char_crfpp/dev.txtdata/split_char_crfpp/test.txt

所得文件样例如下:

1  B-DATE
9  I-DATE
9  I-DATE
7  I-DATE
年  L-DATE
的  O
最  O
后  O
一  O
天  O
,  O
得  B-GPE
克  I-GPE
萨  I-GPE
斯  I-GPE
州  L-GPE
联  O
邦  O
地  O
方  O
法  O
官  O
肯  B-PERSON
代  I-PERSON
尔  L-PERSON
的  O

中文分词

空白分割格式

python ./split_data_to_token.py

所得到的文件分别为 train.txt dev.txt test.txt ,位于 ./data/split_token 目录中。

CRF++ 格式

python ./split_token_to_token_conll.py

所得到的文件分别为 train.txt dev.txt test.txt ,位于 ./data/split_conll 目录中。

TODO

  • 增加自定义输入输入的 CLI 入口

致谢

转换语料库 部分参考了文章 达观数据如何打造一个中文NER系统 的内容

More Repositories

1

unlocking-the-power-of-llms

使用 Prompts 和 Chains 让 ChatGPT 成为神奇的生产力工具!Unlocking the power of LLMs.
Shell
2,319
star
2

Chinese_models_for_SpaCy

SpaCy 中文模型 | Models for SpaCy that support Chinese
Jupyter Notebook
608
star
3

hanzi_char_featurizer

汉字字符特征提取器 (featurizer),提取汉字的特征(发音特征、字形特征)用做深度学习的特征 | A Chinese character feature extractor, which extracts the features of Chinese characters (pronunciation features, glyph features) as features for deep learning
Python
271
star
4

hanzi_chaizi

汉字拆字库,可以将汉字拆解成偏旁部首,在机器学习中作为汉字的字形特征
Python
263
star
5

WeatherBot

一个基于 Rasa 的中文天气情况问询机器人(chatbot), 带 Web UI 界面
235
star
6

MicroTokenizer

一个微型&算法全面的中文分词引擎 | A micro tokenizer for Chinese
Python
139
star
7

ATIS_dataset

The ATIS (Airline Travel Information System) Dataset
Python
131
star
8

rasa_chinese

rasa_chinese 专门针对中文语言的 rasa 组件扩展包,提供了许多针对中文语言的组件
Python
119
star
9

seq2annotation

基于 TensorFlow & PaddlePaddle 的通用序列标注算法库(目前包含 BiLSTM+CRF, Stacked-BiLSTM+CRF 和 IDCNN+CRF,更多算法正在持续添加中)实现中文分词(Tokenizer / segmentation)、词性标注(Part Of Speech, POS)和命名实体识别(Named Entity Recognition, NER)等序列标注任务。
Python
82
star
10

MITIE_Chinese_Wikipedia_corpus

Pre-trained Wikipedia corpus by MITIE
52
star
11

chinese-wikipedia-corpus-creator

Corpus creator for Chinese Wikipedia
Python
42
star
12

MicroRegEx

一个微型的正则表达式引擎 | A micro regular expression engine
Jupyter Notebook
37
star
13

Chinese_tokenizer_benchmark

中文分词软件基准测试 | Chinese tokenizer benchmark
Python
21
star
14

rasa_contrib

rasa_contrib is a addon package for rasa. It provide some useful/powerful addition components
Python
21
star
15

NLU_benchmark_dataset

自然语言理解 基准测试 数据集 | Benchmark datasets for Natural Language Understanding (NLU)
Python
21
star
16

corpus_dataset_for_Chinese_NLP

中文 NLP 语料库数据集
18
star
17

four_corner_method

中文「四角号码」数据与工具,可以将汉字拆解成和字形相关的编码,在机器学习中作为汉字的字形特征
HTML
18
star
18

scel2txt

搜狗细胞词库到普通文本的转换提取工具。提取词汇表,用于深度学习做数据生成和字典特征
Python
17
star
19

vimapt

A package manager for vim (VimApt => Vim's Advanced Package Tools)
Python
16
star
20

tf_crf_layer

CRF(Conditional Random Field) Layer for TensorFlow 1.X with many powerful functions
Python
16
star
21

rasa_chinese_service

rasa_chinese 的服务 package
Python
16
star
22

MicroCompiler

一个微型的 LL/LR/LALR 语法解析器 | A micro compiler project to provide LL/LR/LALR syntax parser
Python
15
star
23

WeatherBot_Action

Action server for WeatherBot
Python
14
star
24

WeatherBot_UI

WebChat UI (HTML pages) for WeatherBot
HTML
14
star
25

PaddleTokenizer

使用 PaddlePaddle 实现基于深度神经网络的中文分词引擎 | A DNN Chinese Tokenizer by Using PaddlePaddle
JavaScript
14
star
26

MicroHMM

一个微型的基于 Python 的 HMM (隐马尔可夫模型) 包 | A micro python package for HMM (Hidden Markov Model)
Python
13
star
27

MicroWeatherBot_CN

基于 rasa 1.x 版本搭建的中文天气查询 demo | A simple & micro Chinese Weatherbot based on rasa framework
Python
12
star
28

WeatherBot_Core

Python
10
star
29

entity2embedding

A python package for word2vec
Python
7
star
30

MicroWeatherBot_EN

基于 rasa 1.x 版本搭建的英文天气查询 demo | A simple & micro English Weatherbot based on rasa framework
Python
7
star
31

q_learning_demo

Show how Q-learning works from scratch
Jupyter Notebook
5
star
32

PaddleNER

JavaScript
3
star
33

basic_weather_bot_server

Python
3
star
34

MicroCPUID

A micro tool based on assembly language to detect and display CPU information
Assembly
3
star
35

SDMdata

JavaScript
3
star
36

ner_offline_evaluate

Python
2
star
37

howl-anderson.github.io

HTML
2
star
38

howl-anderson

2
star
39

hanzi_char_lookup_feature

基于字典的方法给字符提供额外的特征,常用于基于深度学习的NER
Python
2
star
40

AIMLChatRobot

Python
1
star
41

how_Chinese_tokenizer_works

Python
1
star
42

google-io-keras-vae

Code for Google IO 2021 Modern Keras design patterns session
Jupyter Notebook
1
star
43

MicroTagger

一个微型的用于提取 Part-Of-Speech (POS) 的 Python 包 | A micro python library for NLP Tagger of Part-Of-Speech (POS)
Python
1
star
44

Assignment_for_Natural_Language_Processing_with_Deep_Learning_CS224n_By_Stanford_University

Assignment for CS224n: Natural Language Processing with Deep Learning By Stanford University
Python
1
star
45

sdmvspecies

SDMvspecies is R package to create virtual species (virtual data or artificial data) for SDM (Species Distribution Modelling)
R
1
star