Beeferman 的 PK 和 WindowDIFF 的 Python NLTK 实现从两者的 python segeval 实现中得到完全不同的结果。
使用相同的参数。
hyp: 0100100000
ref: 0101000000
k=2
PK's SegEval:0.2222222
PK's NLTK:0.111111111
hyp: 111111
ref: 100100
k=2
PK's SegEval:0.4
PK's NLTK:0.64
对于使用它的人,这可能会导致不同的研究结果。
为什么我在这两个实现中使用 PK 得到不同的结果? PK必须只有一个结果。
可能是您调用 NLTK 函数的方式出了问题,或者您使用的是旧版本的 NLTK。
我得到的 NLTK 结果与您在 segeval 中显示的结果相同:
>>> from nltk.metrics.segmentation import pk
>>> hyp = '0100100000'
>>> ref = '0101000000'
>>> pk(hyp, ref, 2)
0.2222222222222222
>>> hyp = '111111'
>>> ref = '100100'
>>> pk(hyp, ref, 2)
0.4
我的 nltk 版本:
>>> nltk.__version__
'3.0.5'
这样做:
$ pip install -U nltk
我是一名优秀的程序员,十分优秀!