fudanNLP-使用

中文實體抽取-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.將序列標註預測還原成我們需要的格式

發佈了45 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章