簡體   English   中英

crfsuite中文本特征的數值轉換

[英]Numeric conversion of textual features in crfsuite

我正在查看 crfsuite-python 文檔中提供的示例代碼,它具有以下用於特征定義的代碼。

def word2features(sent, i):
word = sent[i][0]
postag = sent[i][1]

features = [
    'bias',
    'word.lower=' + word.lower(),
    'word[-3:]=' + word[-3:],
    'word[-2:]=' + word[-2:],
    'word.isupper=%s' % word.isupper(),
    'word.istitle=%s' % word.istitle(),
    'word.isdigit=%s' % word.isdigit(),
    'postag=' + postag,
    'postag[:2]=' + postag[:2],
]
if i > 0:
    word1 = sent[i-1][0]
    postag1 = sent[i-1][1]
    features.extend([
        '-1:word.lower=' + word1.lower(),
        '-1:word.istitle=%s' % word1.istitle(),
        '-1:word.isupper=%s' % word1.isupper(),
        '-1:postag=' + postag1,
        '-1:postag[:2]=' + postag1[:2],
    ])
else:
    features.append('BOS')
    
if i < len(sent)-1:
    word1 = sent[i+1][0]
    postag1 = sent[i+1][1]
    features.extend([
        '+1:word.lower=' + word1.lower(),
        '+1:word.istitle=%s' % word1.istitle(),
        '+1:word.isupper=%s' % word1.isupper(),
        '+1:postag=' + postag1,
        '+1:postag[:2]=' + postag1[:2],
    ])
else:
    features.append('EOS')
            
return features

我知道諸如 isupper() 之類的特征可以是 0 或 1,但是對於諸如 word[-2:] 之類的特征,它們是字符,它們如何轉換為數字項?

CRF 對輸入數據序列進行訓練,以學習從一個 state(標簽)到另一個的轉換。 為了啟用這樣的算法,我們需要定義考慮到不同轉換的特征。 在下面的 function word2features() 中,我們將每個單詞轉換為描述以下屬性或特征的特征字典:

lower case of word
suffix containing last 3 characters
suffix containing last 2 characters
flags to determine upper-case, title-case, numeric data and POS tag

我們還附加與前一個和下一個單詞或標簽相關的屬性,以確定句子的開頭 (BOS) 或句子的結尾 (EOS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM