SyntaxNet on MacOS

继上次配好了 TF 之后,由于需要 NLP,转而使用 Google 自家的模型 SyntaxNet

简单的配置在官方 git 中都有说明了,这里主要是两个问题的解决。

出现无法下载 gmock 的问题

1
no such package '@gmock_archive//': Error downloading from https://archive.openswitch.net/gmock-1.7.0.zip

QQ20160813-2
问题:大概是由于国内墙?或者是 Java 的问题,包没有下下来,或者验证不通过。
解决:那么手动下载它然后指定路径就行了吧。对于 bazel 一窍不通的我,翻了半天的配置,终于根据路径找到了配置下载地址的地方:

PATH
1
models/syntaxnet/tensorflow/tensorflow/workspace.bzl
Download gmock 到本地,我这里将它放到了tmp目录中
1
2
cd /tmp
wget https://archive.openswitch.net/gmock-1.7.0.zip
开启 python 的简单 http 服务
1
python -m SimpleHTTPServer 8000
并且修改下载路径为本地

修改 PATH 中的文件,gmock 的路径位于 79 行,将其从

1
url = "https://archive.openswitch.net/gmock-1.7.0.zip"

修改为

1
url = "http://localhost:8000/gmock-1.7.0.zip"

QQ20160813-0
QQ20160813-1

重新启动编译
1
bazel test --linkopt=-headerpad_max_install_names syntaxnet/... util/utf8/...

出现无法找到 python 的问题

1
ERROR: Cannot find 'external/org_tensorflow/util/python/python_lib'.  Did you run configure?

QQ20160813-3

问题:之前运行 configure 时配置的为 python_include 的路径,这儿找不到是因为 python_lib 的路径错误,默认路径为 /usr/lib/python2.7/site-packages 而我这儿不存在。

解决:参考 github issues #2703 中的方案,修改 configure 文件是一种解决方式,不过这儿修改 python_config.sh 更为恰当。

PATH

models/syntaxnet/tensorflow/util/python/python_config.sh

QQ20160813-5
QQ20160813-8

使用这个 python_config.sh 替换 PATH 路径中的文件
重新 configure,自动识别的路径应该已经是正确的了

QQ20160813-10

重新启动编译

QQ20160813-9