Skip to main content
 首页 » 编程设计

python之CRFSuite功能列表中的BOS和EOS是什么意思,作用是什么

2024年10月24日31bjzhanghao

在 python-crf 包网站的 NER(命名实体识别)示例中,我们将此函数视为特征生成器:

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 

您可以在那里看到完整的教程: python-crfsuite NER example

正如您在添加有意义的特征后看到的那样 - 例如 word.lower 和 ... - 已附加两个特征。

features.append('EOS') 

和

features.append('BOS') 

我的问题是“BOS和EOS是什么意思,作用是什么?”

请您参考如下方法:

这些代表“句子的开头”和“句子的结尾”。对于没有前一个词/下一个词的词,它们用于代替“前一个词”和“下一个词”特征。