问题描述
我正在尝试利用SimpleTagger来使用Mallet(版本2.0.8)进行序列标记,但是我可能做错了。 我按照描述的示例here进行操作,然后得到了与描述不同的结果:
要创建模型文件,我键入了命令:
java -cp
"/home/MyFolders/mallet/class:/home/MyFolders/mallet/lib/mallet-deps.jar” cc.mallet.fst.SimpleTagger --train true --model-file nouncrf sample
Bill CAPITALIZED noun
slept non-noun
here LOWERCASE STOPWORD non-noun
构建模型(nouncrf)之后,我将按照本教程进行操作并移动以标记以下文本(文件名为stest
):
CAPITAL Al
slept
here
使用命令:
java -cp
"/home/MyFolders/mallet/class:/home/MyFolders/mallet/lib/mallet-deps.jar"
cc.mallet.fst.SimpleTagger --model-file nouncrf stest
结果应为:
Number of predicates: 5
noun CAPITAL Al
non-noun slept
non-noun here
但是我得到了
Number of predicates: 9
noun
non-noun
non-noun
问:
- 为什么我的输出中只有带有原始单词的标签(如本教程所示)?
- 为什么在stest文件中,名字(Al)前面有大写字母?在现实世界中,单词“按原样”出现。
- 我尝试了其他一些训练数据(3000个带标记的句子,并定义了标签),但是在对模型进行训练以移动以标记新数据后,我遇到了与上述相同的问题(我只得到了标记),此外几乎所有我要标记的文字中的单词得到了完全相同的标签,即使在训练数据中从未被该标签标记过的单词仍然得到它,怎么可能呢?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)