首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >crfsuite中文本特征的数值转换

crfsuite中文本特征的数值转换
EN

Stack Overflow用户
提问于 2020-05-23 21:13:56
回答 1查看 62关注 0票数 1

我查看了crfsuite-python文档中提供的示例代码,其中包含以下用于定义特性的代码。

代码语言:javascript
复制
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这样的特征是字符,它们是如何转换成数字术语的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 12:12:12

CRF对输入数据序列进行训练,以学习从一种状态(标签)到另一种状态的转换。要启用这样的算法,我们需要定义考虑不同转换的功能。在下面的函数word2features()中,我们将每个单词转换为描述以下属性或特征的特征字典:

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61972579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档