11个版本
0.6.4 | 2021年4月24日 |
---|---|
0.6.3 | 2021年4月18日 |
0.5.3 | 2021年4月1日 |
0.5.1 | 2021年3月31日 |
0.4.6 | 2021年2月20日 |
#587 在 科学
1,271 每月下载次数
在 2 crates 中使用
360KB
9K SLoC
nlprule-build
此crate提供了一个构建器,使其更容易使用nlprule的正确二进制文件。它还提供
- 用于从其发行源下载二进制文件的实用函数。
- 用于创建nlprule构建目录的脚本。
开发
如果您正在使用nlprule的开发版本,构建器可以自己构建二进制文件(而不是仅获取它们)
let nlprule_builder = nlprule_build::BinaryBuilder::new(
&["en"],
std::env::var("OUT_DIR").expect("OUT_DIR is set when build.rs is running"),
)
// this specifies that the binaries should be built if they are not found
.fallback_to_build_dir(true)
.build()
.validate();
在这种情况下,您应该在您的 Cargo.toml
中设置
[profile.dev]
build-override = { opt-level = 2 }
否则构建可能会很慢。
以下信息介绍了如何获取nlpruile构建目录以及如何构建和测试nlprule二进制文件。作为用户,您通常不需要这样做。
构建和测试nlprule二进制文件
构建nlprule二进制文件需要相应语言的构建目录。最新的构建目录存储在Backblaze B2上。从https://f000.backblazeb2.com/file/nlprule/en.zip(根据语言代码调整为其他语言)下载它们。
有关如何创建构建目录的信息,请参阅创建构建目录。
然后可以使用compile
目标构建二进制文件,例如:
RUST_LOG=INFO cargo run --all-features --bin compile -- \
--build-dir data/en \
--tokenizer-out storage/en_tokenizer.bin \
--rules-out storage/en_rules.bin
这会警告Rules
中的错误,因为并非所有语法规则都受支持,但不应在Tokenizer
中报告任何错误。
要测试分词器二进制文件,请运行例如:
RUST_LOG=WARN cargo run --all-features --bin test_disambiguation -- --tokenizer storage/en_tokenizer.bin
要测试语法规则二进制文件,请运行例如:
RUST_LOG=WARN cargo run --all-features --bin test -- --tokenizer storage/en_tokenizer.bin --rules storage/en_rules.bin
创建构建目录
nlprule 需要构建文件来构建规则和分词二进制文件。这些构建文件包含例如语法和歧义消除规则的 XML 文件、包含单词及其相关词性标签/词元以及一些用于优化的数据的词典。总而言之,它们构成了 构建目录。每种语言都有自己的构建目录。
可以使用 make_build_dir.py
生成语言的构建目录。运行 python make_build_dir.py --help
(或查看源代码)获取更多信息。
以下是用于构建 nlprule 支持的语言的构建目录的命令(当然,路径需要根据您的设置进行调整)
英语
python build/make_build_dir.py \
--lt_dir=$LT_PATH \
--lang_code=en \
--tag_dict_path=$LT_PATH/org/languagetool/resource/en/english.dict \
--tag_info_path=$LT_PATH/org/languagetool/resource/en/english.info \
--chunker_token_model=$HOME/Downloads/nlprule/en-token.bin \
--chunker_pos_model=$HOME/Downloads/nlprule/en-pos-maxent.bin \
--chunker_chunk_model=$HOME/Downloads/nlprule/en-chunker.bin \
--out_dir=data/en
分词器二进制文件可以从 http://opennlp.sourceforge.net/models-1.5/ 下载。
德语
python build/make_build_dir.py \
--lt_dir=$LT_PATH \
--lang_code=de \
--tag_dict_path=$HOME/Downloads/nlprule/german-pos-dict/src/main/resources/org/languagetool/resource/de/german.dict \
--tag_info_path=$HOME/Downloads/nlprule/german-pos-dict/src/main/resources/org/languagetool/resource/de/german.info \
--out_dir=data/de
POS 词典可以从 https://github.com/languagetool-org/german-pos-dict 下载。
西班牙语
python build/make_build_dir.py \
--lt_dir=$LT_PATH \
--lang_code=es \
--tag_dict_path=$HOME/Downloads/nlprule/spanish-pos-dict/org/languagetool/resource/es/es-ES.dict \
--tag_info_path=$HOME/Downloads/nlprule/spanish-pos-dict/org/languagetool/resource/es/es-ES.info \
--out_dir=data/es
关于西班牙语的说明:disambiguation.xml
目前需要手动后处理,移除 POS_N
中的无效 <marker>
标记,并更改一条规则(提交)。grammar.xml
也需要手动后处理,修复 EN_TORNO
的匹配引用。这些问题将在下一个 LanguageTool 版本中修复。
POS 词典可以从 https://mvnrepository.com/artifact/org.softcatala/spanish-pos-dict 下载(下载最新版本并解压缩 .jar
)。
依赖项
~13–27MB
~407K SLoC