Что означают BOS и EOS в списке функций CRFSuite и какова их роль?

В примере NER (распознавание именованных объектов) на веб-сайте пакета python-crf мы видим эту функцию как генератор функций:

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

Вы можете увидеть завершенный учебник здесь: пример NER python-crfsuite

Как вы видите, после добавления значимых функций, таких как word.lower и ..., были добавлены две функции.

features.append('EOS')

а также

features.append('BOS')

Мой вопрос: «Что означают BOS и EOS и какова их роль?»


person mhbashari    schedule 13.07.2015    source источник


Ответы (1)


Они обозначают «Начало предложения» и «Конец предложения». Они используются вместо функций «предыдущее слово» и «следующее слово» для слов, у которых нет предыдущего/следующего слова.

person Mzzzzzz    schedule 08.09.2015