Bootstrap

fudanNLP-使用


分类: NLP 69人阅读 评论(0) 收藏 举报

中文实体抽取-fudanNLP

1.input and output

A)中文分词:

InputStr = "媒体计算研究所成立了, 高级数据挖掘很难。 乐phone热卖!";

Dictionary {"数据挖掘","媒体计算研究所","phone"};

OutputStr1 = "媒体|计算|研究所|成立||高级|数据|挖掘|||||phone|热卖|";

OutputStr2 = "媒体计算研究所|成立||高级|数据挖掘||||乐phone|热卖|";

 

B)词性标注:

中文标签:[时间短语, 介词, 标点, 形容词, 惯用词, 人称代词, 拟声词, 地名, 省略词, 语气词, 指示代词, 叹词, 表情符, 网址, 从属连词, 机构名, 专有名, 型号名, 事件名, 副词, 序数词, 把动词, 方位词, 名词, 形谓词, 能愿动词, 结构助词, 品牌名, 趋向动词, 数词, 被动词, 时态词, 限定词, 并列连词, 量词, 人名, 动词, 疑问代词, 运算符]

英文标签:[JJ, DT, NT, PER, M, MOD, DV, NR, PNQ, PNP, NN, LOC, ON, VA, PNI, P, EVT, BDN, OD, URL, X, ORG, IJ, AS, EMO, AV, CS, ETC, BA, SP, PU, BEI, AD, LC, CC, CD, DSP, VV, IDIOM]

InputStr = "媒体计算研究所成立了,高级数据挖掘很难。乐phone很好!";

OutputStr1 媒体/名词 计算/名词 研究所/名词 成立/动词 了/时态词 ,/标点 高级/形容词 数据/名词 挖掘/名词 很/副词 难/形谓词 。/标点 乐phone/名词 很/副词 好/形谓词 !/标点

OutputStr2 媒体/NN 计算/NN 研究所/NN 成立/VV 了/AS ,/PU 高级/JJ 数据/NN 挖掘/NN 很/AD 难/VA 。/PU 乐phone/NN 很/AD 好/VA !/PU

 

加入词典

Dictinary {{"媒体计算","mypos1","mypos2"},{"phone","专有名"}}

OutputStr 媒体计算/mypos1 研究所/名词 成立/动词 了/时态词 ,/标点 高级/形容词 数据/名词 挖掘/名词 很/副词 难/形谓词 。/标点 乐phone/专有名 很/副词 好/形谓词 !/标点

 

C)命名实体识别:

InputStr = 新浪体育讯 北京时间4月15日03:00(英国当地时间14日20:00),2009/10赛季英格兰足球超级联赛第34轮一场焦点战在白鹿巷球场展开角逐,阿森纳客场1比2不敌托特纳姆热刺,丹尼-罗斯和拜尔先入两球,本特纳扳回一城。阿森纳仍落后切尔西6分(净胜球少15个),夺冠几成泡影。热刺近 7轮联赛取得6胜,继续以1分之差紧逼曼城。";

OutputStr = {本特纳=地名, 北京=地名, 拜尔=地名, 阿森纳=机构名, 切尔西=专有名, 丹尼-罗斯=地名, 白鹿巷=专有名, 英国=地名, 英格兰=地名, 新浪=机构名};

 

D)关键词抽取:

InputStr1 "甬温线特别重大铁路交通事故车辆经过近24小时的清理工作,26日深夜已经全部移出事故现场,之前埋下的D301次动车车头被挖出运走";

InputStr2 "甬温线|特别|重大|铁路交通事故车辆经过近24小时的清理工作,26日深夜已经全部移出事故现场,之前埋下的D301次动车车头被挖出运走";

抽取top10:

Output1 {甬温线=100, 运走=100, 事故=52, 工作=41, 深夜=36, 清理=36, 全部=33, 小时=30, 移出=30, 车辆=26};

Output1 {=100, 甬温线=87, 运走=87, 事故=76, =75, 移出=52, 之前=50, 全部=50, 现场=49, 已经=48};

 

 

2.分词器(对句子分词)

a) 原理:句子是一个以字为单位序列使用分类器(已经通过人工标注过的语料库训练过),对每个字进行标注(B,M,E,S.一共四类,缺省标签),并选择出一种标注情况,使得该情况发生的概率最大。B表示单词开始,M,表示单词中间,E表示单词末尾,S表示一个字单独成词。

b) 分词器训练:

i. Templets:序列标注特征模板组,包含不同的特征生成方式;

ii. Dataset:已经进行过人工标注的句子(以字为单位的序列);

iii. Trainer:通过线性模型(?)对参数进行训练

iv. 结果(Linear分类器):

1. Labels:缺省的标记组合:B,M,E,S

2. Features:特征值

3. Inference(推理类):包含预测序列用的weight[]

4. Loss

5. Update

C) 分词:

i. 给出句子(s c1c2..cn,以字为单位的序列).

Ii. 通过概率模型给字的标注进行打分.

Iii.通过维特比算法降低复杂度,求得打分最高的预测标签序列。

Iv.将上一步得到的标注过(B,M,E,S)的序列,组合成词语(B-M-...-M-E合成一个词)

d) 我们能做的:提供标注的训练集train.txt(xy(label)),选择用于抽取特征的模板templets

 

 

3. 词性标注

a) 原理:对分好的词的句子,进行词性标注。句子是一个以词为单位的序列,使用分类器(已经通过人工标注过的语料库训练过),对每个词进行标注(Labels),并选择出一种标注情况,使得该情况发生的概率最大。

b) 模型训练:同分词模型。将原来的字换成词,Labels({B,M,E,S})换成词性集合({POS}).

c) 词性标注:

i. 给出句子(s w1w2...w3,以词为单位);

ii. 通过概率模型给词的标注进行打分;

iii. 通过维特比算法降低复杂度,求得打分最高的预测标签序列。

C) 我们能做的:提供标注的训练集,选择用于特征提取的模板templets

 

4.命名实体抽取

a) 原理:从做好词性标注的词的序列中识别出属于某种给定类别的实体(人名|地名|机构名|专有名|)

b) 命名实体抽取:

i. 分词

ii. 词性标注

iii. 对于某一个词,判断他的词性是否属于某一类实体。比如说预定义的entity:

Pattern entitiesPattern  Pattern.compile("人名|地名|机构名|专有名");

C) 我们能做的:定义pattern,找出属于我们需要类别的entity

 

5.关键词抽取

a) 原理:TextRank

b) 关键词抽取过程:

i. 对一段String进行分词,变成word的序列;

ii. 构建一张以word为节点的图,word之间的relation为一条条有向边;

iii. 在图上进行迭代算法,求出每个点(word)的得分,得分越高表示关键程度越高;

iv. 选出其中得分前kword.

d) 我们可以做的:给出K

 

6.整个过程

a) 训练

i. 输入

1. 训练集

a) 标注字:{...,{字1,B},{字2,M},{字3,E},{字4,S},...}

b) 标注词:{...,{词1,词性},{词2,词性},{词5,词性},{词4,词性},{词3,词性}...}

2. Templets(16个模板)用于抽取特征值

Ii.提取labels

Iii.通过templets提取训练集中元素的features

iV.训练,调整参数

b)标注

I.输入

1.未标注的句子

2.训练好的模型(包括模板templets)

Ii.提取features

Iii.通过分类器获得最好的序列标注预测

Iv.将序列标注预测还原成我们需要的格式

;