Hanlp自然语言处理中的词典格式说明


使用过 hanlp的都知道hanlp中有许多词典,它们的格式都是非常相似的,形式都是文本文档,随时可以修改。本篇文章详细介绍了hanlp中的词典格式,以满足用户自定义的需要。

基本格式

词典分为词频词性词典和词频词典。

1、 词频词性词典(如 CoreNatureDictionary.txt)

1 每一行代表一个单词,格式遵从 [单词] [词性A] [A的频次] [词性B] [B的频次] ...。

2 支持省略词性和频次,直接一行一个单词。

3 .txt词典文件的分隔符为空格或制表符,所以不支持含有空格的词语。如果需要支持空格,请使用英文逗号,分割的纯文本.csv文件。在使用Excel等富文本编辑器时,则请注意保存为纯文本形式。

2、 词频词典(如 CoreNatureDictionary.ngram.txt)

1 每一行代表一个单词或条目,格式遵从 [单词] [单词的频次]。

2 每一行的分隔符为空格或制表符。

少数词典有自己的专用格式,比如同义词词典兼容《同义词词林扩展版》的文本格式,而转移矩阵词典则是一个 csv表格。

下文主要介绍通用词典,如不注明,词典特指通用词典。

数据结构

Trie树(字典树)是HanLP中使用最多的数据结构,为此,我实现了通用的Trie树,支持泛型、遍历、储存、载入。

用户自定义词典采用 AhoCorasickDoubleArrayTrie和二分Trie树储存,其他词典采用基于双数组Trie树(DoubleArrayTrie)实现的AC自动机AhoCorasickDoubleArrayTrie。关于一些常用数据结构的性能评估,请参考wiki。

储存形式

词典有两个形态:文本文件 (filename.txt)和缓存文件(filename.txt.bin或filename.txt.trie.dat和filename.txt.trie.value)。

1、 文本文件

· 采用明文储存, UTF-8编码,CRLF换行符。

2、 缓存文件

1 就是一些二进制文件,通常在文本文件的文件名后面加上 .bin表示。有时候是.trie.dat和.trie.value。后者是历史遗留产物,分别代表trie树的数组和值。

2 如果你修改了任何词典,只有删除缓存才能生效。

修改方法

HanLP的核心词典训练自人民日报2014语料,语料不是完美的,总会存在一些错误。这些错误可能会导致分词出现奇怪的结果,这时请打开调试模式排查问题:

 

HanLP.Config.enableDebug();

 

1 核心词性词频词典

a) 比如你在 data/dictionary/CoreNatureDictionary.txt中发现了一个不是词的词,或者词性标注得明显不对,那么你可以修改它,然后删除缓存文件使其生效。

B) 目前 CoreNatureDictionary.ngram.txt的缓存依赖于CoreNatureDictionary.txt的缓存,修改了后者之后必须同步删除前者的缓存,否则可能出错

2 核心二元文法词典

a) 二元文法词典 data/dictionary/CoreNatureDictionary.ngram.txt储存的是两个词的接续,如果你发现不可能存在这种接续时,删掉即可。

B) 你也可以添加你认为合理的接续,但是这两个词必须同时在核心词典中才会生效。

3 命名实体识别词典

a 基于角色标注的命名实体识别比较依赖词典,所以词典的质量大幅影响识别质量。

b 这些词典的格式与原理都是类似的,请阅读相应的文章或代码修改它。

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31524777/viewspace-2638447/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31524777/viewspace-2638447/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值