永发信息网

有哪位用过python的CRFsuite工具包么?python2.7,Windows系统,测试文件运行不成功,应该怎么使用?

答案:2  悬赏:80  手机版
解决时间 2021-02-01 09:37
  • 提问者网友:川水往事
  • 2021-01-31 20:05
有哪位用过python的CRFsuite工具包么?python2.7,Windows系统,工具包中的测试文件运行不成功,应该怎么使用?已经成功安装CRF工具包,但是不会用。请求大家帮忙,分享一些学习文档或经验,毕设是有关条件随机场的,跪谢!
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-01-31 20:35
在swig/python目录里有一个readme,你参考着做一次编译就可以成生。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

#!/usr/bin/env python

import crfsuite
import sys

# Inherit crfsuite.Trainer to implement message() function, which receives
# progress messages from a training process.
class Trainer(crfsuite.Trainer):
def message(self, s):
# Simply output the progress messages to STDOUT.
sys.stdout.write(s)

def instances(fi):
xseq = crfsuite.ItemSequence()
yseq = crfsuite.StringList()

for line in fi:
line = line.strip('\n')
if not line:
# An empty line presents an end of a sequence.
yield xseq, tuple(yseq)
xseq = crfsuite.ItemSequence()
yseq = crfsuite.StringList()
continue

# Split the line with TAB characters.
fields = line.split('\t')

# Append attributes to the item.
item = crfsuite.Item()
for field in fields[1:]:
p = field.rfind(':')
if p == -1:
# Unweighted (weight=1) attribute.
item.append(crfsuite.Attribute(field))
else:
# Weighted attribute
item.append(crfsuite.Attribute(field[:p], float(field[p+1:])))

# Append the item to the item sequence.
xseq.append(item)
# Append the label to the label sequence.
yseq.append(fields[0])

if __name__ == '__main__':
# This demonstrates how to obtain the version string of CRFsuite.
print crfsuite.version()

# Create a Trainer object.
trainer = Trainer()

# Read training instances from STDIN, and set them to trainer.
for xseq, yseq in instances(sys.stdin):
trainer.append(xseq, yseq, 0)

# Use L2-regularized SGD and 1st-order dyad features.
trainer.select('l2sgd', 'crf1d')

# This demonstrates how to list parameters and obtain their values.
for name in trainer.params():
print name, trainer.get(name), trainer.help(name)

# Set the coefficient for L2 regularization to 0.1
trainer.set('c2', '0.1')

# Start training; the training process will invoke trainer.message()
# to report the progress.
trainer.train(sys.argv[1], -1)
全部回答
  • 1楼网友:污到你湿
  • 2021-01-31 21:32
期待看到有用的回答!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯