编辑:我已经更新了我下面的回溯
我知道这种问题已经被问了很多次了,但是我已经为这个问题挣扎了2天,仍然没有找到解决办法。
这里的例子是:我使用pycrfsuite
(CRF的python实现),这段代码引发了UnicodeEncodeError
。在
trainer = pycrfsuite.Trainer(verbose=True)
for xseq, yseq in zip(X_train, y_train):
trainer.append(xseq, yseq)
错误。。。在
^{pr2}$\u201d
是utf8
编码中的右双引号。此异常也针对\u201c
(左双引号)和\u2026
(省略号IIRC)引发
仅供参考,X_train
和{encoding='utf8', errors='ignore'
,但错误仍然存在
for file in filelist:
with open(self.datapath + "/" + file, "r", encoding='utf8', errors='ignore') as f:
raw_text = [(line.strip("\n").strip(" ").replace(" ", " ").replace(" ", " ")).split(" ") for line in f.readlines() if line != '\n']
data.extend(raw_text)
我的问题是:pycrfsuite
只支持ascii
编码吗?如果是的话,有什么解决方法可以为我提供吗?我的数据是越南语的,ascii无法表示,一个新的crf库是我最不想要的
提前谢谢。在
在
for
循环之前,可以对xseq
和yseq
上的每个字符串元素使用encode('utf-8')
方法。在我的
xseq
中的一个元素现在看起来像这样[b'nxtletter=<\xc3\xad']
这是我的密码
^{pr2}$extractFeatures
和extractLabels
函数上的编码行如下所示也许对你有用。祝你好运!在
pycrfsuite文档没有提到它们对特性值和键的Unicode支持。 我也不能从示例中判断,因为我不清楚它们是python2还是python3。 另外,我对Cython的了解还不足以通过阅读资料给你一个明确的答案。在
无论如何,我建议你尝试两种方法:
在你把钥匙送到图书馆之前,你自己先把钥匙编码一下。如果值也是字符串,也要对它们进行编码。也许库很乐意接受
bytes
对象。如果这不起作用(因为它确实想要ASCII),那么使用一些ASCII编码,例如使用
urlencode
或在字符串上调用Python的ascii()
内置函数。后者将使用反斜杠转义符和引号将'can’t'
编码为"'can\\u2019t'"
。这并不重要,因为分类器不关心特征键的外观,只要相同的输入产生相同的特征键。我希望这有帮助!在
相关问题 更多 >
编程相关推荐