安装Python的crf++时候遇到的错误

Python010

安装Python的crf++时候遇到的错误,第1张

第一步 你会缺少crfpp.h,直接从/CRF++-0.58目录下复制过来就行

第二步 你会缺少crfpp.lib 需要自己vs编译生成比较麻烦 我已生成好了,可直接使用

第三步 你会缺少pthread.lib 也是直接提供文件下载就行

第四步 python setup.py build

python setup.py install

正常运行,但import CRFPP调用时提示缺少dll,此时复制windows包下的/CRF++-0.58的libcrfpp.dll到python\Lib\site-packages目录下即可

此时配置完成

在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 trainingthe training process will invoke trainer.message()

# to report the progress.

trainer.train(sys.argv[1], -1)