当前位置: 首页 > 工具软件 > Polyglot > 使用案例 >

Windows(10) Python polyglot安装和运行失败的问题

罗源
2023-12-01

环境

博主的环境为Python 3.7. polyglot 需要提前安装好numpylibicu-dev. 关于libicu-dev我们可以先放一放,只需要你有numpy

安装

  1. 第一步没什么好说的,我们直接 “win+R” ,输入cmd, 打开命令提示符。然后:
pip install polyglot

这个时候就看似“安装“好了,一般也不会报错,在代码中import也没有问题。

  1. 但是在运行的时候,会报错:
from polyglot.text import Text, Word

#######下面是报错
No module named 'icu'

表明这时候我们仍然缺少module.

  1. 缺什么补什么,我们只需要按照步骤安装好下列module就好。
       1)在这个网站上 https://www.lfd.uci.edu/~gohlke/pythonlibs/,下载我们需要的模块的三个whl文件:pycld2PyICUMorfessor.
        大家根据自己的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的意思。至于win32win_amd64如何选择,我们可以通过python自带的platform来看。
同样,打开Windows命令提示符,输入python,打开python.执行如下代码即可:

>>> import platform
>>> platform.machine()
'AMD64'

可以看到,博主的是AMD64,因此我下载第一个带有win_amd64字样的文件。

  1. 我们有了这三个包之后,我们需要安装,首先将它们拷贝到我们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进去也行。

  1. 打开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%20morpheme
这时候,我这里会报如下错误,当然各位要是没用这种错误是最好的。

from signal import signal, SIGPIPE, SIG_DFL
ImportError: cannot import name 'SIGPIPE'```

如何解决,我们需要进入安装好的polyglot文件夹中,它就位于上面说到的site-packages里面。

  1. 找到 _ _ main _ _ .py这个文件,打开并修改:
    我们找到这两行代码,然后注释掉,如下:
#from signal import signal, SIGPIPE, SIG_DFL
#signal(SIGPIPE, SIG_DFL)
  1. 找到downloader.py这个文件,打开并修改:
    我们首先找到def fromcsobj(csobj) 这个方法,然后把这个方法里面的所有的path.sep替换为 ‘/’,(注意,单引号不能省略)。

这就是我遇到的所有问题,希望能帮到有类似问题的朋友们。

 类似资料: