corenlp分词 stanford_开源中文分词工具探析(六):Stanford CoreNLP

CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger)、命名实体识别(named entity recognizer (NER))、情感分析(sentiment analysis)等功能。

【开源中文分词工具探析】系列:

1. 前言

CoreNLP的中文分词基于CRF模型:

\[

P_w(y|x) = \frac{exp \left( \sum_i w_i f_i(x,y) \right)}{Z_w(x)}

\]

其中,\(Z_w(x)\)为归一化因子,\(w\)为模型的参数,\(f_i(x,y)\)为特征函数。

2. 分解

以下源码分析基于3.7.0版本,分词示例见SegDemo类。

模型

主要模型文件有两份,一份为词典文件dict-chris6.ser.gz:

// dict-chris6.ser.gz 对应于长度为7的Set数组词典

// 共计词数:0+7323+125336+142252+82139+26907+39243

ChineseDictionary::loadDictionary(String serializePath) {

Set[] dict = new HashSet[MAX_LEXICON_LENGTH + 1];

for (int i = 0; i <= MAX_LEXICON_LENGTH; i++) {

dict[i] = Generics.newHashSet();

}

dict = IOUtils.readObjectFromURLOrClasspathOrFileSystem(serializePath);

return dict;

}

词典的索引值为词的长度,比如第0个词典中没有词,第1个词典为长度为1的词,第6个词典为长度为6的词。其中,第6个词典为半成词,比如,有词“《双峰》(电”、“80年国家领”、“1824年英”。

另一份为CRF训练模型文件/ctb.gz:

CRFClassifier::loadClassifier(ObjectInputStream ois, Properties props) {

Object o = ois.readObject();

if (o instanceof List) {

labelIndices = (List>) o; // label索引

}

classIndex = (Index) ois.readObject(); // 序列标注label

featureIndex = (Index) ois.readObject(); // 特征

flags = (SeqClassifierFlags) ois.readObject(); // 模型配置

Object featureFactory = ois.readObject(); // 特征模板,用于生成特征

else if (featureFactory inst

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值