我正在尝试使用geniatagger在python中执行分块,这需要使用git clone下载。
按照here的说明,我下载并安装了geniatagger并导入了我的应用程序。
但是,当我尝试访问解析功能时,出现以下错误。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-867eea8ac07f> in <module>
1 my_bytes = "This is a pen.".encode()
2 print(type(my_bytes))
----> 3 x = tagger.parse(my_bytes)
~/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/geniatagger_python-0.1-py3.6.egg/geniatagger.py in parse(self, text)
33 results = list()
34
---> 35 for oneline in text.split('\n'):
36 self._tagger.stdin.write(oneline+'\n')
37 while True:
TypeError: a bytes-like object is required, not 'str'
这是我尝试过的代码。
tagger = GeniaTagger('./geniatagger/geniatagger')
# option1: my_bytes = "This is a pen.".encode()
# option2: my_bytes = b"This is a pen."
# option3: my_bytes = bytes("This is a pen.")
my_bytes = "This is a pen.".encode('utf8')
print(type(my_bytes))
x = tagger.parse(my_bytes)
当前,我得到上述错误作为输出。从技术上讲,这应该是输出。
>>> print tagger.parse('This is a pen.')
[('This', 'This', 'DT', 'B-NP', 'O'), ('is', 'be', 'VBZ', 'B-VP', 'O'), ('a', 'a', 'DT', 'B-NP', 'O'), ('pen', 'pen', 'NN', 'I-NP', 'O'), ('.', '.', '.', 'O', 'O')]
我将不胜感激。
答案 0 :(得分:0)
似乎代码不完全Python 3
兼容。
您传入了一个编码为字节的字符串,但是在line 35(for oneline in text.split('\n')
)上,变量text
的类型为字节,但是变量.split()
({{1 }})是一个字符串。这会导致错误。
您可以像这样在解释器中重现错误:
'\n'
您可以尝试在>>> 'asdasd'.encode().split('d')
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'
中输入字符串而不是字节,但是不知道这样是否可行。