我如何才能将 var 传递到 MeCab for Python 中?
代码是:
import MeCab
m = MeCab.Tagger("-O wakati")
text = raw_input("Enter Japanese here: ")
print m.parse(text)
问题是,在将字符串输入 raw_input 后,它会在 IDLE 中给出错误:
Traceback (most recent call last):
File "C:\Users\---\Desktop\---\Python\japanesetest.py", line 5, in <module>
print m.parse(text)
File "C:\Users\---\Desktop\---\Python\lib\site-packages\MeCab.py", line 220...
def parse(self, *args): return _MeCab.Tagger_parse(self, *args)
TypeError: in method 'Tagger_parse', argument 2 of type 'char const *'
但是,如果我这样做:
import MeCab
m = MeCab.Tagger("-O wakati")
print m.parse('なるほど、マルコフ辞書のキーはタプルにしたほうがスッキリしますね。')
我得到正确的结果:
なるほど 、 マルコフ 辞書 の キー は タプル に し た ほう が スッキリ し ます ね 。
我尝试过的事情是开头的 unicode 标签,写入文本文件unicode 和解析文本,以及其他几百万件事。我正在运行 Python 2.7 和 MeCab 0.98。如果不能回答这个问题,即使对错误有一点了解也将不胜感激。
The code is:
import MeCab
m = MeCab.Tagger("-O wakati")
text = raw_input("Enter Japanese here: ")
print m.parse(text)
The problem is that after entering the string into the raw_input it gives an error in IDLE:
Traceback (most recent call last):
File "C:\Users\---\Desktop\---\Python\japanesetest.py", line 5, in <module>
print m.parse(text)
File "C:\Users\---\Desktop\---\Python\lib\site-packages\MeCab.py", line 220...
def parse(self, *args): return _MeCab.Tagger_parse(self, *args)
TypeError: in method 'Tagger_parse', argument 2 of type 'char const *'
If I do this however:
import MeCab
m = MeCab.Tagger("-O wakati")
print m.parse('なるほど、マルコフ辞書のキーはタプルにしたほうがスッキリしますね。')
I get the proper result:
なるほど 、 マルコフ 辞書 の キー は タプル に し た ほう が スッキリ し ます ね 。
Things I have tried are unicode tags at the beginning, writing to a textfile in unicode and parsing the text, and a few other million things. I'm running Python 2.7 and MeCab 0.98. If this can't be answer, even a little light shed on the error would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我能够在 IDLE 和 IPython 命令行中使用 Python 2.7 和 MeCab 0.98 成功运行您的代码片段。
但是,当从 UTF 文件读取时,在尝试解析文本时会出现错误。对于这些情况,我将文本显式编码为 shift-jis。您可以尝试这种技术。下面是一个例子。
I am able to run your snippet successfully using Python 2.7 and MeCab 0.98 in both IDLE and IPython command line.
However, when reading from a UTF file I will get errors when trying to parse the text. For those cases I explicitly encode the text to shift-jis. You might try this technique. Below is an example.
这是我当前的解决方法,应该可以帮助人们遇到同样的问题:
这里的破坏者是将 .read() 添加到 open func 中。为什么?也许你可以告诉我。 :/
This is my current workaround, and should help people coming across the same issue:
The deal-breaker here is adding .read() to the open func. Why? Maybe you can tell me. :/