rust-darts

所属分类:数据结构
开发工具:Rust
文件大小:0KB
下载次数:0
上传日期:2019-07-07 15:06:42
上 传 者sh-1993
说明:  双阵试锈
(Double Array Trie in Rust)

文件列表:
.editorconfig (167, 2019-07-07)
.travis.yml (995, 2019-07-07)
Cargo.lock (24515, 2019-07-07)
Cargo.toml (1091, 2019-07-07)
LICENSE (1063, 2019-07-07)
benches/ (0, 2019-07-07)
benches/darts_benchmark.rs (4361, 2019-07-07)
examples/ (0, 2019-07-07)
examples/build-dict/ (0, 2019-07-07)
examples/build-dict/Cargo.lock (223, 2019-07-07)
examples/build-dict/Cargo.toml (149, 2019-07-07)
examples/build-dict/dict.txt (5071843, 2019-07-07)
examples/build-dict/src/ (0, 2019-07-07)
examples/build-dict/src/main.rs (1600, 2019-07-07)
priv/ (0, 2019-07-07)
priv/dict.big.bincode (47553200, 2019-07-07)
priv/dict.txt.big (8583143, 2019-07-07)
priv/weicheng.txt (733929, 2019-07-07)
rustfmt.toml (16, 2019-07-07)
src/ (0, 2019-07-07)
src/lib.rs (30356, 2019-07-07)
src/searcher.rs (3213, 2019-07-07)

# rust-darts: Double-Array Trie Rust implementation. This library is in alpha state, PRs are welcomed. An optional Forward Maximum Matching Searcher is provided when enabled by features. [![Build Status](https://travis-ci.org/andelf/rust-darts.svg?branch=master)](https://travis-ci.org/andelf/rust-darts) [![codecov](https://codecov.io/gh/andelf/rust-darts/branch/master/graph/badge.svg)](https://codecov.io/gh/andelf/rust-darts) [![Crates.io](https://img.shields.io/crates/v/darts.svg)](https://crates.io/crates/darts) [![docs.rs](https://docs.rs/darts/badge.svg)](https://docs.rs/darts/) ## Installation Add it to your `Cargo.toml`: ```toml [dependencies] darts = "0.1" ``` then you are good to go. If you are using Rust 2015 you have to `extern crate darts` to your crate root as well. ## Example ```rust use std::fs::File; use darts::DoubleArrayTrie; fn main() { let mut f = File::open("./priv/dict.big.bincode").unwrap(); let da = DoubleArrayTrie::load(&mut f).unwrap(); let string = "中华人民共和国"; let prefixes = da.common_prefix_search(string).map(|matches| { matches .iter() .map(|(end_idx, v)| { &string[..end_idx] }) .collect(); }).unwrap_or(vec![]); assert_eq!(vec!["中", "中华", "中华人民", "中华人民共和国"], prefixes); } ``` ```rust use std::fs::File; use darts::DoubleArrayTrie; fn main() { let mut f = File::open("./priv/dict.big.bincode").unwrap(); let da = DoubleArrayTrie::load(&mut f).unwrap(); assert!(da.exact_match_search("东湖高新技术开发区").is_some()); } ``` ## Enabling Additional Features * `searcher` feature enables searcher for maximum forward matcher * `serialization` feature enables saving and loading serialized `DoubleArrayTrie` data ```toml [dependencies] darts = { version = "0.1", features = ["searcher", "serialization"] } ``` ## To Rebuild Dictionary ```bash # It would take minutes, be patient. time cargo test --all-features -- --nocapture --ignored test_dat_basic ``` ## To run benchmark tests ```bash cargo bench --all-features ``` ## License This work is released under the MIT license. A copy of the license is provided in the LICENSE file. ## Reference - [hankcs/HanLP](https://github.com/hankcs/HanLP) - [Aho Corasick自动机结合DoubleArrayTrie极速多模式匹配](http://www.hankcs.com/program/algorithm/aho-corasick-double-array-trie.html) - [DoubleArrayTrie和AhoCorasickDoubleArrayTrie的实用性对比](http://www.hankcs.com/program/algorithm/double-array-trie-vs-aho-corasick-double-array-trie.html) - [Darts: Double-Array Trie System](http://chasen.org/~taku/software/darts/) - [An Implementation of Double-Array Trie](https://linux.thai.net/~thep/datrie/datrie.html)

近期下载者

相关文件


收藏者