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

标签 python named-entity-recognition crf

在 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是什么意思,作用是什么?”

最佳答案

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

关于python - CRFSuite功能列表中的BOS和EOS是什么意思,作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386459/

相关文章:

python - pycrypto : No module named strxor

tensorflow - 如何在 NER 上使波斯语的 spacy 训练更快

python - NLTK 中的 TypeError : must be unicode, 不是 str

python - 线性链 CRF 分类器使用哪个激活函数?

python - Django 模型 'values()' 和 LEFT OUTER 连接

python - 在 python 类型提示中,如何使参数接受基类的任何子类?

python - 方程对同一个变量返回不同的值

Python PyNER 库不提供任何输出

spacy - 在spaCy中,为什么 '\n'经常被英文NER标记为GPE?

python - 如何在Tensorflow 2中使用CRF层(使用tfa.text)?