OpenGrm Pynini 是一个由 K.Gorman 开发的开源有限状态传感器 Python 库,可在此处下载:http://www.openfst.org/twiki/bin/view/GRM/Pynini
我希望能够使用最新的 Pynini 版本 2.0.8 在我的 Windows 10 笔记本电脑上使用 PyCharm/IntelliJ 进行开发。问题是 Pynini 依赖于 C++ OpenFST 1.7.3显然,在 Windows 上构建存在一些问题。
到目前为止我找到的解决方案或解决方法是:
- 使用我在 github.com:kkm000/openfst 上找到的“OpenFST 库到 Windows 的端口”但 1.7.3 版本还没有,对某些人来说可能是个问题。
- 使用Cygwin或mingw-w64正如 stackoverflow.com 上的建议:Issues installing pynini
但是有没有其他简单的方法可以像使用 Debian for Windows Subsystem for Linux (WSL) 一样工作?
最佳答案
所以,我花了一些时间尝试实现这一目标,我发现这个设置效果非常好,因此我决定将其发布在这里,以防它可以帮助某人。 与 PyCharm(专业版)的集成效果非常好,您不需要任何 Linux 盒子、shell 或 ssh 隧道。 PyCharm 可以看到您的 WSL 实例,它会自动启动它,并在您运行脚本时调用您的 python 解释器。
以下是我为完成设置而执行的所有步骤:
安装 Debian WSL
从 Microsoft Store 安装并设置 Debian 实例
然后根据 Pynini 自述文件,这是我们需要的:
- 海湾合作委员会 > 4.8
- 使用
./configure --enable-grm
和 header 构建 OpenFST 1.7.3 - Python 版本:2.7 或 3.6+ 以及 header
安装 GCC
sudo apt update && sudo apt -y upgrade
sudo apt install build-essential # to install GCC and others build libs and tools
安装 OpenFST
我们需要安装wget
才能下载openfst和pynini。
sudo apt install wget
cd /usr/local/src
sudo wget http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.7.3.tar.gz
sudo tar -xvf openfst-1.7.3.tar.gz && sudo chown -R root:root openfst-1.7.3
cd openfst-1.7.3 && sudo ./configure --enable-grm
sudo make && sudo make install
安装 Pynini
首先我们需要安装Python
sudo apt install python3 python3-dev python3-pip python3-venv
然后下载并构建Pynini;抱歉,我沉迷于虚拟环境:
python3 -m venv ~/venv373; 。 〜/venv373/bin/activate;
cd/usr/local/src
sudo wget http://www.opengrm.org/twiki/pub/GRM/PyniniDownload/pynini-2.0.8.tar.gz
sudo tar -xvf pynini-2.0.8.tar.gz && sudo chown -R 1000:1000 pynini-2.0.8
cd/usr/local/src/pynini-2.0.8
sudo env PATH='$PATH'; python setup.py install;
就是这样,Pynini 应该已安装。
PyCharm 集成
请注意,与 WSL 的集成仅适用于 PyCharm/IntelliJ Professional 版本。
以下是有关如何在 PyCharm 中添加 WSL python 解释器的链接:https://www.jetbrains.com/help/pycharm/using-wsl-as-a-remote-interpreter.html
我的 IntelliJ 的一张屏幕截图,您可以在其中看到 import pynini
语句已被识别,并且自动完成功能也能正常工作。
关于python - 如何在 Windows 10 上安装和使用 Pynini?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898360/