#nlp #grammar #spelling #error-correction #build-script #spelling-correction

nlprule-build

为快速、低资源的自然语言处理和错误纠正库构建工具

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科学

Download history 193/week @ 2024-03-14 220/week @ 2024-03-21 168/week @ 2024-03-28 251/week @ 2024-04-04 215/week @ 2024-04-11 297/week @ 2024-04-18 305/week @ 2024-04-25 244/week @ 2024-05-02 277/week @ 2024-05-09 299/week @ 2024-05-16 300/week @ 2024-05-23 273/week @ 2024-05-30 237/week @ 2024-06-06 324/week @ 2024-06-13 415/week @ 2024-06-20 227/week @ 2024-06-27

1,271 每月下载次数
2 crates 中使用

MIT/Apache

360KB
9K SLoC

nlprule-build

此crate提供了一个构建器,使其更容易使用nlprule的正确二进制文件。它还提供

  1. 用于从其发行源下载二进制文件的实用函数。
  2. 用于创建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