博主的环境为Python 3.7. polyglot 需要提前安装好numpy和libicu-dev. 关于libicu-dev我们可以先放一放,只需要你有numpy。
这个时候就看似“安装“好了,一般也不会报错,在代码中import也没有问题。
但是在运行的时候,会报错: from polyglot.text import Text, Word #######下面是报错 No module named 'icu'表明这时候我们仍然缺少module.
缺什么补什么,我们只需要按照步骤安装好下列module就好。 1)在这个网站上 https://www.lfd.uci.edu/~gohlke/pythonlibs/,下载我们需要的模块的三个whl文件:pycld2,PyICU和Morfessor. 大家根据自己的python版本和Windows选择具体的whl文件下载. 这里举个例子,博主是py3.7, 比如我要下载PyICU,我在网址上找到这样子两个文件: PyICU‑2.4.3‑cp37‑cp37m‑win_amd64.whl PyICU‑2.4.3‑cp37‑cp37m‑win32.whl这里,cp37就是python 3.7的意思。至于win32和win_amd64如何选择,我们可以通过python自带的platform来看。 同样,打开Windows命令提示符,输入python,打开python.执行如下代码即可:
>>> import platform >>> platform.machine() 'AMD64'可以看到,博主的是AMD64,因此我下载第一个带有win_amd64字样的文件。
我们有了这三个包之后,我们需要安装,首先将它们拷贝到我们python的site-packages文件夹内。至于这个文件夹在哪里,请看下面: 一般来说,默认安装的python在: C:\Users\你的用户名\AppData\Local\Programs\Python\Python37```这里,Users就是C盘里面那个用户文件夹。 python的lib都存在Lib下的site-packages文件夹中:
C:\Users\你的用户名\AppData\Local\Programs\Python\Python37\Lib\site-packages拷贝后,我们在该文件夹里面,按住“shift”同时点击鼠标右键,选择“在此处打开Powershell窗口”,当然,你选择用命令提示行慢慢cd进去也行。
打开Powershell后,安装我们的module,输入如下命令: pip install pycld2‑0.41‑cp37‑cp37m‑win_amd64.whl pip install PyICU‑2.4.3‑cp37‑cp37m‑win_amd64.whl pip install Morfessor‑2.0.6‑py3‑none‑any.whl这里就完成了。
我是在看《Python自然语言处理》这本书,运行第三章的代码时候出错。
from polyglot.text import Text, Word word = "unexpected" text = "disagreement" text1 = "disagree" text2 = "agreement" text3 = "quirkiness" text4 = "historical" text5 = "canonical" text6 = "happiness" text7 = "unkind" text8 = "dogs" text9 = "expected" words_derv = ["happiness", "unkind"] word_infle = ["dogs", "expected"] words = ["unexpected", "disagreement", "disagree", "agreement", "quirkiness", "canonical" "historical"] def polyglot_stem(): print ("\nDerivational Morphemes using polyglot library") for w in words_derv: w = Word(w, language="en") print("{:<20}{}".format(w, w.morphemes)) print ("\nInflectional Morphemes using polyglot library") for w in word_infle: w = Word(w, language="en") print("{:<20}{}".format(w, w.morphemes)) print ("\nSome Morphemes examples using polyglot library") for w in word_infle: w = Word(w, language="en") print("{:<20}{}".format(w, w.morphemes)) if __name__ == "__main__": polyglot_stem()这里会报出很奇怪的错误,我们在使用morphemes的时候,需要下载polyglot已经做好的模型,比如morph2.en对应英文的形态分析的模型。下载方法如下,在你的项目文件所在的目录下,输入:
polyglot download morph2.en更多的模型下载方法可以看这里:https://polyglot.readthedocs.io/en/latest/MorphologicalAnalysis.html?highlight=word morpheme 这时候,我这里会报如下错误,当然各位要是没用这种错误是最好的。
from signal import signal, SIGPIPE, SIG_DFL ImportError: cannot import name 'SIGPIPE'```如何解决,我们需要进入安装好的polyglot文件夹中,它就位于上面说到的site-packages里面。
找到 _ _ main _ _ .py这个文件,打开并修改: 我们找到这两行代码,然后注释掉,如下: #from signal import signal, SIGPIPE, SIG_DFL #signal(SIGPIPE, SIG_DFL) 找到downloader.py这个文件,打开并修改: 我们首先找到def fromcsobj(csobj) 这个方法,然后把这个方法里面的所有的path.sep替换为 ‘/’,(注意,单引号不能省略)。这就是我遇到的所有问题,希望能帮到有类似问题的朋友们。