jpostal
这是libpostal的Java/JNI绑定,libpostal是一个快速、多语言的NLP库(用C语言编写),用于解析/规范化世界各地的物理地址。
用法
要将地址字符串扩展为适合地理编码器查询的规范化形式:
import com.mapzen.jpostal.AddressExpander;
// 单例,libpostal设置在构造函数中完成
AddressExpander e = AddressExpander.getInstance();
String[] expansions = e.expandAddress("Quatre vingt douze Ave des Champs-Élysées");
要将地址解析为组件:
import com.mapzen.jpostal.AddressParser;
// 单例,解析器设置在构造函数中完成
AddressParser p = AddressParser.getInstance();
ParsedComponent[] components = p.parseAddress("The Book Club 100-106 Leonard St, Shoreditch, London, Greater London, EC2A 4RH, United Kingdom");
for (ParsedComponent c : components) {
System.out.printf("%s: %s\n", c.getLabel(), c.getValue());
}
要使用在设置时已知数据目录的libpostal安装:
import com.mapzen.jpostal.AddressParser;
import com.mapzen.jpostal.AddressExpander;
AddressExpander e = AddressExpander.getInstanceDataDir("/some/path");
AddressParser p = AddressParser.getInstanceDataDir("/some/path");
构建libpostal
在构建Java绑定之前,您必须安装libpostal C库。确保您具备以下先决条件:
在Ubuntu/Debian上
sudo apt-get install curl autoconf automake libtool pkg-config
在CentOS/RHEL上
sudo yum install curl autoconf automake libtool pkgconfig
在Mac OSX上
brew install curl autoconf automake libtool pkg-config
安装libpostal
git clone https://github.com/openvenues/libpostal
cd libpostal
./bootstrap.sh
./configure --datadir=[...一些有几GB空间的目录...]
make
sudo make install
# 在Linux上最好运行
sudo ldconfig
注意:需要libpostal >= v0.3.3版本才能使用此绑定。
构建jpostal
只需要一个命令:
./gradlew assemble
这将利用gradle的NativeLibrarySpec支持来构建库的JNI/C部分,并将生成的共享库安装在java.library.path的预期位置。
在Java项目中使用
jpostal的JNI部分构建了需要在java.library.path上的共享对象文件(Linux上为.so,Mac上为.jniLib)。
运行gradle assemble
后,可以在构建目录下的./libs/jpostal/shared
中找到.so/.jniLib文件。对于运行测试,我们在这里显式设置了java.library.path。
兼容性
已知jpostal可以在Linux和Mac OSX(包括Mac silicon)上构建。
测试
要运行测试:
./gradlew check
许可证
该软件包根据MIT许可证的条款作为开源软件提供。