簡介
序列標注(Sequence Tagging)是一個比較簡單的NLP任務,但也可以稱作是最基礎的任務。序列標注的涵蓋范圍是非常廣泛的,可用於解決一系列對字符進行分類的問題,如分詞、詞性標注、命名實體識別、關系抽取等等。
有很多開源的中文分詞工具,jieba、pkuseg、pyhanlp...
序列標注一般可以分為兩類:
1、原始標注(Raw labeling):每個元素都需要被標注為一個標簽。
2、聯合標注(Joint segmentation and labeling):所有的分段被標注為同樣的標簽。
命名實體識別(Named entity recognition, NER)是信息提取問題的一個子任務,需要將元素進行定位和分類,如人名、組織名、地點、時間、質量等。
舉個NER和聯合標注的例子。一個句子為:Yesterday , George Bush gave a speech. 其中包括一個命名實體:George Bush。我們希望將標簽“人名”標注到整個短語“George Bush”中,而不是將兩個詞分別標注。這就是聯合標注。
BIO標注
解決聯合標注問題的最簡單的方法,就是將其轉化為原始標注問題。標准做法就是使用BIO標注。
BIO標注:將每個元素標注為“B-X”、“I-X”或者“O”。其中,“B-X”表示此元素所在的片段屬於X類型並且此元素在此片段的開頭,“I-X”表示此元素所在的片段屬於X類型並且此元素在此片段的中間位置,“O”表示不屬於任何類型。
比如,我們將 X 表示為名詞短語(Noun Phrase, NP),則BIO的三個標記為:
(1)B-NP:名詞短語的開頭
(2)I-NP:名詞短語的中間
(3)O:不是名詞短語
因此可以將一段話划分為如下結果;
我們可以進一步將BIO應用到NER中,來定義所有的命名實體(人名、組織名、地點、時間等),那么我們會有許多 B 和 I 的類別,如 B-PERS、I-PERS、B-ORG、I-ORG等。然后可以得到以下結果:
舉例:命名實體識別
一段待標注的序列$𝑋={𝑥_{1},𝑥_{2},...,𝑥_{n}}$,我們需要對該序列的每一個$𝑥_{i}$預測一個對應的Tag,在通常情況下,我們對tag進行如下定義:
- B - Begin,表示開始
- I - Intermediate,為中間字
- E - End,表示結尾
- S - Single,表示單個字符
- O - Other,表示其他,用於標記無關字符
常見標簽方案通常為三標簽或者五標簽法:
- IOB - 對於文本塊的第一個字符用B標注,文本塊的其它字符用I標注,非文本塊字符用O標注
- IOBES:
- B,即Begin,表示開始
- I,即Intermediate,表示中間
- E,即End,表示結尾
- S,即Single,表示單個字符
- O,即Other,表示其他,用於標記無關字符
這樣的tag並不是固定的,根據任務不同還可以對標簽有一系列靈活的變化或擴展。對於分詞任務,我們可以用同樣的標注方式來標注每一個詞的開頭、結尾,或單字。如詞性標注中,我們可以將標簽定義為:n、v、adj...而對於更細類別的命名實體識別任務,我們在定義的標簽之后加上一些后綴,如:B-Person、B-Location...這都可以根據你的實際任務來自行選擇。
處理序列標注問題的常用模型包括隱馬爾可夫模型(HMM)、條件隨機場(CRF)、BiLSTM + CRF。
可參考: https://www.cnblogs.com/sandwichnlp/p/11618530.htmlhttps://www.cnblogs.com/sandwichnlp/p/11618530.html