用于阿拉伯文本的 Python ISRIStemmer

use*_*966 4 python utf-8 arabic stemming

我在 IDLE(Python) 上运行以下代码,我想输入阿拉伯语字符串并获取它的词干,但实际上它不起作用

>>> from nltk.stem.isri import ISRIStemmer
>>> st = ISRIStemmer()
>>> w= '?????'
>>> join = w.decode('Windows-1256')
>>> print st.stem(join).encode('Windows-1256').decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

运行它的结果是 w 中相同的文本,即 '?????' 这不是词干

但是什么时候执行以下操作:

>>> print st.stem(u'????????')
Run Code Online (Sandbox Code Playgroud)

结果成功并返回'???'的词干

为什么将一些单词传递给 stem() 函数不会返回词干?

MZe*_*MZe 7

上面的代码在 Python 3 中不起作用,因为我们正在尝试解码已经解码的对象。因此,不再需要从 UTF-8 解码。

这是在 Python 3 中应该可以正常工作的新代码。

import nltk
from nltk.stem.isri import ISRIStemmer
st = ISRIStemmer()
w= '?????'
print(st.stem(w))
Run Code Online (Sandbox Code Playgroud)


use*_*966 4

好的,我自己使用以下方法解决了这个问题:

\n
w = '\xd8\xad\xd8\xb1\xd9\x83\xd8\xa7\xd8\xaa' \nst.stem(w.decode('utf-8'))\n
Run Code Online (Sandbox Code Playgroud)\n

它正确地给出了根,即"\xd8\xad\xd8\xb1\xd9\x83"

\n